區塊鏈 DApp 開發:基於以太坊和比特幣公鏈

區塊鏈 DApp 開發:基於以太坊和比特幣公鏈

作者: 林冠宏
出版社: 清華大學
出版在: 2020-11-01
ISBN-13: 9787302563952
ISBN-10: 7302563950
裝訂格式: 平裝
總頁數: 411 頁





內容描述


本書以Go編程語言為例,從必要的理論知識到編碼實踐,循序漸進地介紹了當前區塊鏈兩大公鏈應用—以太坊和比特幣DApp開發的技術要點。全書共分為7章,第1章介紹區塊鏈的重要基礎知識;第2章介紹以太坊公鏈的基礎知識,內容包含但不限於以太坊的大量概念與術語;第3章介紹以太坊智能合約的開發與部署實踐;第4章和第5章以以太坊DApp中繼服務作為範例,介紹以太坊區塊鏈DApp的開發流程;第6章介紹比特幣公鏈的基礎技術;最後的第7章介紹基於比特幣公鏈的DApp開發實例,包括錢包和交易所應用中的內存池解析器與去中心化數據存儲系統的開發。 本書技術先進,註重實踐,代碼註釋詳盡,適合廣大IT技術開發者閱讀,對於想瞭解以太坊和比特幣DApp開發技術的開發者尤為合適。


目錄大綱


