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