- 超級賬本HyperLedger Fabric區塊鏈開發實戰
- 林維鋒 莫毓昌
- 1881字
- 2020-08-31 10:11:13
1.2 區塊鏈核心技術
1.2.1 區塊鏈技術定義
區塊鏈就是一種特殊的分布式數據庫,使用現有的各種成熟的技術,把各種技術集成在一起,實現多方共識、去中心化、分布式和不可篡改等技術特點。
區塊鏈技術是結合各種技術建立出的一種全新的技術架構。保證分布式數據庫區塊鏈中數據的一致性,以達到去中心化和不可篡改的目的。區塊鏈核心技術有點對點傳輸、加密算法、共識機制等。
1.點對點傳輸
點對點傳輸指使用P2P網絡協議實現端對端的數據傳輸;在區塊鏈中進行的交換(如轉賬和交易),不需要經過第三方擔保機構的確認和授權。
2.加密算法
加密算法分為對稱加密算法和非對稱加密算法,在區塊鏈中主要使用非對稱加密算法。非對稱加密是指為滿足安全性需求和所有權驗證需求而集成到區塊鏈中的加密技術。非對稱加密在加密和解密過程中使用兩個非對稱的密鑰,分別為公鑰和私鑰。非對稱密鑰有以下兩個特點:
(1)使用一個密鑰(公鑰或私鑰)加密信息后,只能用另一個對應的密鑰才能解開;
(2)公鑰向所有人公開,私鑰保密,任何人無法通過公鑰推算出相應的私鑰。
3.共識機制
共識機制是指在一個時間段內對事物的前后順序達成一致的算法,它是區塊鏈的基礎,也是區塊鏈的靈魂。在區塊鏈上,每個節點都會有一份記錄在鏈上的所有的交易賬本,鏈上每產生一筆新的交易,每個節點收到信息的時間都不一樣,為了防止信息被破壞地寫入區塊中,需要所有節點對接收到的信息進行確認。
共識機制目前有工作量證明機制(Proof of Work,POW)、股權證明機制(Proof of Stake,POS)、授權股權證明機制(Delegated Proof of Stake,DPOS)和實用拜占庭容錯算法(Practical Byzantine Fault Tolerance,PBFT)。
(1)POW
POW是比特幣使用的共識機制,是通過一定的工作量,獲取相應的獎勵,算力越高,那么所獲取的時間就會越短,并且獲取的“代幣”獎勵就越大。這種計算過程被形象地稱為“挖礦”。
(2)POS
POS是通過“持幣”而產生利息,并且對驗證人和節點進行獎勵。獲得的獎勵不是通過算力挖礦而是通過“持幣”而產生的利息。
(3)DPOS
DPOS與POS基本類似,只是DPOS選擇了一些節點來代表以后的交易驗證和記賬。
(4)PBFT
PBFT以計算為基礎,沒有“代幣”獎勵,由鏈上所有節點參與投票,少于(N-1)/3個節點反對時就獲得公示信息的權利。
1.2.2 區塊鏈技術原理
區塊鏈從字面上理解:數據記錄在區塊中,通過一定的算法把區塊連成一個鏈,這個鏈就叫區塊鏈。
區塊鏈技術相關的基本概念如下。
(1)交易(Transaction):一次操作,導致賬本狀態的一次改變,如添加一條記錄。
(2)區塊(Block):記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共識。
(3)鏈(Chain):由一個個區塊按照發生順序串聯而成,是整個狀態變化的日志記錄。
每一次交易,都需要對賬本狀態進行一次改變,生成一個區塊,需要所有人確認,達成全員共識時,該區塊才生效。
區塊鏈通過哈希(Hash)算法,生成一串字符串,把字符串保存在區塊的頭部中,一個區塊通過指向上一個區塊的Hash值從而加入區塊鏈中。Hash算法是一種加密算法,指對原始信息進行特定的轉換運算,換算成對應的加密值(即Hash值)。Hash算法是一種單向的加密方式,加密后的密文不可逆推,只有加密過程,沒有解密過程。區塊鏈中使用SHA-256算法對區塊進行加密。
區塊是區塊鏈中的主要數據存儲結構,一個區塊由區塊頭和區塊體兩部分組成,區塊頭保存著區塊之間的連接信息,區塊體保存著業務數據信息,區塊結構如圖1-1所示。

圖1-1 區塊
區塊鏈結構如圖1-2所示,一個區塊頭中的previous hash字段保存著上一個區塊的Hash值,通過某個區塊就可以找到整個區塊鏈的第一個區塊。

圖1-2 區塊鏈
篡改一個區塊時,需要修改區塊鏈中后面的所有區塊,計算一個區塊的Hash值是極其困難的,再加上還需要修改后面的所有區塊的Hash值,則難上加難,所以篡改區塊鏈中的業務信息就成為幾乎不可能做到的事,這保證了區塊鏈中數據的可靠性。
1.2.3 區塊鏈工作過程
區塊鏈的工作過程包括交易產生、交易廣播、節點計算、獲取記賬權、記賬權廣播、驗證區塊和完成記賬7步,如圖1-3所示。

圖1-3 工作過程
1.交易產生
用戶向區塊鏈發布一筆交易信息,將產生交易。
2.交易廣播
當一筆新交易產生時,區塊鏈網絡會將其廣播出去,網絡中的其他節點都會收到該交易信息。
3.節點計算
收到交易信息的節點會把新交易放到區塊中,通過共識算法決定誰有記賬權。
4.獲取記賬權
根據不同的共識算法,其中一個節點將獲取記賬權,如使用POW計算,最快的節點將獲取記賬權。
5.記賬權廣播
獲取記賬權的節點把信息廣播給網絡中的所有節點。
6.驗證區塊
收到廣播信息的節點對區塊所包含的交易信息進行驗證,確認有效后,接收該區塊,并在區塊鏈尾部接上新的區塊。
7.完成記賬
所有節點全部接收該區塊后,完成一個新區塊上鏈,網絡中的節點等待下一個交易的產生。