區塊鏈以太坊DApp開發實戰( 簡體 字) | |
作者:林冠宏 | 類別:1. -> 程式設計 -> 區塊鏈 |
出版社:清華大學出版社 | 3dWoo書號: 51785 詢問書籍請說出此書號! 有庫存 NT售價: 395 元 |
出版日:8/1/2019 | |
頁數:247 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302531265 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第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.1PoW算法5 1.3.2PoS算法7 1.3.3DPoS算法8 1.3.4共識算法的編碼嘗試9 1.4鏈的分叉14 1.4.1軟分叉16 1.4.2硬分叉18 1.4.3常見的分叉情況18 1.4.4PoW共識機制的51%算力攻擊20 1.5小結22 第2章以太坊基礎知識準備23 2.1什么是以太坊23 2.2以太坊的架構24 2.3什么是DApp26 2.3.1DApp概述26 2.3.2以太坊上的DApp28 2.4區塊的組成29 2.4.1區塊的定義29 2.4.2以太坊地址(錢包地址)31 2.4.3Nonce的作用33 2.4.4燃料費34 2.4.5GasUsed的計算35 2.4.6叔塊38 2.4.7挖礦獎勵40 2.5賬戶模型42 2.5.1比特幣UTXO模型43 2.5.2Trie樹45 2.5.3PatriciaTrie樹47 2.5.4默克爾樹(MerkleTree)47 2.5.5以太坊MPT樹50 2.5.6MPT樹節點存儲到數據庫53 2.5.7組建一棵MPT樹54 2.5.8MPT樹如何體現默克爾樹的驗證特點57 2.5.9以太坊錢包地址存儲余額的方式57 2.5.10余額查詢的區塊隔離性58 2.5.11余額的查詢順序58 2.5.12UTXO模型和Account模型的對比59 2.6以太坊的版本演變60 2.6.1以太坊與PoW共識機制60 2.6.2君士坦丁堡60 2.7以太坊Ghost協議61 2.8Casper:PoS的變種共識機制62 2.8.1如何成為驗證人63 2.8.2驗證人如何獲取保證金63 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交易的發起者、類型及發起交易的函數75 2.10.2交易和智能合約的關系76 2.10.3交易參數的說明77 2.10.4交易方法的真實含義79 2.10.5交易的狀態80 2.10.6交易被打包82 2.11“代幣”余額83 2.12以太坊瀏覽器84 2.12.1區塊鏈瀏覽器訪問合約函數86 2.12.2區塊鏈瀏覽器查看交易記錄89 2.12.3非ETH交易記錄不能作為資產轉賬成功的依據90 2.12.4區塊鏈瀏覽器查看智能合約的代碼91 2.13以太坊零地址94 2.13.1零地址的交易轉出假象94 2.13.2零地址的意義96 2.14小結97 第3章智能合約的編寫、發布和調用98 3.1智能合約與以太坊DApp98 3.2認識Remix99 3.3實現加法程序101 3.4實現ERC20代幣智能合約103 3.4.1定義標準變量103 3.4.2事件與構造函數103 3.4.3Solidity的常見關鍵字104 3.4.4授權與余額105 3.4.5轉賬函數106 3.4.6合約的代碼安全109 3.5鏈上的合約110 3.6認識Mist111 3.6.1節點的切換112 3.6.2區塊的同步方式113 3.7創建以太坊錢包113 3.8使用Mist轉賬代幣116 3.9使用Mist發布智能合約119 3.9.1合約Solidity源碼121 3.9.2認識“ABI”122 3.9.3提取ABI和Bytecode124 3.9.4使用Bytecode發布合約125 3.9.5使用合約的函數128 3.10小結130 第4章實現以太坊中繼——基礎接口131 4.1認識以太坊中繼131 4.2區塊遍歷132 4.3RPC接口134 4.4以太坊接口135 4.4.1重要接口詳解136 4.4.2節點鏈接141 4.4.3獲取鏈接141 4.4.4進行測試144 4.4.5獲取測試幣147 4.5項目準備148 4.6創建項目151 4.7第一個Go程序154 4.8封裝“RPC”客戶端156 4.8.1下載依賴庫156 4.8.2編寫“RPC”客戶端158 4.8.3單元測試161 4.9編寫訪問接口代碼162 4.9.1認識“Call”函數163 4.9.2查找請求的參數164 4.9.3實現獲取交易信息166 4.9.4認識“BatchCall”函數170 4.9.5批量獲取交易信息171 4.9.6批量獲取代幣余額173 4.9.7獲取最新區塊號179 4.9.8根據區塊號獲取區塊信息181 4.9.9根據區塊哈希值獲取區塊信息184 4.9.10使用“eth_call”訪問智能合約函數186 第5章實現以太坊中繼——應用191 5.1創建以太坊錢包191 5.1.1以太坊錢包術語192 5.1.2創建錢包194 5.2實現以太坊交易197 5.2.1以太坊交易的原理197 5.2.2以太坊ETH的交易206 5.3區塊事件監聽224 5.3.1創建數據庫225 5.3.2實現數據庫的連接器226 5.3.3生成數據表230 5.3.4區塊遍歷器232 5.3.5理解監聽區塊事件246 5.4小結247 后記248 本書以Go編程語言講解,從必要的理論知識到編碼實踐,循序漸進地介紹以太坊DApp開發的技術要點。全書主要內容分4大部分:第一部分介紹區塊鏈的一些重要基礎知識;第二部分全面地介紹以太坊公鏈的應用基礎,內容包含但不限于以太坊的大量術語;第三部分介紹以太坊智能合約整體開發與部署實踐;第四部分以以太坊DApp中繼服務作為綜合范例,介紹以太坊區塊鏈DApp的開發流程與實戰。
本書注重應用,代碼注釋詳盡,適合IT技術開發者閱讀,對于想了解以太坊及其DApp開發技術的人員或想開發一款基于以太坊的DApp開發者尤為合適。 出版這本書之前,我是一位已經撰寫技術博文5年之久的程序員,技術棧范圍包含但不限于安卓應用開發、后端開發以及現在所從業的區塊鏈DApp開發。
曾經有不少出版社聯系我出書,但限于對知識的敬畏和對出書的謹慎,都一一婉拒了。正式簽約出版這本書是2018年10月中旬,那時我處于一個對區塊鏈和以太坊知識非常熱衷的階段,當時的工作也正好是基于區塊鏈做各種DApp的開發,比如具有代表性的錢包、中心化交易所和去中心化交易所應用。對區塊鏈、以太坊的各個方面構建了一套完整的知識體系,所以在清華大學出版社的編輯聯系我的時候,市面上關于以太坊DApp技術開發的書籍幾乎為零,而理論性的書籍過多,在深思熟慮之后,便決定編寫此書。 寫書最怕的是誤人子弟。后面正式編寫的時候才發現,將整個以太坊的知識體系展開來講的話,有很多的細節是自己之前還沒有掌握的,比如:區塊鏈瀏覽器上所看到的非ETH交易記錄不能作為資產轉移成功的依據等。編寫此書的過程中,也遇到了一些疑惑點,通過借鑒優秀的博客文章、閱讀源碼和咨詢業界一些技術大佬的意見,反復檢查、檢驗整理編寫入書內,對我自己來說也是一種提升,豐富并拓展了我的以太坊知識體系。我在這里衷心感謝他們并將會在書后列舉出這些文章的鏈接和相關大佬的名字。 全書的內容關聯性很強,篇幅適中,非必要的理論性內容幾乎沒有談及。在術語闡述上,我盡力做到用通俗的語言去講解,如果讀者在閱讀的過程中依然無法理解某一個知識點,歡迎通過我的聯系方式直接詢問,我會為你們一一解答。 雖然,筆者已盡最大努力避免書中內容出現錯誤,但由于水平所限,難免會有錯誤,如果讀者在書中發現錯誤的結論,歡迎聯系我進行勘誤。我將十分感謝您!對于被糾正的內容,我將會在技術博客中公布。此外,技術交流方面可以加入QQ群,群號等聯系信息參見本書的后記。 林冠宏 2019年3月 |