第1章區塊鏈基礎知識1
1.1認識區塊鏈1
1.1.1區塊鏈的概念1
1.1.2鏈的分類2
1.1.3區塊鏈能做什麼3
1.2共識的作用3
1.3常見的共識算法4
1.3.1 PoW算法5
1.3.2 PoS算法7
1.3.3 DPoS算法8
1.3.4共識算法的編碼實現9
1.4鏈的分叉15
1.4.1軟分叉16
1.4.2硬分叉18
1.4.3常見的分叉情況18
1.4.4 PoW共識機制的51%算力攻擊20
1.5小結22
第2章以太坊基礎知識23
2.1什麼是以太坊23
2.2以太坊的架構24
2.3什麼是DApp 26
2.3.1 DApp概述26
2.3.2以太坊上的DApp 28
2.4區塊的組成29
2.4.1區塊的定義29
2.4.2以太坊地址(錢包地址) 31
2.4.3 Nonce的作用33
2.4.4燃料費34
2.4.5 GasUsed的計算35
2.4.6叔塊38
2.4.7挖礦獎勵40
2.5賬戶模型42
2.5.1比特幣UTXO模型43
2.5.2 Trie樹45
2.5.3 Patricia Trie樹46
2.5.4默克爾樹(Merkle Tree) 47
2.5.5以太坊MPT樹50
2.5.6 MPT樹節點存儲到數據庫54
2.5.7組建一棵MPT樹54
2.5.8 MPT樹如何體現默克爾樹的驗證特點57
2.5.9以太坊錢包地址存儲餘額的方式57
2.5.10餘額查詢的區塊隔離性58
2.5. 11餘額的查詢順序59
2.5.12 UTXO模型和Account模型的對比59
2.6以太坊的版本演變60
2.6.1以太坊與PoW共識機制60
2.6.2君士坦丁堡61
2.7以太坊Ghost協議62
2.8 Casper:PoS的變種共識機制63
2.8.1如何成為驗證人63
2.8.2驗證人如何獲取保證金64
2.8.3候選區塊的產生64
2.8.4勝出區塊的判斷64
2.9智能合約64
2.9.1簡介與作用64
2.9.2合約標準66
2.10以太坊交易75
2.10.1交易的發起者、類型及發起交易的函數76
2.10.2交易和智能合約的關係76
2.10.3交易參數的說明77
2.10.4交易方法的真實含義80
2.10.5交易的狀態80
2.10.6交易的打包83
2.11 “代幣”餘額84
2.12以太坊瀏覽器85
2.12.1區塊鏈瀏覽器訪問合約函數87
2.12.2區塊鏈瀏覽器查看交易記錄89
2.12.3非ETH交易記錄不能作為資產轉賬成功的依據91
2.12.4區塊鏈瀏覽器查看智能合約的代碼92
2.13以太坊零地址94
2.13.1零地址的交易轉出假象94
2.13.2零地址的意義96
2.14以太坊2.0 97
2.14.1核心組件97
2.14.2共識的流程98
2.14.3嚴謹的選擇99
2.15小結99
第3章智能合約的編寫、發布和調用101
3.1智能合約與以太坊DApp 101
3.2認識Remix 102
3.3實現加法程序104
3.4實現ERC20代幣智能合約106
3.4.1定義標準變量106
3.4.2事件與構造函數106
3.4.3 Solidity的常見關鍵字107
3.4.4授權與餘額109
3.4.5轉賬函數109
3.4.6合約的代碼安全112
3.5鏈上的合約113
3.6認識Mist 114
3.6.1節點的切換116
3.6.2區塊的同步方式116
3.7創建以太坊錢包116
3.8使用Mist轉賬代幣119
3.9使用Mist發布智能合約122
3.9.1合約Solidity源碼123
3.9.2認識ABI 125
3.9.3提取ABI和Bytecode 127
3.9.4使用Bytecode發布合約128
3.9.5使用合約的函數131
3.10 Mist的替換品MyCrypto 133
3.10. 1安裝MyCrypto 134
3.10.2切換節點網絡134
3.10.3使用MyCrypto創建錢包136
3.10.4使用MyCrypto轉賬代幣137
3.10.5使用MyCrypto部署智能合約140
3.11小結141
第4章以太坊中繼基礎接口142
4.1認識以太坊中繼142
4.2區塊遍歷143
4.3 RPC接口145
4.4以太坊接口146
4.4.1重要接口詳解147
4.4.2節點鏈接152
4.4.3獲取鏈接152
4.4.4進行測試156
4.4.5獲取測試幣158
4.5項目準備159
4.6創建項目162
4.7個Go程序165
4.8封裝RPC客戶端167
4.8.1下載依賴庫167
4.8.2編寫RPC客戶端169
4.8.3單元測試172
4.9編寫訪問接口代碼173
4.9.1認識Call函數174
4.9.2查找請求的參數175
4.9.3實現獲取交易信息177
4.9.4認識BatchCall函數181
4.9.5批量獲取交易信息182
4.9.6批量獲取代幣餘額184
4.9.7獲取區塊號191
4.9.8根據區塊號獲取區塊信息192
4.9.9根據區塊哈希值獲取區塊信息196
4.9.10使用eth_call訪問智能合約函數197
4.10小結201
第5章中繼服務程序的開發202
5.1創建以太坊錢包202
5.1.1以太坊錢包術語203
5.1.2創建錢包204
5.2實現以太坊交易208
5.2.1以太坊交易的原理208
5.2.2以太坊ETH的交易216
5.3區塊事件監聽233
5.3.1創建數據庫235
5.3.2實現數據庫的連接器235
5.3.3生成數據表239
5.3.4區塊遍歷器242
5.3.5理解監聽區塊事件256
5.4小結257
第6章比特幣技術基礎258
6.1比特幣的架構258
6.2獎勵機制260
6.3再看PoW共識260
6.3.1比特幣區塊頭260
6.3.2比特幣PoW的源碼實現261
6.3 .3比特幣難度值的計算263
6.4地址的格式264
6.4.1私鑰264
6.4.2公鑰270
6.4.3地址272
6.5比特幣虛擬機283
6.5.1虛擬機的特點283
6.5.2數據源284
6.5.3常見的操作碼286
6.5.4虛擬機源碼解析287
6.6再看UTXO 292
6.6.1輸入轉換292
6.6.2交易的結構293
6.6.3統計餘額297
6.6.4構建交易298
6.7驗簽過程308
6.8比特幣鎖定腳本309
6.8.1 P2PKH 310
6.8.2 P2PK 312
6.8.3 P2SH 313
6.8.4 P2WPKH與P2WSH 313
6.9小結314
第7章基於比特幣公鏈的DApp案例315
7.1搭建比特幣私有鏈315
7.1.1下載節點源碼315
7.1.2目錄結構318
7.1.3配置文件319
7.1.4啟動比特幣節點321
7.1.5啟動終端控製程序325
7.1.6創建比特幣錢包327
7.1.7導出或導入錢包私鑰328
7.1.8主網的挖礦操作329
7.1.9私有網絡挖礦330
7.1.10獲得挖礦獎勵332
7.1.11發送交易333
7.2 OP_RETURN與智能合約338
7.2.1公鏈存儲數據的需求338
7.2.2比特幣的存儲數據之法339
7.2.3智能合約方案—OP_RETURN 339
7.2.4代碼實現含有OP_RETURN的交易340
7.2.5發送OP_RETURN交易344
7.2.6解碼默認的OP_RETURN 347
7.2.7 OP_RETURN數據的利用348
7.3比特幣的常用RPC接口349
7.3.1重要接口介紹349
7.3.2獲取節點連接358
7.3.3獲取測試幣359
7.3.4編寫訪問RPC接口代碼359
7.4案例:實現獲取交易狀態的解析器369
7.4.1相關程序組件370
7.4.2流程設計371
7.4.3用鍊錶實現隊列功能372
7.4.4實現解析器375
7.4.5啟動解析器380
7.5案例:構建去中心化數據存儲系統383
7.5.1比特幣區塊遍歷器的實現流程383
7.5.2創建數據庫384
7.5.3區塊遍歷器的代碼實現387
7.5.4把交易發送到本地節點404
7.5.5把數據存儲到鏈上408
7.5.6解析所存儲的數據410
7.6小結411


作者介紹


林冠宏,網名:指尖下的幽靈。
全棧開發者,擁有多年C/S雙端開發經驗,擅長於使用Java語言開發Android應用與Go語言開發後端程序。
技術佈道者,長期編寫技術博文與造輪開源,同時也是多個知名技術社區的簽約作家。
曾任職中心化交易所高級開發工程師與區塊鏈公司技術經理,現任某國際知名區塊鏈通證打賞工具的核心開發。
對區塊鏈技術,特別是基於以太坊與比特幣公鏈的DApp開發擁有較豐富的經驗。




相關書籍

金融科技實務與應用:360度顧客視圖 + 場景金融

作者 劉文良

2020-11-01

The Blockchain Developer: A Practical Guide for Designing, Implementing, Publishing, Testing, and Securing Distributed Blockchain-Based Projects

作者 Elrom Elad

2020-11-01

Blockchain: A clear and simple guide to the technology that makes cryptocurrency work

作者 Alford Benson

2020-11-01