- 信用超導重塑社會經濟:區塊鏈創新理論與實踐
- 王春暉主編
- 9228字
- 2021-07-07 15:58:57
第一節 區塊鏈的五個框架技術
區塊鏈是信息技術綜合體系(將在第五章詳盡論述),主要組成是五種框架性信息技術(“五大技術”)以及其他相關支持技術。在區塊鏈1.0(比特幣)誕生之前,這“五大技術”已經獨立發展并且基本完成了。它們分別是:第一,密碼學的新進展,主要包括哈希算法和非對稱加密/解密技術;第二,分布式網絡架構和通信技術;第三,不可篡改可溯源的鏈式數據記錄模式;第四,作為交互合約的數字化形式驗證和觸發機制的智能合約;第五,對于分布式異步網絡必備且高效的同步和激勵機制合一的共識算法。其他相關支持技術則包括但不限于演化和融合中的數據庫技術、時間戳技術、默克爾樹技術、數字簽名技術等。
一、密碼學的新進展
本節內容均基于經典計算機架構來討論。關于量子計算和量子密碼學的挑戰將在本書第八章討論。
密碼學是區塊鏈技術體系的最基本構件。
區塊鏈技術最初的應用是比特幣,被寄希望于支付應用,這樣的系統對安全性的需求是不言而喻的。可以說,沒有20世紀70年代以來現代密碼學的新進展,區塊鏈技術是不可想象的。密碼學提供了不依靠中心化權威機構確保安全,而能確保信任的另一種方案,即基于密碼學技術來實現的點對點交易和交互的內置信任網絡。
現代密碼學在三方面為區塊鏈技術體系提供安全性:一是哈希算法,二是非對稱加密/解密算法,三是數字簽名。這里主要闡述前兩者,第三項可以簡單理解為數字加密的虛擬簽名驗證方法,在本節末簡述。
哈希算法貫穿了區塊鏈技術體系的方方面面。哈希算法的實質是通過一個方法將一段任意長度字符串作為輸入,算出一個固定長度的值,可以看作該字符串的摘要或者身份證號(ID)。哈希算法是單向的,無法通過結果倒推出原始數據。哈希算法適合一些身份驗證場合,也適合比對數據傳輸的準確性和完整性,因為只要原始數據變化即使1字節,其ID都將大相徑庭,ID不同即提示數據已經不準確或者不完整了。
哈希算法作為一個函數,滿足如下三個要件。
一是抗沖突性,即不同的數據輸入獲得相同的數據ID的可能性極小,小到在實際有價值的時間長度里不可能實現這種可能性。
二是信息隱藏性,就是從ID不可能倒推原信息,這可以使得即使非授權截獲原信息ID,也不可能還原獲得信息本身。
三是可隱匿性,就是預先知道某數據ID后,由于上述信息的隱藏性,原信息不可能通過某種算法計算被還原,只有通過隨機測試暴力破解獲得原信息。這個特性保證在足夠長的時間段內暴力測試破解不能成功。
哈希算法常用的有MD5、SHA1、SHA2、SHA256、SHA512、SHA3等,此處不贅述。
哈希算法在區塊鏈技術體系中,主要使用在保障數據鏈和數據塊的安全性、完整性、決定某些系統記賬權(如比特幣的解題“挖礦”決定記賬權模式)等,在本章第二節中說明。
公開密鑰算法,也稱為非對稱加密算法或公鑰/私鑰加密算法等。一般而言,加密、解密過程是對稱的。例如,諜戰片中經常出現的密碼本既用來加密也用來解密,一旦敵方獲得了密碼本,整套密碼系統就對敵透明了,必須即刻廢除。數學家圖靈率領的破解小組對德軍引以為豪的“enigma”密碼的破解,為盟軍最終擊敗納粹德國做出貢獻。這說明了在只有對稱加密技術的時代,一旦“鑰匙”丟失,后果非常嚴重。
直到公開密鑰算法出現,才解決了鑰匙丟失導致鎖不再可靠這個問題。我們不再擔心密鑰丟失或者所托非人,可以向特定對象分享秘密而其他對象無法得知。
公鑰和私鑰是作為現代密碼學分支的非對稱加密技術的術語。對于一段需要保護的信息,使用公鑰加密,使用私鑰解密。例如,受信方要從發信方處通過網絡獲得一段可能承載權益價值的信息。受信方先發送公鑰給發信方,發信方使用該公鑰對信息加密,然后傳給受信方。受信方使用自己的私鑰即可解密并獲得信息,而受信、發信兩方之外的第三方即使中途截獲加密信息也由于沒有私鑰無法解密。公鑰可以用來加密,但不能用于解密,發信者無法使用公鑰獲取受信方的其他加密信息。這就構成了非對稱的、可定向并單向傳送加密信息而避免無相關方截獲的加密與解密模式。
通常,非對稱加密與解密算法使用公鑰對信息加密較慢,使用私鑰對加密信息解密的過程很快。這種不對稱性保證了受信方能以極低成本獲得信息。
一些數學函數的天然特性適合以上不對稱性要求:由輸入計算輸出非常容易,倒過來由輸出倒推輸入則非常困難,以至于在經濟的時間長度內根本沒有可能。
RSA算法是最常見的非對稱加密算法,由三位發明者姓名的首字母命名。這種算法既可以用于加密,也可以用于數字簽名。橢圓曲線加密算法則是另一種常用算法。事實上,比特幣就是采用橢圓曲線加密算法作為公鑰編碼的基礎,其他很多區塊鏈系統也是如此。
密碼學這些近年來的成果是構成區塊鏈技術體系的基礎構件,如果沒有這些基礎構件,區塊鏈的大廈就將坍塌而不復存在。
以下舉數例說明密碼學在區塊鏈技術體系的幾方面的應用方式。
(一)權益賬戶地址的生成
生成一對密鑰,公鑰作為對外的權益賬戶地址可公開外發,而賬戶擁有者掌握的私鑰則用于作為任何使用該賬戶動作的驗證。這樣生成的賬戶具有天然的可驗證性。
(二)權益傳遞的安全保護
假如A正向B傳遞某項權益,這個過程須滿足兩個條件:一是系統應保證轉出的權益確實是來自A的賬戶,而非假冒偽裝的信息;二是保證只有B才能解碼這個承載權益的加密數據從而獲得這項權益。在這個權益轉移過程中,A使用自己的私鑰a對轉移權益行為的數據進行數字“簽名”,以證明確實是A在進行轉移權益動作;同時,A使用B發來的公鑰b加密權益轉移信息然后發送給B;B收到加密信息后,使用公鑰a驗證A的數字簽名,驗證通過即證明這個信息確實來自A;B使用自己的私鑰b對權益傳遞信息解密,確認權益轉移的完成。這個過程完美解決了分布式網絡上僅依賴系統內置信任認證即可完成點對點權益轉移驗證的需求。
(三)數據完整性證明
區塊鏈技術體系中鏈式數據結構確保了系統中交互數據的可追溯防篡改。本節第三部分將詳述。這里哈希算法起到了重要作用。
(四)權益的確權證明
在一般網絡系統中,想完成對權益的確權證明,方法是提交密碼進行驗證即可證明。但是這樣使得賬戶信息暴露了,賬戶中的權益也處于危險中。區塊鏈系統的方案則是,使用私鑰與公鑰算法,解碼一段與交易內容相關但并不直接包含賬戶權益內容信息的編碼,即可完成權益的確權。
二、點對點分布式網絡技術
應用離散數學的分支——圖論來討論互聯網系統涉及的網絡連接和構型問題是合適的。圖3-1和圖3-2使用了圖論的表達模式,通過節點來表示系統中的客戶端、中央服務器,通過節點之間的直線來表示各類系統中主體之間的交互連接關系。圖3-1表示一種星型、中心化的網絡結構;圖3-2表示一種點對點(所有點都可以與其他任意點直連交互)、全連接的網絡結構。從圖論和網絡科學理論而言,這兩種網絡結構各自是一種極端類型。[1]

