官术网_书友最值得收藏!

前  言

自中本聰發表比特幣白皮書以來,數字資產領域經歷了幾多沉浮。但在瞬息萬變中有一點卻越來越清晰:比特幣底層所依賴的區塊鏈技術在諸多方面可能有著改變世界的潛力。比特幣和區塊鏈除完成了數字貨幣領域“從0到1”的飛躍之外,也為世界帶來了無限的想象空間。然而區塊鏈技術想要在社會生活中產生實際影響,需要腳踏實地地實現工程化落地。盡管有著中本聰的“天才”設計,但是比特幣憑一己之力顯然無法滿足不斷延展的需求,這就催生了構建新區塊鏈系統的需求。

區塊鏈系統涉及對等網絡通信、密碼算法、共識協議、證明機制以及經濟激勵設計等眾多學科和領域,構建新區塊鏈系統所面臨的技術挑戰不可小覷。在迫切的需求和極高的技術門檻之間,早期的區塊鏈從業者選擇了通過改造比特幣實現代碼來搭建具有新特性的區塊鏈系統的技術路線。這種技術路線可以在一定程度上降低技術門檻,但卻需要面對比特幣實現代碼中為了修正自己的邏輯而引入的煩瑣細節,并且在這一技術路線下誕生的區塊鏈系統不可避免地延續了比特幣的“沉疴”:海量資源消耗、交易處理速度低、交易體驗差。

為了解決這些問題,需要重新審視和考量比特幣在各個方向的技術選型。隨著區塊鏈技術的演進,用PoS機制替代比特幣的工作量證明(proof-of-work,PoW)機制以降低資源消耗,用BFT共識協議替代比特幣的中本聰共識(Nakamoto consensus)協議以提高交易處理速度、改善交易體驗的技術方案得到了區塊鏈社區的廣泛認同,逐漸成為構建區塊鏈應用的主流方案。多個備受關注的區塊鏈項目均采納了該技術方案,例如以太坊2.0、Polkadot以及Cosmos Hub。其中以太坊2.0目前未完成,Polkadot在2020年5月剛完成主網啟動,唯有Tendermint團隊構建的Cosmos Hub已經上線并平穩運行了兩年多的時間,并在2021年2月順利完成了自啟動以來最大的升級——“星際之門”(Stargate)升級計劃。得益于PoS機制和BFT共識協議的選用,Cosmos Hub在極大地降低資源消耗的同時也帶來了交易體驗的“飛躍”。自上線以來,Cosmos Hub的平穩運行也驗證了上述技術方案的可行性。

Cosmos Hub雖然在交易處理速度方面相較于比特幣有了量級的提升,但依然無法在特性支持和處理速度兩個方面同時滿足所有的需求。針對這一問題,Tendermint團隊提出Cosmos網絡的愿景:與其將所有的應用堆疊到一個區塊鏈系統中,不如為每個特定應用構建應用專屬區塊鏈系統,并利用跨鏈通信技術實現區塊鏈系統之間的互聯互通。實現該愿景的第一步,便是盡可能地降低構建區塊鏈系統的技術門檻,盡可能地縮短應用專屬區塊鏈系統的開發周期。

為了將愿景變成現實,Tendermint團隊在Cosmos Hub項目的開發過程構建了一套區塊鏈應用開發框架,基于該開發框架可以快速構建應用專屬區塊鏈系統。Cosmos Hub項目的客戶端Gaia便是基于該框架構建而來的。該開發框架將區塊鏈系統劃分為3層,自下而上分別是對等網絡通信層、共識協議層以及應用層。Tendermint Core項目實現了對等網絡通信以及共識協議,Cosmos-SDK項目則利用模塊化設計的策略為應用層提供了可重用的組件,兩個項目之間通過ABCI進行交互。

利用該開發框架構建區塊鏈應用時,開發者無須重新實現對等網絡通信以及共識協議,只需要基于Cosmos-SDK項目提供的功能模塊定制化實現應用層邏輯即可。相比之前通過分叉或者重寫比特幣實現代碼開發區塊鏈的模式,這可極大地降低區塊鏈應用開發的技術門檻并縮短開發周期。筆者親身經歷過這兩種開發模式,也切實感受到Tendermint團隊提供的區塊鏈應用開發框架帶來的開發體驗和交付質量方面的改善。基于這套開發框架,國內外開發者已經構建了豐富的生態,包括Band、Argon等項目。為了實現應用專屬區塊鏈系統之間的互聯互通,Tendermint團隊設計了IBC協議。在Cosmos Hub剛剛完成的“星際之門”升級計劃中,IBC協議作為Cosmos-SDK項目的一個功能模塊呈現,而這將賦予基于Cosmos-SDK項目構建的應用專屬區塊鏈系統跨鏈通信的能力,從而為實現Cosmos網絡的愿景“鋪平道路”。

