區塊鏈架構與實現:Cosmos詳解
內容描述
由於涉及多個學科領域,構建區塊鏈系統面臨的技術挑戰不可小覷,而區塊鏈行業早期的野蠻生長帶來的鏈間相互孤立的問題也日益凸顯。面對這些挑戰,Tendermint 團隊給出了系統化解決方案:構建區塊鏈應用開發框架降低區塊鏈系統開發的難度,並設計通用IBC 協議實現跨鏈互操作。
《區塊鏈架構與實現:Cosmos詳解》圍繞Cosmos 項目展開,從預備基礎理論、開發框架設計、開發框架應用三個層面全面、系統闡述相關機制:在預備基礎理論方面,詳細介紹區塊鏈項目的理論基礎,包括密碼學算法、拜占庭容錯共識協議的基礎知識、Tendermint 共識協議以及權益證明機制原理;在開發框架設計方面,深入介紹Tendermint Core項目架構設計以及該項目提供的ABCI 規範與實現原理,剖析Cosmos-SDK 項目中提供的功能模塊的原理與關鍵實現,包括權益證明機制以及IBC 協議的實現;在開發框架應用方面,展示如何基於Tendermint Core項目構建分佈式鍵值數據庫應用,並以Cosmos 網絡的客戶端Gaia 的實現為例展示構建應用專屬區塊鏈系統的具體過程。
《區塊鏈架構與實現:Cosmos詳解》內容深入淺出,指導性和實操性強,適合區塊鏈領域開發者和區塊鏈技術愛好者閱讀,也可作為高等院校電腦及區塊鏈相關專業的教學用書和培訓教材。
目錄大綱
序1(Peng Zhong,Tendermint CEO)
序2(Alessio Treglia,Tendermint 工程副總裁)
前言
資源與支持
第 1 章 Cosmos 網絡介紹 1
1.1 區塊鏈開發的技術挑戰 1
1.1.1 開發週期與技術門檻 1
1.1.2 資源消耗與交易體驗 2
1.1.3 鏈上擴容與跨鏈通信 3
1.2 Cosmos 網絡 4
1.2.1 Cosmos 的解決方案 4
1.2.2 Cosmos Hub 5
1.2.3 Tendermint Core 6
1.2.4 Cosmos-SDK 8
1.2.5 IBC 協議 10
1.3 小結 12
第 2 章 密碼學算法 13
2.1 散列函數與Merkle 樹 13
2.1.1 散列函數簡介 13
2.1.2 生日悖論原理 15
2.1.3 Merkle 樹構建 17
2.1.4 Merkle 樹證明構造 22
2.2 數字簽名算法 28
2.2.1 循環群 29
2.2.2 素數域 32
2.2.3 橢圓曲線 32
2.2.4 ECDSA 36
2.2.5 Ed25519 40
2.2.6 公鑰與地址 45
2.3 網絡流量加密 46
2.4 小結 47
第3 章 共識協議與區塊設計 48
3.1 共識協議基礎 49
3.1.1 半同步網絡模型與BFT 49
3.1.2 拜占庭將軍問題與CAP 定理 50
3.2 PBFT 共識協議 54
3.2.1 協議概述 55
3.2.2 視圖轉換 57
3.3 Tendermint 共識協議 58
3.3.1 協議概述 59
3.3.2 鎖定機制 62
3.3.3 解鎖機制 64
3.4 共識協議比較 66
3.5 提案者輪換選擇算法 68
3.6 區塊結構 79
3.7 小結 87
第4 章 Tendermint Core 的架構設計 88
4.1 整體架構概覽 88
4.1.1 基本概念 88
4.1.2 反應器簡介 90
4.2 核心數據結構Node 結構體 92
4.2.1 作為服務的Node 結構體 94
4.2.2 可配置的Node 結構體 95
4.2.3 作為對等網絡節點的Node結構體 96
4.3 反應器(Reactor) 103
4.3.1 mempool. Reactor 105
4.3.2 evidence. Reactor 109
4.3.3 BlockchainReactor 111
4.3.4 consensus. Reactor 114
4.4 小結 115
第5 章 ABCI 116
5.1 交易池連接 117
5.2 共識連接 119
5.3 查詢連接 125
5.4 客戶端與上層應用交互 128
5.4.1 Application 接口與Client接口 129
5.4.2 進程內交互 132
5.4.3 套接字交互 133
5.5 實戰——分佈式鍵值數據庫 135
5.5.1 鍵值對讀寫實現 137
5.5.2 執行過程展示 138
5.6 小結 141
第6 章 Cosmos-SDK 的架構設計 142
6.1 Cosmos-SDK 的模塊化設計 143
6.1.1 AppModule 接口 143
6.1.2 模塊管理器 146
6.1.3 模塊的源碼組織 147
6.2 應用模板BaseApp 148
6.2.1 ABCI 接口方法的實現 151
6.2.2 模塊管理 154
6.3 可認證數據結構IAVL+樹 157
6.3.1 節點設計 157
6.3.2 讀寫與遍歷 159
6.3.3 證明機制 167
6.3.4 Cosmos-SDK 中的IAVL+樹 179
6.3.5 Cosmos-SDK 中的剪枝選項 180
6.4 Cosmos-SDK 的存儲器設計 181
6.4.1 多重存儲器 MultiStore 184
6.4.2 鍵值對存儲器KVStore 186
6.4.3 存儲器裝飾器 189
6.4.4 瞬時存儲數據庫 193
6.5 小結 194
第7 章 Cosmos-SDK 的基本模塊 195
7.1 賬戶與交易: auth 模塊 195
7.1.1 賬戶管理 195
7.1.2 標準交易 197
7.1.3 交易預檢查 198
7.2 鏈上資產轉移: bank 模塊 200
7.3 創世交易:genutil 模塊 202
7.4 鏈上參數管理: params 模塊 202
7.5 鏈上資產總量追踪:supply 模塊 203
7.6 鏈上狀態一致性檢查: crisis 模塊 204
7.7 鏈上治理:gov 模塊 206
7.7.1 提案創建與投票 206
7.7.2 提案的鏈上存儲 209
7.7.3 提案的鏈上處理 212
7.8 節點升級:upgrade 模塊 216
7.8.1 升級計劃與升級提案 216
7.8.2 執行升級計劃 218
7.8.3 自動化升級 220
7.9 小結 220
第8 章 Cosmos-SDK 的PoS 實現 221
8.1 PoS 機制概述 221
8.2 Cosmos Hub 的PoS 機制 223
8.3 鏈上資產抵押:staking 模塊 226
8.3.1 驗證者與鏈上資產抵押 227
8.3.2 重新委託與撤回委託 232
8.3.3 驗證者狀態切換 235
8.3.4 回調函數與模塊交互 238
8.4 被動作惡懲罰:slashing 模塊 241
8.4.1 區塊中的投票信息 242
8.4.2 被動懲罰設計理念 243
8.4.3 被動懲罰實現概覽 244
8.5 主動作惡懲罰: evidence 模塊 249
8.5.1 雙簽作惡懲罰 250
8.5.2 懲罰機制小結 252
8.6 鏈上資產鑄造:mint 模塊 254
8.7 鏈上獎勵分發: distribution 模塊 256
8.7.1 獎勵分發概述 256
8.7.2 F1 獎勵分發機制 260
8.7.3 F1 獎勵分發實現 261
8.8 小結 268
第9 章 Cosmos-SDK 的跨鏈通信 269
9.1 Tendermint Core 輕客戶端 270
9.1.1 輕客戶端原理概述 270
9.1.2 故障模型與解決方案 272
9.1.3 輕客戶端實現 274
9.1.4 Cosmos-SDK 輕客戶端 280
9.2 跨鏈通信原理與設計 283
9.2.1 跨鏈通信概述 283
9.2.2 中繼者 288
9.2.3 輕客戶端 288
9.2.4 連接 293
9.2.5 信道 296
9.2.6 跨鏈數據包 298
9.3 跨鏈通信示例 301
9.4 小結 305
第 10 章 Cosmos Hub 的客戶端Gaia 306
10.1 核心數據結構GaiaApp 306
10.1.1 編解碼器初始化 308
10.1.2 BaseApp 初始化 310
10.1.3 模塊存儲映射表初始化 310
10.1.4 模塊Keeper 初始化 311
10.1.5 模塊管理器初始化 314
10.1.6 存儲加載 317
10.2 gaiad 與gaiacli 317
10.2.1 安裝 317
10.2.2 單節點測試鏈 318
10.2.3 gaiacli 的使用 321
10.3 區塊的生命週期 325
10.3.1 鏈初始化 325
10.3.2 交易與區塊構建 326
10.3.3 區塊執行 328
10.4 Gaia 的安全部署 331
10.4.1 遠程簽名部署 331
10.4.2 哨兵節點部署 331
10.5 小結 332
附錄1 Cosmos-SDK 與Cosmos Hub 中的參數配置 333
附錄2 Cosmos-SDK 中的鍵值對 336
附錄3 Cosmos-SDK 中的不變量檢查 338
作者介紹
溫隆
(1)密碼學博士,山東大學網絡空間安全學院企業合作導師,區塊鏈系統與智能合約架構師。
(2)曾任北京比特大陸科技有限公司資深研發工程師,負責區塊鏈系統的理論研究與工程落地。
(3)曾任北京煉石網絡技術有限公司密碼研究員,負責商密算法軟件優化與可搜索加密等方向的理論研究與工程落地。
賈音
(1)2017年碩士畢業於上海交通大學計算機科學與技術專業,區塊鏈開發工程師。
(2)曾就職於北京比特大陸科技有限公司,負責公有鏈、智能合約相關研發工作。
(3)曾就職於衛士通商用密碼實驗室,負責區塊鏈方向的密碼學研究。