本書解釋了為什么去中心化應(yīng)用(DApp)將比現(xiàn)在流行的Web應(yīng)用得到更廣泛的使用以及實(shí)現(xiàn)更多盈利,展示了如何使用現(xiàn)有工具來(lái)創(chuàng)建可用的DApp及其市場(chǎng),并研究了目前兩個(gè)成功的DApp案例。
本書由以太坊聯(lián)合創(chuàng)始人Gavin Wood博士和數(shù)字貨幣領(lǐng)域世界著名布道師Andreas M. Antonopoulos聯(lián)袂撰寫,全方位闡釋以太坊相關(guān)技術(shù)及實(shí)踐,是入門以太坊的必讀經(jīng)典。本書內(nèi)容全面,既涵蓋以太坊的精彩歷史、以太坊基本概念、Solidity教程,以及關(guān)于代幣和ICO的法律討論,還深入講解以太坊背后的密碼學(xué)、智能合約編程實(shí)踐等。本書主要面向程序員,通過(guò)這本實(shí)用指南,你將了解運(yùn)行智能合約的區(qū)塊鏈的工作原理、使用方法以及如何使用它們開(kāi)發(fā)智能合約和去中心化應(yīng)用程序。
Andreas M. Antonopoulos是備受好評(píng)的暢銷書作家、演講家和教育家,也是世界上重要的比特幣和開(kāi)放式區(qū)塊鏈專家之一。Andreas善于化繁為簡(jiǎn),讓普通人理解深?yuàn)W的技術(shù)話題。
Gavin Wood博士是以太坊的聯(lián)合創(chuàng)始人和前首席技術(shù)官,也是Solidity面向合約編程語(yǔ)言的發(fā)明人。他還是Web3基金會(huì)的創(chuàng)始人兼總裁,也是Parity Technologies的創(chuàng)始人兼首席程序員。
前言1
*語(yǔ)速查11
章什么是以太坊23
以太坊與比特幣的比較23
區(qū)塊鏈的組件24
以太坊的誕生25
以太坊的四個(gè)開(kāi)發(fā)階段26
以太坊:一個(gè)通用目的的區(qū)塊鏈27
以太坊的組件28
以太坊和圖靈完備29
從通用目的的區(qū)塊鏈到DApp31
互聯(lián)網(wǎng)的三次浪潮32
以太坊的開(kāi)化32
為什么要學(xué)習(xí)以太坊?33
這本書將會(huì)教你什么內(nèi)容?33
2章以太坊基本概念34
以太幣的貨幣單位34
選擇以太坊錢35
控制和責(zé)任36
MetaMask入門37
世界計(jì)算機(jī)簡(jiǎn)介45
外部賬戶和合約賬戶46
一個(gè)簡(jiǎn)單的智能合約:Faucet46
編譯Faucet合約49
在區(qū)塊鏈上創(chuàng)建合約50
與合約進(jìn)行交互52
總結(jié)57
3章以太坊客戶端58
以太坊網(wǎng)絡(luò)58
運(yùn)行以太坊客戶端62
以太坊區(qū)塊鏈數(shù)據(jù)的同步67
遠(yuǎn)程調(diào)用以太坊客戶端71
總結(jié)74
4章以太坊背后的密碼學(xué)75
密鑰和地址75
公鑰密碼學(xué)和加密貨幣76
私鑰78
公鑰79
密碼學(xué)哈希函數(shù)85
以太坊地址87
總結(jié)92
5章錢93
錢技*概述93
錢的佳實(shí)踐97
總結(jié)8
6章交易9
交易的結(jié)構(gòu)9
交易的數(shù)1
交易的gas115
交易的接收方117
交易中的以太幣和數(shù)據(jù)117
特殊交易:合約創(chuàng)建121
數(shù)字123
的前綴值(v)和公鑰恢復(fù)129
離線130
交易的傳播131
記錄在區(qū)塊鏈上132
多交易132
總結(jié)133
7章智能合約與Solidity134
什么是智能合約?134
智能合約的生命周期135
以太坊編程語(yǔ)言136
使用Solidity編寫智能合約138
以太坊合約的應(yīng)用程序二進(jìn)制接140
使用Solidity進(jìn)行編程142
與gas有關(guān)的注意事項(xiàng)163
總結(jié)165
8章智能合約與Vyper166
合約的常見(jiàn)漏洞和Vyper166
與Solidity的比較167
裝飾器171
函數(shù)和變量順序172
編譯173
在編譯器層面防止溢出錯(cuò)誤173
讀取數(shù)據(jù)174
總結(jié)174
9章智能合約安全175
安全佳實(shí)踐175
安全風(fēng)險(xiǎn)和反模式176
重入176
算*溢出181
意外的以太幣185
DELEGATECALL189
默認(rèn)的可見(jiàn)性195
無(wú)序錯(cuò)覺(jué)197
外部合約引用199
短地址/參數(shù)攻擊204
未檢查的調(diào)用返回值206
競(jìng)爭(zhēng)條件/預(yù)先交易208
拒絕服務(wù)211
區(qū)塊時(shí)間戳縱214
小心使用構(gòu)造函數(shù)216
未初始化的存儲(chǔ)指針217
浮點(diǎn)數(shù)和精度219
Tx.Origin驗(yàn)證222
合約程序庫(kù)223
總結(jié)224
0章代幣225
代幣有哪些使用方式?225
代幣和可替代性227
對(duì)手方風(fēng)險(xiǎn)227
代幣和內(nèi)在性227
使用代幣:工具型代幣還是權(quán)益型代幣?228
以太坊的代幣230
代幣標(biāo)準(zhǔn)251
代幣接標(biāo)準(zhǔn)的擴(kuò)展253
代幣和ICO254
總結(jié)254
1章預(yù)言機(jī)255
為什么需要預(yù)言機(jī)?255
預(yù)言機(jī)的應(yīng)用場(chǎng)景和示例256
預(yù)言機(jī)的設(shè)計(jì)模式257
數(shù)據(jù)認(rèn)證259
計(jì)算性的預(yù)言機(jī)260
去中心化預(yù)言機(jī)262
Solidity中的預(yù)言機(jī)客戶端接262
總結(jié)266
2章去中心化應(yīng)用267
什么是DApp268
一個(gè)基本的DApp示例:拍*DApp271
拍*DApp的進(jìn)一步去中心化276
使用Swarm進(jìn)行數(shù)據(jù)存儲(chǔ)277
以太坊名稱服務(wù)280
從普通應(yīng)用到去中心化應(yīng)用291
總結(jié)292
3章以太坊虛擬機(jī)293
什么是EVM?293
圖靈完備和gas308
gas308
總結(jié)311
4章共識(shí)312
基于工作量證明的共識(shí)機(jī)制313
基于權(quán)益證明的共識(shí)機(jī)制313
Ethash:以太坊的PoW算法314
Casper:以太坊的PoS算法315
共識(shí)的原則316
爭(zhēng)議和競(jìng)爭(zhēng)316
總結(jié)317
附錄A 以太坊的分*歷史318
附錄B 以太坊標(biāo)準(zhǔn)325
附錄C EVM作碼和對(duì)應(yīng)的gas開(kāi)銷332
附錄D 開(kāi)發(fā)工具、框架和類庫(kù)339
附錄E web3.*s教程359