jollen / blog

Jollen's Blog
http://www.jollen.org/blog
66 stars 4 forks source link

Blockchain Developer - 初探 Distributed Ledger Technology (DLT) #34

Closed jollen closed 6 years ago

jollen commented 7 years ago

DLT 有一個更耳熟能詳的名字,叫做區塊鏈。簡單來說,根據 Wikipedia 上的定義 1,區塊鏈(Blockchain)就是一種 Distributed Ledger 的資料結構(Data Structure):

a Blockchain is only one type of data structure considered to be a distributed ledger.

也就是說,DLT 可以延用 Blockchain 資料結構設計,也可以根據應用的不同,設計全新的資料結構;無論是採用 Blockchain 資料結構,或是設計新的資料結構,目標都是提供一個分散式資料儲存系統(distributed data storage)。一個 DLT Platform 除了要具備一個安全可信任的 distributed data storage,還具備以下 2 個元素:

在 distributed data storage 網路上的電腦裝置,稱之為節點。由於 distributed data storage 需要考慮備援與錯誤修正的問題,因此會經一筆資料同步備援在多個節點上,這樣的技術就稱為 replication。當某一個節點上的該筆資料毀損時,扮演該筆資料備援角色的節點,就能協助該節點,回覆毀損的資料,這樣的技術就稱為 redundancy。

技術上,DLT 就是一個為 distributed data storage 提供 replication/redundancy 功能的通訊協定(Protocol)。這樣的 replication/redundancy 機制,就稱為 fault tolerance(容錯機制)。

Transactions

DLT 與傳統資料庫系統,除了上述的差別外,另一個重要的區別是:交易。DLT 儲存的是交易(Transaction);而傳統資料庫儲存,則是儲存「資料」(Data)。

交易與資料的一個區別是,交易需要被「驗證」(validation);而資料卻是可以直接地,儲存進資料庫裡即可。交易會包含所要儲存的資料,因此,可以說交易是資料的「封裝」。

在軟體設計的領域裡,封裝有「打包」的意思;也就是說,這像是在寄掛號信,我先將文件(資料)放進信封打包好,再將郵件「提交」到郵局,最後由收件人簽收無誤後取出文件,再將文件歸檔(儲存)。

在一個 DLT Platofmr 裡,交易的驗證過程,需要決定該筆交易的接受者與簽收方式,這就開始涉及 Broadcast 與 Consensus 技術了。最終,這筆交易會被節點儲存,而儲存交易的地方就稱為 Block(區塊),而這些區塊將不只一個,而是一個 chain of blocks 的結構,這些串接在一起的 blocks 就稱為 blockchain。

Byzantine Fault Tolerance(拜占庭容錯算法)

DLT 是一個比 blockchains 更整體的研究主題,例如知名的 Hyperledger 就是一個 DLT 平台。Fault tolerance 與 transactions 則是 DLT 的核心骨幹。像是 PBFT(Practical Byzantine Fault Tolerance )就是一個知名的 fault tolerance 演算法,並且被 Hyperledger Fabric v0.6 所採用。

SBFP(Simplified Byzantine Fault Tolerance)也是一種 fault toerance,由 Hyperledger Fabric v.10 實作;SBFP 演算法延續 PBFP,目的是能支援更大規模(large scale)的 p2p 網路。

jollen commented 6 years ago

Published at http://www.jollen.org/blog/2017/09/blockchain-developer-distributed-ledger.html