Cosmos Hub項目的平穩運行,展示了其PoS機制與BFT共識協議實現的可行性與穩定性。而IBC協議也為區塊鏈行業的跨鏈通信問題提供了可作為典范的解決方案。因此,Cosmos Hub項目是深入理解BFT共識協議、PoS機制以及IBC協議的原理和實現的絕佳樣本。基于Tendermint Core項目和Cosmos-SDK項目,區塊鏈開發者可以專注于應用層邏輯并快速構建應用專屬區塊鏈系統以滿足多樣化的需求。如果你希望了解區塊鏈領域前沿進展,或者希望構建自己的應用專屬區塊鏈系統,本書便是為你準備的。

本書特色

雖然基于Tendermint Core項目和Cosmos-SDK項目構建應用專屬區塊鏈系統并不需要開發者理解這兩個項目的內部原理,但是深入理解開發框架理論原理、架構設計和內部實現方式對于構建穩定的區塊鏈系統很有幫助。掌握一個區塊鏈項目,也有助于讀者在面對區塊鏈技術不斷演進的過程中不迷失方向,讀者可以根據自身需求選取最為恰當的解決方案。

Tendermint Core和Cosmos-SDK兩個項目(由于這兩個項目提及次數較多,后續文中將省略“項目”二字)仍在快速迭代中,其具體的代碼實現仍在不斷改進。因此,本書選取了特定版本的Tendermint Core和Cosmos-SDK展開論述,并且著力介紹那些在版本迭代中仍然傾向于保持不變的基本邏輯。其中,Tendermint Core采用0.33.3版本,Cosmos-SDK采用0.38.4版本,IAVL+庫采用0.13.3版本,Gaia采用2.0.11版本。

用一本書的篇幅從理論到實現完全拆解Tendermint Core和Cosmos-SDK的每一個方向是不現實的。本書盡力從區塊鏈架構師的角度出發,思考應用專屬區塊鏈系統的架構師需要了解該開發框架的哪些方面。在這一原則指導下,撰寫本書的基本策略是,在密碼算法、共識協議方面,側重于理論闡述以幫助讀者建立關于散列函數、數字簽名算法以及Tendermint共識協議的直觀認識;在ABCI、可認證數據結構、PoS機制等方面,則深入講解實現細節,以幫助開發者掃除基于該開發框架構建應用專屬區塊鏈系統時的知識盲點。根據這一策略,本書最終呈現出以下特色內容。

  • 密碼算法的拆解與圖示:深入介紹散列函數以及Merkle樹,以比特幣挖礦為例展示構造散列碰撞的難度,加深讀者對于散列函數安全性的理解;數字簽名算法方面,配合大量圖示直觀地展示橢圓曲線點群的性質,幫助讀者建立對于數字簽名算法的直觀認知。
  • 共識協議的比較與推演:從共識協議的基本概念出發,逐步闡述實用拜占庭容錯(practical Byzantine fault tolerance,PBFT)共識協議以及Tendermint共識協議,并通過理論對比展示Tendermint共識協議的改進之處。通過大量圖示,幫助讀者理解Tendermint共識協議中各種機制存在的必要性。梳理Tendermint Core中采用的提案者輪換選擇算法,并完整展示Tendermint Core中的區塊結構。
  • 完整闡述ABCI的規范與實現:深入講解ABCI背后的實現機制,并以Cosmos-SDK中的應用為例,展示ABCI的“威力”——在上層應用中通過PoS機制控制底層共識協議的參與節點。
  • 深入剖析PoS機制的理論與實現:首次完整介紹PoS機制的原理和具體實現,展示Cosmos-SDK中如何通過遵循模塊化設計的理念,將紛繁復雜的PoS機制通過正交的功能模塊化繁為簡并逐一擊破,最終形成清晰的工程代碼。
  • 系統闡述IBC協議的原理與設計:雖然IBC協議的開發工作仍在快速迭代中,但根據鏈間標準(interchain standard,ICS)規范以及IBC協議的當前實現已經可以一窺究竟。從Tendermint Core輕客戶端的構建出發,帶領讀者揭開IBC協議的神秘面紗。