圖3-1 星型、中心化的網絡結構

圖3-2 點對點、全連接的網絡結構
典型的傳統互聯網使用的是“中心化服務器+客戶端”的星型模式。在這個網絡連接里,我們可以看到任何一個客戶端都與中心服務器直接連接,利于直接申請中心服務器的服務或資源。從一個客戶端到另一個客戶端則必須經過中心服務器間接連接,即客戶端之間的交互必須以中心服務器為中介甚或必須經申請而獲許可。
區塊鏈1.0技術體系采用了P2P(Peer-to-Peer,P2P)網絡技術,使得其網絡連接模式為一個單純的節點全連接、全平權的P2P網絡,每個客戶端節點都可以一步連接到其他任意節點,而無須經過其他第三方節點中轉。
本章第二節和第五章將對這兩種網絡構型各自的優勢劣勢進行較為詳盡的分析。
基于分布式和P2P全連接形式的信息網絡先于區塊鏈技術已經出現。著名的eMule下載軟件即采用了P2P共享存儲下載技術。用戶只需要下載并安裝客戶端,就可以將自己計算機里的文件資源分享給其他用戶,同時可以搜索下載其他客戶分享的資源。整個系統并沒有傳統的中心存儲節點,也沒有傳統的FTP下載服務器這樣的中心資源服務節點,更沒有接入客戶數限制,所有用戶之間隨時可以直接上傳、下載。這是一個典型“人人為我、我為人人”的樸素而實用的互聯網具現。但是,這一共享模式的創舉因嚴重涉嫌版權侵犯,一直被抑制而難以廣泛應用,也不具備主流資本市場的價值。
三、可溯源、防篡改的鏈式數據存儲結構
僅有不對稱加密、全連接網絡架構不足以成為區塊鏈系統。區塊鏈最顯著的特征是具有一種可溯源、防篡改的鏈式數據存儲結構。
例如,在圖3-3中,用戶A想轉賬給B,首先A發布意圖轉賬的全網廣播,當前記賬者聽到廣播,將交易申請記錄到當前數據塊中,并再次向全網發出記賬廣播。此時在線活躍的眾多節點對于這個數據塊中的交易申請進行“審批”(節點自動動作,用戶A的公鑰與私鑰進行加密和解密驗證)、“投票”通過。半數以上“投票”通過的交易作為合法交易被記入賬本。該數據塊打包一系列交易數據后完成封裝、拼接在歷史數據鏈的尾部成為了新的歷史數據鏈。

