區塊鏈基礎知識堆疊
- HASH(哈希演算法)、簽名、證書
- 基礎應用密碼學
- 分布式網路結構
- 智能合約
- ABI介面原理
- 區塊資料結構
- RPC介面
- 資料存盤模型
- 共識機制原理
- 結語
想要了解區塊鏈技術,會有種老虎吃刺猬–無從下嘴的感覺,畢竟它是一個技術的集大成者,所以這里拋磚引玉參考了多方資料和自己的學習經歷,由淺入深寫了些技術堆疊的title供有興趣的人按圖索驥的去學習,
HASH(哈希演算法)、簽名、證書
區塊鏈是一門解決信任問題的技術,由此可見,簽名證書等現行互聯網上保證安全性的方法是最基礎的需要去了解的方面了,SHA3/SHA256/RIPEMD160等摘要演算法,基于公私鑰的數字簽名和驗證方法,數字證書的概念和格式,比如X.509證書,以及保存證書/公私鑰的檔案格式,如PEM檔案、keystore檔案,這些東西之間的區別,應用場景,學會使用即可,有興趣的可以去仔細查閱不同的演算法是怎么實作加密細節的,
基礎應用密碼學
上一層是偏應用的話,這一層偏理論些,基礎的應用密碼學離不開對稱和非對稱加密的常見演算法,如AES對稱加密,RSA、ECDSA橢圓曲線等非對稱加密演算法,了解以及這些演算法在簽名驗簽、資料加密、通信協商和保護方面的作用,如何實作的,數學模型是什么,結合一些例題去親自完成一次ECDSA的私鑰公鑰生成程序和加解密程序,我覺得是對理解非對稱加密本質很有裨益的,國密的話參考SM2~SM9一系列演算法的概念和使用,
分布式網路結構
區塊鏈出生自帶分布式網路結構,尤其是公鏈,節點和節點通過網路的P2P埠互連,客戶端、SDK通過RPC/Channel埠互連,首先要保證網路之間是互通的,監聽的地址和埠是對的,埠是開放的,防火墻和網路策略是正確的,用于安全連接的證書已經到位,才能保證區塊鏈的通信安全,
所以基本的網路知識、網路工具,了解區塊鏈特有的節點型別(共識節點、觀察節點、輕節點等)、互連方式(點對點雙向連接、JSON RPC的HTTP短連接、Channel長連接等)是有必要的,
智能合約
智能合約是因區塊鏈而誕生的,流行的語言是solidity,一開始是用在ETH以太坊上的,Solidity語言更新活躍、檔案完備,具有良好的一致性和事務性,功能足夠實作中型的商業應用,
它在實時除錯、第三庫支持、運行速度等方面還比不上成熟的語言,如果想要用C++等語言撰寫智能合約,那就要對區塊鏈上的計算范式進行深入了解,避免寫出無法共識的智能合約來,一般是建議有深入的了解后再采用Solidity之外的其他語言撰寫合約,
ABI介面原理
在采用EVM作為虛擬機的區塊鏈上,EVM執行的是Solidity語言的合約,合約編譯會生成后綴名為ABI的檔案,其實里面就是該合約介面定義的JSON文本,可以用文本查看器查閱,了解你寫的合約如何翻譯成ABI里的介面,介面回傳型別,引數串列,引數型別等,只要有合約的ABI檔案,就可以呼叫區塊鏈SDK的介面,決議這個合約相關的交易、回傳值、回執等,
區塊資料結構
區塊(Block)有區塊頭和區塊體,區塊體有交易串列,交易串列里的每個交易(Transaction或Tx)有發起方、目標地址、呼叫方法和引數,以及發送者簽名,交易的結果會生成一個“回執(Receipt)”,回執里包含被呼叫方法的回傳值、運行程序生成的EventLog等……
了解這些,基本上就掌握了區塊鏈資料的脈絡,還可以繼續深究資料結構里的merkle root以及對應的merkle tree是如何生成的,有什么作用(如用于SPV:Simplified PaymentVerification),
RPC介面
這里把區塊鏈節點暴露的功能介面統稱為“RPC介面”,查看鏈上資料,包括區塊、交易、回執、系統資訊、配置資訊,向鏈上發起交易,以呼叫智能合約、修改系統配置等,或者通過AMOP協議發送訊息、監聽事件,都是通過RPC介面,
幾十個RPC介面建議一一走讀了解下,以發現自己想要的介面,
介面通信采用的協議可能是JSON RPC,也可以在深入理解ABI和RLP等編碼模式前提下自行開發介面客戶端,
資料存盤模型
區塊鏈節點會采用檔案資料庫(LevelDB或RocksDB),或者關系型資料庫如MySQL保存資料,所以,鏈上是真的有“資料庫”的,
寫入資料庫的資料包括區塊、交易、回執、合約產生的狀態資料等,是否寫入“呼叫合約產生的歷史資料”根據不同的平臺而定
共識機制原理
共識機制是區塊鏈技術的點睛之筆,靈魂所在,不可不仔細學習,不同的需求創造了不同的共識機制,比如在公鏈上流行的PoW,PoS,DPoS等,而在聯盟鏈中因為有權限限制和權限管理,且對效率要求更高,于是更流行RAFT,PBFT等拜占庭類演算法,
對共識機制進行深入學習,才可以深入理解區塊鏈通過多方協作、達成高度一致性、支持交易事務性、防篡改防作惡的功效
結語
區塊鏈的知識包羅萬象,更深層次的知識還有分布式系統理論、博弈論、前沿密碼學、經濟學、社會學等,掌握以上的基礎知識,再深入學習,舉一反三,用場景去驗證和探索創新式應用,方可發揮技術的潛力,感受分布式商業的魅力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354716.html
標籤:區塊鏈