內容簡介

  • 第1章介紹區塊鏈開發面臨的技術挑戰,并概述Tendermint團隊通過Tendermint Core的分層設計、Cosmos-SDK的模塊化設計以及IBC協議給出的解決方案。
  • 第2章介紹Tendermint Core中依賴的密碼學算法,包括散列函數、Merkle樹以及項目支持的多種數字簽名算法。在介紹數字簽名算法時,著重介紹數字簽名算法所依賴的底層數學結構橢圓曲線點群的性質,而非具體的運算規則,以幫助讀者建立對于橢圓曲線點群的直觀認識。
  • 第3章從分布式系統的基本概念出發,逐步介紹PBFT共識協議以及Tendermint共識協議,并比較兩者異同以幫助讀者理解Tendermint共識協議相較于PBFT共識協議的理論改進。隨后介紹Tendermint團隊提出的提案者輪換選擇算法,對于這一算法的深入理解有利于在區塊鏈系統運維中理解系統行為。最后介紹在分層設計以及Tendermint共識協議的影響下Tendermint Core中的區塊結構,這是理解Tendermint Core架構的第一步。
  • 第4章著重描述Tendermint Core的架構設計。利用抽象出來的反應器、轉換器等基本概念,Tendermint團隊干凈、利落地完成了Tendermint Core的架構設計,并配合大量利用統一建模語言(unified modeling language,UML)繪制的類圖,幫助讀者理解Tendermint Core的內在機理。
  • 第5章詳細描述Tendermint團隊為了實現區塊鏈系統的分層設計而抽象出來的ABCI。ABCI用簡單、清晰的接口定義解耦了底層共識協議以及上層應用邏輯,并且仍然支持上層應用的深度定制。對ABCI的深入理解是基于Tendermint Core開發應用專屬區塊鏈系統的必要提前。為了幫助理解,本章以分布式鍵值數據庫的實現為例展示如何基于ABCI進行應用開發。
  • 第6章介紹Cosmos-SDK的架構設計,重點介紹為了支持上層應用的模塊化設計而引入的諸多設計。應用專屬區塊鏈系統的核心任務是根據既定的規則保證上層應用狀態的一致性,本章也因此著重描述Cosmos-SDK所采用的可認證數據結構——IAVL+樹,以及Cosmos-SDK中的存儲器設計,這是理解后續具體應用模塊的基本前提。
  • 第7章介紹Cosmos-SDK中的基本功能模塊,包括負責賬戶與交易、鏈上資產轉移、創世交易、鏈上參數管理、鏈上資產總量追蹤、鏈上狀態一致性檢查、鏈上治理、節點升級等的模塊。
  • 第8章從PoS的基本原理開始,逐步引出Cosmos-SDK中的PoS機制設計,并逐步深入鏈上資產抵押、被動作惡懲罰、主動作惡懲罰、鏈上資產鑄造以及鏈上獎勵分發等機制的設計和實現。
  • 第9章從Tendermint Core輕客戶端的構建原理入手,介紹IBC協議的原理和設計。為了保證IBC協議的通用性,ICS規范以最小功能接口的方式規范了輕客戶端、連接、信道等概念。本章深入介紹這些基本概念以及在這些概念的相互配合下完成一筆跨鏈轉賬的基本流程。
  • 第10章從Cosmos Hub的客戶端Gaia的實現和啟動流程方面,介紹利用Tendermint Core和Cosmos-SDK開發應用專屬區塊鏈系統的基本流程。此外還從區塊鏈系統中一筆交易和一個區塊的完整生命周期切入,串聯起全書內容,幫助讀者融會貫通所有內容。

致謝

區塊鏈行業的諸多同人在本書籌備工作中反饋了大量有益的建議,顯著提升了本書的質量。感謝深圳蘭宇網絡科技有限公司密碼算法工程師侯文平、Matrixport資深研發工程師張秀宏、上海萬向區塊鏈股份公司區塊鏈開發工程師朱冰心、火幣公鏈事業部技術專家何暢彬、華為終端安全架構師方習文、鵬城實驗室助理研究員黃正安、Matrixport資深研發工程師韓天樂和韓元超、Matrixport區塊鏈開發工程師姚永芯和劉浩然、比原鏈研究工程師林浩宇等人在百忙之中審閱初稿。感謝Matrixport CTO 姜家志、ViaBTC集團合伙人江志華在本書撰寫過程中提供大力支持。為了編寫本書,犧牲了很多陪伴家人的時間,感謝家人的理解與支持。感謝人民郵電出版社異步社區的編輯們,你們的認真負責保證了本書的質量。

溫隆 賈音

2020年11月于北京

主站蜘蛛池模板: 大理市| 财经| 蒙城县| 晋城| 嘉荫县| 宝丰县| 叶城县| 曲靖市| 湘潭市| 天长市| 宿迁市| 抚顺市| 玛曲县| 灵山县| 宁阳县| 平邑县| 拜城县| 永仁县| 宁津县| 和田市| 龙江县| 阿克苏市| 广丰县| 吴忠市| 澜沧| 百色市| 孟连| 根河市| 雷州市| 明水县| 柳江县| 呼图壁县| 方正县| 大田县| 平湖市| 商水县| 电白县| 即墨市| 修水县| 连南| 灵寿县|