圖3-3 圖示鏈式數據結構(以比特幣為例)
區塊鏈技術體系中,鏈式數據存儲結構是至關重要的一個部分。這里應用了密碼學技術中的哈希函數(Hash Function,散列函數,一般SHA256用得比較多)。散列函數把消息或數據壓縮成摘要或指紋,使得數據量變小,將數據的格式固定下來。SHA256會產生一個256位的二進制哈希值。
數據鏈中數據塊的內容如圖3-4所示。圖3-4的上部表示數據塊之間的鏈接,下部詳細顯示了每個數據塊內部的構成。當前數據塊的交易內容通過哈希函數反復對兩兩交易信息進行摘要(梅克爾樹),最后得到全體交易信息的總摘要,記錄在數據塊頭中。數據塊頭內容還包括上一個數據塊頭內容的哈希函數摘要、數據版本號、時間值等信息。全部信息再次經過哈希函數摘要演算后,成為下一個數據塊頭的一部分。

圖3-4 區塊鏈技術體系中關鍵的鏈式數據存儲結構
假定有黑客修改了某用戶節點存儲的數據鏈的區塊2(見圖3-4上)中的交易內容圖謀竊取利益,那么該用戶節點的區塊2主體的內容將被隨之更改。區塊2頭的內容必然再次經過哈希函數計算,與之前已經存入區塊3頭的區塊2頭的哈希值對比后發現差異,這樣立刻證明這個用戶節點本地存儲的數據鏈已經被破壞而不安全了?,F在要做的是,用占多數的、“正確”的數據塊覆蓋這個遭破壞了的節點本地存儲的數據塊,從而糾正錯誤,保證數據的安全和一致。
上述設計的數據鏈結構有著極強的安全性、可追溯性和數據防篡改能力。風險只是在于,如果黑客或者篡改者成功掌握了超過系統半數算力的節點,那么他們可以肆意決定區塊鏈中的哪些區塊會被全網采信。如果系統是規模大到一定程度(如比特幣系統是600萬以上),這樣篡改者需要耗費巨大的成本才能取得多數共識,那么可以認定事實上就已經是不可能實現篡改了。
四、智能合約
1994年,計算機科學家和密碼學家尼克·薩博首次提出了“智能合約”概念,早于區塊鏈概念的誕生。尼克·薩博描述了什么是“以數字形式指定的一系列承諾,包括各方履行這些承諾的協議”。2008年出現的比特幣并未將智能合約的形式納入系統,直到2013年,作為以太坊智能合約系統的一部分,智能合約首次出現在區塊鏈系統中。
智能合約作為一種特殊協議,是以太坊的靈魂,承載著節點之間傳遞價值邏輯的使命。區塊鏈技術體系成為社會和經濟生活中擁有巨大潛力的信息技術系統架構,應從以太坊成功納入智能合約算起。
智能合約是一個沙盒、一個虛擬平臺、一種編程語言、一種邏輯描述體系,可以描述基于條件判斷的復雜場景下的行為序列。以太坊智能合約的出現使得區塊鏈技術體系商用成為可能,使得區塊鏈技術進入了2.0時代。
以太坊設計了一套圖靈完備的腳本語言用以編寫合約,編譯并運行在系統的虛擬機上。在以太坊價值網絡中,智能合約是自動執行的腳本,通過可編程并部署在區塊鏈網絡節點上的智能合約,使得節點間的交互行為得到如商業合同一樣的規定。智能合約成為了區塊鏈技術體系的潛力和實用性的根本保證。
智能合約是區塊鏈系統具有內置可信度的重要原因之一,允許在不需要第三方參與的情況下,執行可追溯、不可逆轉和安全的交易。
智能合約通過編碼記錄交易的所有要件,如同紙質合同,但唯獨不需要罰則。因為在區塊鏈系統里,代碼執行是根據預設條件觸發的,觸發后代碼是自動、必然且不折不扣地執行。通過這些特性,區塊鏈系統保證了人際社會難以保證的“有約必踐,有責必償”,從而打造一種現實人際社會從未存在過的、信用不會磨損的“信用超導系統”的理想從不可能到有現實性。這在后續章節中詳盡論述。
智能合約開創了以計算機執行代碼表達社會和經濟約定或合同的歷史,為可編程社會和經濟活動開創了道路。
五、共識算法
共識算法是分布式網絡技術的靈魂。
分布式系統要實現一定的功能,需要以一致性或同步來保障。共識算法是解決一切非中心化、分布式網絡同步問題的必需技術手段。而同步或共識本質上與選舉或表決并無二致。
所謂共識,簡單理解就是大家都達成一致的意思。在現實生活中,有很多需要達成共識的場景,如開會討論形成決議、雙方或多方簽訂一份合作協議等。而在區塊鏈系統中,每個節點必須要做的事情就是讓自己的數據記錄與其他節點的保持一致。在擁有一個絕對權威個體的人群中,數據記錄同步是非常容易的,一聲令下即可;而在一個權威平均的群體,選舉或表決往往更有可能。在分布式系統中,共識算法類似上述選舉或表決方法。
在分布式系統中,多個用戶節點通過異步通信方式組成網絡集群。在這樣的異步系統中,需要用戶節點之間以某種達成共識的方式保證它們的數據狀態達成一致。然而,在這樣的異步系統中,某些用戶節點可能出現故障,或者性能下降,或者發生網絡擁塞,這些都可能導致錯誤信息在系統內傳播以及系統內各用戶節點的數據記錄不一致,造成了用戶節點之間數據記錄同步的困難。因此需要在上述這樣不可靠的系統中確定一些規則,以確保各節點達成安全可靠的狀態一致。
簡單地說,共識算法是選出系統交互數據的記錄者,對多個記錄者的不同記錄版本進行篩選,同時對系統內各種交互的合法性進行驗證投票的規則。共識算法有三個功能:一是選出記錄者,可能同一時刻不止一個;二是對不同記錄者產生的不同版本數據記錄進行篩選并決定最終版本用于系統同步;三是選出一個群體,對系統交互進行合法性驗證和投票,由簡單多數或其他比例規則決定。第二個功能在比特幣中就是“最長鏈原則”,即當一個節點收到兩個記錄有不同的最新區塊,節點選擇最長的數據鏈作為最新區塊,而類似的情況在以太坊中是GHOST協議。
共識算法的由來可以追溯到“拜占庭將軍”悖論。該悖論實際上是提出了一個互不信任的個體之間如何不借助外部或中心權威認證而通過具體算法技術能同步協調行動。共識算法解決了這類問題。
共識算法保證了分布式系統的一致性,節點之間基于算法實現了共識,從而實現了信任。因此,區塊鏈是關于信任的技術,算法本身創造了信任,信任內置于系統中,可以不需外部信用(外部權威或者信用中介)的參與。
區塊鏈系統中存在著多種這樣的共識算法方案,如PBFT(Practical Byzantine Fault Tolerance,實用拜占庭容錯算法)、PoW、PoS、DPoS等。
(一)PoW(Proof of Work,工作量證明)
比特幣作為區塊鏈1.0技術體系的應用,采用了PoW的共識算法。
比特幣通過競爭記賬的方式解決去中心化的記賬系統的一致性問題,即以每個節點以計算能力(CPU、GPU或者特定芯片的計算力)解一道算法題來決定記賬權的機制,稱為“工作量證明”(Proof of Work,PoW)的機制。
在比特幣系統中,大約每10分鐘進行一輪算力競賽系統驗證節點的工作量證明,競賽的勝利者就獲得一次記賬的權力,并向其他節點同步新增賬本信息。
PoW的主要特征是計算的不對稱性。工作端的工作難度較大,而驗證方驗證PoW較容易,這樣利于系統設置的算力競爭,同時保持其他節點驗證的快速、便捷。
PoW機制的短板首先在于巨大的資源浪費。其“工作量”除了參與記賬權競賽之外沒有任何意義,但耗費大量的CPU、GPU或特定芯片的計算時間(現在有算法采取替代的內存占用或者硬盤存儲占用等),最終體現為耗時和耗電量。一個相對全球經濟規模微不足道的幾百萬節點的小系統,2018年消耗掉了全球耗電量的0.24%。
PoW機制的短板其次在于計算力壟斷帶來的共識決策霸權。起初計算力分布較為均衡,隨著大規模算力專業“礦場”機構和使用專門ASIC(Application Specific Integrated Circuit,專用集成電路)低能耗低成本的計算芯片技術出現,算力壟斷也就是共識霸權形成了。這使得比特幣共識形成已經異變成了徹頭徹尾的富人政治、寡頭政治類型。
(二)PoS(Proof of Stake,權益證明)
PoS類似財產存在銀行,由持幣數和持有的時間的乘積構成幣齡。有的根據幣齡占系統總量的百分比來決定用戶可以獲得下一個區塊記賬權的權重,有的以幣齡為權重隨機選擇(如點點幣),有的則是直接選擇幣齡最大節點(如以太坊2.0)。
簡單說,P o S就是一個根據持有數字幣的量和時間,給持有者發利息的一個制度。比如幣齡的概念是,每個幣每天產生1幣齡,如持有100個幣,共持有了30天,那么幣齡就是3000。如果獲得了記錄權,那么幣齡會被清空為0。每被清空365幣齡,持有者將從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那么利息=3000×5%/365=0.41個幣。然后,重新開始累積幣齡。
PoS算法減少了PoW的算力和物質資源的巨大浪費,但其機制實際上類似公司股東會決策機制,類似一種富人政治。
(三)DPoS(Delegate Proof of Stake,委托權益證明)
PoS機制雖然考慮到了PoW的不足,但依據權益結余來選擇,會導致首富賬戶的權力更大,有可能支配記賬權。DPoS正是基于解決PoW機制和PoS機制的不足而提出的。
DPoS機制是期望通過引入一個技術民主層來減少中心化的負面影響。DPoS的原理是讓每個持有區塊鏈系統虛擬權益的人進行投票,由此產生如101位代表,可以將其理解為101個超級節點,而這101個超級節點彼此的權利是完全相等的。從某種角度來看,DPoS有點像是代議政治制度(議會制度或人民代表大會制度)或者公司的董事會。如果代表不能履行他們的職責(當輪到他們時,沒能生成區塊),他們會被除名,網絡會選出新的超級節點來取代他們。
一定程度上,DPoS避免了如PoW、PoS的富人政治和共識壟斷。但實際上,委托人很大程度仍然由系統內一些最有權勢(持系統內虛擬財富多)的超級節點壟斷。
上述諸多共識算法,從“大民主”的PoW到“股份制”的PoS、“董事會制”的DPoS逐漸集中,走向了一開始宣揚的極端烏托邦思維的去中心化的反面。原因在于,任何群體的共識(包括選舉、表決等),包括區塊鏈系統內的共識算法,都必須在效率與民主之間妥協。而這是千百年來政治學、社會學和政治經濟學的一個老話題。
區塊鏈發展到現在,已經出現了更多的共識算法。由于單個共識算法總有不足,因而當前區塊鏈系統更多采取混合式共識算法。
六、其他技術集成
(一)數據庫技術進展、演化和融合
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,產生于20世紀60年代。隨著信息技術和市場的發展,特別是20世紀90年代以后,數據庫不再僅僅是存儲和組織數據,而轉變成用戶所需要的各種數據管理的方式。
數據庫有很多種類型,從最簡單的存儲檢索(各種數據表格)到能夠進行海量數據存儲檢索的大型數據庫系統都在各方面得到了廣泛的應用。
數據庫是存放數據的倉庫,存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是數據庫并不是隨意地將數據進行存放,而是遵循一定的規則,否則查詢的效率會很低。當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。即這個互聯網世界就是數據世界。數據的來源有很多,如出行記錄、消費記錄、瀏覽的網頁、發送的消息等。文本、圖像、聲音都是數據。數據庫是一個按數據結構來存儲和管理數據的計算機軟件系統。數據庫的概念實際包括兩層意思:其一,數據庫是一個實體,是能夠合理保管數據的倉庫,用戶在該倉庫中存放要管理的事務數據,“數據”和“庫”兩個概念結合成為數據庫;其二,數據庫是數據管理的新方法和技術,能更合適地組織數據、更方便地維護數據、更嚴密地控制數據、更有效地利用數據。
數據庫先后經歷了層次數據庫、網狀數據庫和關系數據庫等階段。數據庫技術在各方面快速發展,特別是關系型數據庫已經成為目前數據庫產品中最重要的一員。
20世紀80年代以來,幾乎所有數據庫廠商的數據庫產品都支持關系型數據庫,因為關系型數據庫可以比較好地解決管理和存儲關系型數據的問題。隨著云計算的發展和大數據時代的到來,關系型數據庫越來越無法滿足日益增多的各類需要,越來越多的半關系型和非關系型數據需要用數據庫進行存儲管理。
與此同時,越來越多的非關系型數據庫開始出現,其中包括分布式數據庫技術。這類數據庫與傳統的關系型數據庫在設計和數據結構有了很大的不同,更帶來了數據庫數據的高并發讀寫、存儲大數據優勢以及分布式存儲和檢索帶來的安全優勢。這類數據庫一般被稱為NoSQL(Not only SQL)數據庫。傳統的關系型數據庫在一些傳統領域依然保持了強大的生命力。
分布式數據庫技術和因此延伸的技術演化直接催生了上述的分布式網絡技術、分布式數據賬本的萌發,并間接催生了的鏈式數據存儲結構技術。
(二)時間戳技術
時間戳技術在區塊鏈技術體系中具有重大的意義,是可溯源且防篡改鏈式數據存儲結構的關鍵組成技術之一。
時間戳是指1970年01月01日格林尼治時間00:00:00(北京時間1970年01月01日08:00:00)到描述當時時刻的總秒數。很多編程語言起源于UNIX系統,而UNIX系統確定1970年1月1日0點是時間紀元,所以區塊鏈技術系統沿用此設定。
在區塊鏈系統中,每個新區塊生成時都會被打上時間戳,最終依照區塊生成時間的先后順序相連成區塊鏈,每個獨立節點通過P2P網絡建立聯系,這樣就為信息數據的記錄形成了一個去中心化的分布式時間戳服務系統。
例如,比特幣網絡中,大約每10分鐘產生一個新的區塊,并蓋上時間戳,廣播發送給全網各節點,這樣每個節點都有一份這個區塊的所有信息,包括時間戳,形成了一個分布式時間戳。時間戳的這種設計使得更改一條記錄的困難程度按時間的指數倍增加,越老的記錄越難更改,區塊鏈運行時間越久,篡改難度越高。
(三)默克爾樹(Merkle Tree)技術
默克爾樹技術是可溯源且防篡改鏈式數據存儲結構的一種關鍵技術。
默克爾樹是一種哈希二叉樹。在計算機科學中,二叉樹是每個節點最多有兩個子樹的樹結構,每個節點代表一條結構化數據。二叉樹常被用于實現數據快速查詢。
默克爾樹由一個根節點、一組中間節點和一組葉節點組成。葉節點包含存儲數據或其哈希值,中間節點是它的兩個孩子節點內容的哈希值,根節點也是由它的兩個子節點內容的哈希值組成的。所以,默克爾樹也被稱為哈希樹。
默克爾樹的結構參見圖3-4,其主要特點是:底層(葉子節點)數據的任何變動都會逐級向上傳遞到其父節點,一直到默克爾樹的根節點使得根節點的哈希值發生變化。這使得任何一筆交易的記錄都無法實現無痕跡改動。
(四)數字簽名
數字簽名,又稱為公鑰數字簽名、電子簽章,是一種類似寫在紙上的普通的物理簽名,使用了公鑰加密領域的技術實現,用于鑒別數字信息的方法。數字簽名生成了只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串也是對信息的發送者發送信息真實性的一個有效證明,主要用于數據更改的簽名者身份識別和抗抵賴。數字簽名本身是非對稱密鑰加密技術與數字摘要技術的一種應用,又是公開密鑰算法實現信息定向和單向傳輸的關鍵技術保障之一。