公有鏈是指全世界任何人都可讀取、傳送交易且交易能獲得有效確認的、也可以參與其中共識過程的區塊鏈。
基本介紹
- 中文名:公有鏈
- 外文名:Public blockchains
- 定義:全網公開
- 特點:全世界任何人都可讀取的
- 屬於:區塊鏈
- 別稱:非許可鏈
概念,公有區塊鏈系統,點對點電子現金系統:比特幣,智慧型契約和去中心化套用平台:以太坊,公有鏈系統存在的問題,
概念
根據區塊鏈網路中心化程度的不同,分化出3種不同套用場景下的區塊鏈:
(1)全網公開,無用戶授權機制的區塊鏈,稱為公有鏈;
(2)允許授權的節點加人網路,可根據許可權查看信息,往往被用於機構間的區塊鏈,稱為聯盟鏈或行業鏈;
(3)所有網路中的節點都掌握在一家機構手中,稱為私有鏈。
聯盟鏈和私有鏈也統稱為許可鏈,公有鏈稱為非許可鏈。
公有區塊鏈系統
公有鏈中,任何節點無須任何許可便可隨時加入或脫離網路。從最早的比特幣系統人手介紹公有鏈系統的發展現狀。
點對點電子現金系統:比特幣
與傳統分散式系統的C/S , B/S或三層架構不同,比特幣系統基於P2P網路,所有節點對等,且都運行同樣的節點程式。
節點程式總體上分為兩部分:一部分是前台程式,包括錢包或圖形化界面;另一部分是後台程式,包括挖礦、區塊鏈管理、腳本引擎及網路管理等。
區塊鏈管理:涉及初始區塊鏈下載、連線區塊、斷開區塊、校驗區塊和保存區塊,以及發現最長鏈條的頂區塊。
記憶體池管理:即交易池管理。節點將通過驗證的交易放在一個交易池中,並準備好將其放人下一步挖到的區塊中。
鄰接點管理:當一個新比特幣節點初始啟動時,它需要發現網路中的其他節點,並與至少一個節點連線。
共識管理:比特幣中的共識管理包括挖礦、區塊驗證和交易驗證規則。目前比特幣採用PoW共識機制,依賴機器進行哈希運算來獲取記賬權,同時每次達成共識需要全網共同參與運算,允許全網50%節點出錯。
密碼模組:比特幣採用RIMEMD和SHA-256算法及Base-58編碼生成比特幣地址。
簽名模組:比特幣採用橢圓曲線secp256k1及數字簽名算法ECDSA來實現數字簽名並生成公鑰。
腳本引擎:比特幣的腳本語言是一種基於堆疊的編程腳本,共有256個指令,是非圖靈完備的運算平台,沒有能力計算任意帶複雜功能的任務。
智慧型契約和去中心化套用平台:以太坊
比特幣的區塊鏈架構對虛擬貨幣以外的套用場景支持非常有局限性,隨著區塊鏈技術從比特幣中獨立出來,其作為可程式的分散式信用基礎設施的發展理念被逐漸確立,並過渡到區塊鏈2.0模式,以支持智慧型契約、去中心化套用為特徵。以太坊是區塊鏈2.0模式典型代表。
與比特幣相比,以太坊在整體設計上主要有以下不同:
(1)賬戶:比特幣沒有賬戶概念,用戶餘額是從各自在區塊鏈上所有未花費交易輸出(UnspentTransaction Output, UTXO ) 計算得來。以太坊則設計了兩種用戶,一種是外部賬戶,一種是契約賬戶。根據狀態機模型,以太坊可視為一個通用的管理對象狀態轉移的去中心化平台,賬戶就是有狀態的對象。外部用戶的狀態就是餘額,契約賬戶的狀態包括餘額、代碼執行情況、契約的存儲等。
(2)區塊鏈設計:以太坊的區塊鏈不僅保存交易清單,還保存最新狀態,單純的Merkle樹已無法滿足這些要求,因此以太坊採用Merkle Patricia樹實現對交易和狀態的校驗和查詢。
(3)共識機制:以太坊目前版本採用基於Ethash算法的PoW共識機制,相對於比特幣僅依靠CPU計算難度問題,以太坊的Ethash加入記憶體難度,並引入有向無環圖(Directed Acyclic Graph, DAG ),避免了礦池算力集中的問題。同時,以太坊採用GHOST (GreedyHeaviest Observed SubTree)協定同時給產生“叔區塊”的礦工和將“叔區塊”包含進主鏈的礦工獎勵,不僅增強了安全性,還進一步避免了算力集中問題。以太坊下一版本將採用PoS共識機制。
(4)圖靈完備的計算環境:通過以太坊虛擬機(EVM)提供圖靈完備的計算環境,用於支持除虛擬貨幣外更廣泛的套用場景。但圖靈完備同時意味著對無限循環、遞歸調用等語句的潛在支持,這也帶來了停機問題(不存在一個通用的圖靈機來判定任何輸入的圖靈機是否最終能停機),以太坊通過引入燃料(Gas)作為強制交易費,不提供燃料的交易不會被執行,也不會被包含進區塊,燃料不足的計算將被終止,這樣,通過經濟的方式來保障平台的安全。
公有鏈系統存在的問題
(1)激勵問題:為促使全節點提供資源,自發維護整個網路,公有鏈系統需設計激勵機制,以保證公有鏈系統持續健康運行。但比特幣的激勵機制存在一種“驗證者困境”,即沒有獲得記賬權的節點付出算力驗證交易而沒有任何回報。
(2)效率和安全問題:比特幣目前平均每10 min產生1個區塊,且其PoW機制很難縮短區塊時間,PoS相對而言可縮短區塊時間,但更易產生分叉,所以交易需要等更多確認才被認為安全,Gervais A等的試驗得出:在假設各有30%算力的前提下,以太坊需要37個區塊的確認才能達到比特幣6個區塊確認的安全水平。一般認為,比特幣中的區塊經過6個確認後才是足夠安全的,這大概需要1h,對於大多數企業套用需求來說根本無法滿足。
(3)公有鏈面臨的安全風險:包括來自外部實體的攻擊(拒絕服務攻擊DDoS等)、來自內部參與者的攻擊(冒名攻擊Sybil Attack、共謀攻擊Collusion Attack等)及組件的失效、算力攻擊等。
(4)隱私問題:目前公有鏈上傳輸和存儲的數據都是公開可見的,僅通過“偽匿名”的方式對交易雙方進行一定隱私保護。對於某些涉及大量商業機密和利益的業務場景來說,數據的暴露不符合業務規則和監管要求。
(5)最終確定性(Finality)問題:交易的最終確定性指特定的某筆交易是否會最終被包含進區塊鏈中。PoW等公有鏈共識算法無法提供最終確定性”,只能保證一定機率的近似,如在比特幣中,一筆交易在經過2h後可達到的最終確定性為99.9999%,這對現有工商業套用和法律環境來說可用性較差。