區塊鏈本身是由多種技術集合而成,涉及了多方面的內容,而在其組合應用的過程中,同時也產生了很多新的概念。對於這些概念的整理和理解,有助於更加深刻的理解區塊鏈的本質,也可以指導我們如何去偽存真,更好的發揮區塊鏈的價值。
***這份材料需要並且會一直更新,將自己所了解的問題以及已有的解決方案進行整理。***
底層技術
根據所承擔功能的不同,區塊鏈可以划分為數據層、網絡層、安全層、共識層、應用層,有時還會加上激勵層。每一層都會對應不同的技術,包括分布式存儲、網絡通信、密碼學、網絡安全、共識機制、智能合約、經濟模型等。
分布式存儲
分布式存儲指的是區塊鏈底層存儲數據的工作,包括區塊的存儲、k-v數據庫等。區塊一般會以文件的形式存在文件系統上,數據通過k-v數據庫來進行管理,比特幣、以太坊等使用leveldb,fabric可選leveldb以及couchdb,相對而言,couchdb能夠支持更為復雜的富查詢,使用更加方便。
網絡通信
網絡通信用來完成網絡中交易轉發、區塊確認以及各節點之間的數據同步,通常采用p2p的方式,各個節點是對等的。fabric中使用Gossip。
密碼學
密碼學是區塊鏈用到的重要技術之一。最開始,比特幣更多是對橢圓曲線公鑰密碼算法、Ripemd和SHA2數據摘要算法的應用。生成用戶公私鑰、地址用來標示用戶在鏈上的唯一性,保證用戶資產只能有用戶使用;計算交易hash、區塊hash,保證每筆交易、每個區塊的唯一性...隨着區塊鏈的發展,鏈上隱私保護成為關注的熱點,對稱加密、密鑰協商、新型密碼學技術如環簽名、同態加密、零知識證明等開始被廣泛應用在隱私保護方案中,保護用戶隱私數據。
底層平台 | 非對稱算法 | 哈希算法 |
比特幣 | secp256k1 | Ripemd、SHA2-256 |
以太坊 | secp256k1 | Keccak256、SHA3 |
Fabric | ECDSAP256 | SHA256、SHA384 |
CITA | secp256k1 | Keccak256、SHA3 |
網絡安全
網絡安全是一個更大層面的內容。包括隱私保護、智能合約安全、甚至協議安全、系統安全等。現階段,區塊鏈網絡安全方面存在諸多問題,隱私保護方案需要進一步完善,能夠支持在被節點驗證的情況下保護使用者隱私,如引入零知識證明、同態加密、私有賬本等各種新興密碼學技術或者解決方案;智能合約的安全性也存在諸多問題,包括基本的代碼漏洞等,現在已有諸多創業公司(PeckSheild、鏈安等)致力於提高智能合約安全性,推出智能合約安全監測工具;協議安全是指區塊鏈協議本身是否安全,有無理論上的漏洞或者安全性問題;系統安全指的是一個區塊鏈系統在建設過程中可能存在的問題,如代碼實現、系統運行過程中的問題。
共識機制
共識機制是區塊鏈中最核心的內容,是保證區塊鏈去中心、去信任特性的關鍵。常見的共識機制有工作量證明(POW)、權益證明(POS)、拜占庭容錯(PBFT)、簡化版拜占庭容錯(RAFT)等,容錯能力依次降低。
POW可以容納一半以下算力時任何錯誤的發生,但是對資源消耗高,共識時間慢,常用於比特幣、以太坊等初期公鏈項目中;
POS可以容納一半以下權益時任何錯誤的發生,減少資源消耗,效率提高,但是權益越高權力越大,最終會向集中式發展,EOS項目使用,以太坊也正在逐漸轉向POS;
PBFT是聯盟鏈普遍使用的共識算法,可以容納約三分之一的錯誤(3f+1個節點時,容納f個節點出錯),效率相對更高,但是節點數量受限,規模不能過大;
RAFT不能容納拜占庭錯誤,基於聯盟鏈參與方之間已有一定的信任基礎,常用於聯盟鏈中。
智能合約
本質上看,智能合約就是在鏈上執行的業務邏輯。智能合約的概念在95時就已經由尼克薩博(Nick Szabo)提出,但是一直沒有合適的執行環境。直到區塊鏈出現,為智能合約提供了一個理想的運行環境。
由於不同平台實現的語言不一樣,支持的虛擬機不同,因此智能合約的實現語言也不一致。
以太坊使用solidity,fabric可以使用go、java等。
經濟模型
經濟模塊是區塊鏈中的重要部分,是保證整個系統成功、穩定、安全運行的重要基礎,尤其是公鏈以及分布式應用。良好的經濟模塊可以促使各方都按照系統所設定的正常規則執行,提高作惡的難度,降低作惡的發生,同時獎勵誠實的工作者,讓系統朝着好的一方面發展。
分類方式
通常來說,區塊鏈有兩種主要分類方式。一是根據發展階段分為區塊鏈1.0、區塊鏈2.0、區塊鏈3.0;二是根據對參與方訪問權限和范圍的不同分為公有鏈、聯盟鏈和私有鏈。
發展階段
區塊鏈1.0
區塊鏈2.0
區塊鏈3.0
主要形態
公有鏈
聯盟鏈
私有鏈