2016年,筆者漫步于校圖書館,幾乎檢索不到一本區(qū)塊鏈書籍; 2022年,筆者徜徉于電商網(wǎng)站,見到了琳瑯滿目的區(qū)塊鏈著作。幾年間,筆者見證了區(qū)塊鏈從風(fēng)口浪尖到本土特色化落地,見證了區(qū)塊鏈從金融科技到可編程社會(huì)發(fā)展,也見證了區(qū)塊鏈為我國(guó)新興數(shù)智化生態(tài)產(chǎn)業(yè)賦能提效。時(shí)至今日,筆者整裝再出發(fā),以區(qū)塊鏈技術(shù)發(fā)展為主線,結(jié)合自身研究應(yīng)用情況,將區(qū)塊鏈1.0~3.0時(shí)代主流技術(shù)(比特幣、以太坊、EOS)總結(jié)編寫成書,旨在幫助區(qū)塊鏈技術(shù)萌新快速掌握區(qū)塊鏈開發(fā)技術(shù)和底層實(shí)現(xiàn)等內(nèi)容。
本書主要內(nèi)容
本書可被視為一本理論與實(shí)踐相結(jié)合的書籍,非常適合具備一定計(jì)算機(jī)科學(xué)與技術(shù)知識(shí)及面向?qū)ο缶幊探?jīng)驗(yàn)的讀者學(xué)習(xí)。 讀者可以在短時(shí)間內(nèi)學(xué)習(xí)本書中介紹的區(qū)塊鏈基礎(chǔ)概念、技術(shù)原理和開發(fā)實(shí)現(xiàn)等內(nèi)容。
全書共9章,既有基礎(chǔ)概念、技術(shù)原理,又有開發(fā)實(shí)現(xiàn)。
第1章為區(qū)塊鏈概念,涵蓋區(qū)塊鏈定義、特點(diǎn)、發(fā)展、分類等基礎(chǔ)概念,基于對(duì)區(qū)塊鏈技術(shù)和發(fā)展的研判,總結(jié)提出區(qū)塊鏈生態(tài)架構(gòu),是全書的基礎(chǔ)框架。
第2章為區(qū)塊鏈技術(shù),涵蓋區(qū)塊鏈數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、合約層、拓展層等技術(shù)原理,是對(duì)第1章區(qū)塊鏈生態(tài)架構(gòu)中技術(shù)協(xié)議層的全面闡述。
第3~9章為開發(fā)實(shí)現(xiàn),涵蓋區(qū)塊鏈1.0~3.0時(shí)代主流區(qū)塊鏈系統(tǒng)(技術(shù)協(xié)議),各系統(tǒng)涉及背景知識(shí)、開發(fā)技術(shù)和底層實(shí)現(xiàn)等內(nèi)容,是對(duì)第2章技術(shù)協(xié)議層不同實(shí)現(xiàn)方式的具體描述。其中,第3、4章重點(diǎn)講述比特幣: 第3章區(qū)塊鏈第一代系統(tǒng)比特幣,包括比特幣基本概念、業(yè)務(wù)流程、技術(shù)協(xié)議各層技術(shù)、改進(jìn)提案及系統(tǒng)搭建等內(nèi)容; 第4章比特幣源碼解析,包括比特幣源碼結(jié)構(gòu)和技術(shù)協(xié)議各層源碼解析。第5~7章重點(diǎn)講述以太坊: 第5章區(qū)塊鏈開發(fā)平臺(tái)以太坊,包括以太坊基本概念、業(yè)務(wù)流程、技術(shù)協(xié)議各層技術(shù)、改進(jìn)提案、系統(tǒng)搭建及合約開發(fā)等內(nèi)容; 第6章以太坊源碼解析(C 版本),是基于C 語(yǔ)言的以太坊源碼結(jié)構(gòu)和技術(shù)協(xié)議各層源碼解析; 第7章以太坊源碼解析(Go版本),是基于Go語(yǔ)言的以太坊源碼結(jié)構(gòu)和技術(shù)協(xié)議各層源碼解析。第8、9章重點(diǎn)講述EOS: 第8章區(qū)塊鏈企業(yè)級(jí)操作系統(tǒng)EOS,包括EOS基本概念、業(yè)務(wù)流程、技術(shù)協(xié)議各層技術(shù)、版本演進(jìn)、系統(tǒng)搭建及合約開發(fā)等內(nèi)容; 第9章EOS源碼解析,包括EOS源碼結(jié)構(gòu)和技術(shù)協(xié)議各層源碼解析。
本書特色
本書具備三全、三新兩大特點(diǎn),具體如下。
(1) 內(nèi)容覆蓋全。本書涵蓋區(qū)塊鏈1.0~3.0時(shí)代主流區(qū)塊鏈系統(tǒng),內(nèi)容豐富多彩。
(2) 技術(shù)知識(shí)全。本書分別講述各區(qū)塊鏈技術(shù)的基本概念、業(yè)務(wù)流程、技術(shù)協(xié)議、系統(tǒng)部署、合約開發(fā)、合約調(diào)用、系統(tǒng)源碼等內(nèi)容,知識(shí)體系全面。
(3) 前后聯(lián)系全。本書基于抽象的數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、合約層等技術(shù)協(xié)議展開,講述不同區(qū)塊鏈系統(tǒng)各層具體技術(shù)與源碼,前后內(nèi)容關(guān)聯(lián)性強(qiáng)。講述內(nèi)容不僅有理論,也有開發(fā)實(shí)戰(zhàn),理論與實(shí)踐聯(lián)系密切。
(4) 技術(shù)版本新。本書講解的各區(qū)塊鏈系統(tǒng)版本較新,避免知識(shí)滯后。
(5) 部署方式新。本書在講解物理機(jī)部署方式的同時(shí),重點(diǎn)講解容器化部署方式,緊跟云原生浪潮。
(6) 編寫方式新。本書以區(qū)塊鏈基礎(chǔ)概念、技術(shù)原理為基礎(chǔ),過渡到主流區(qū)塊鏈系統(tǒng)的開發(fā)實(shí)現(xiàn),內(nèi)容循序漸進(jìn)。在各系統(tǒng)開發(fā)實(shí)現(xiàn)內(nèi)容中,分別介紹了背景知識(shí)、開發(fā)技術(shù)和底層實(shí)現(xiàn),內(nèi)容由淺入深。
配套資源
為便于教與學(xué),本書配有源代碼。獲取源代碼、全書網(wǎng)址的方式: 先刮開并用手機(jī)版微信App掃描本書封底的文泉云盤防盜碼,獲得授權(quán)后再掃描下方二維碼,即可獲取。
源代碼
全書網(wǎng)址
讀者對(duì)象
本書主要面向廣大從事區(qū)塊鏈應(yīng)用與底層開發(fā)的專業(yè)人員、從事高等教育的專任教師、高等院校的在讀學(xué)生及相關(guān)領(lǐng)域的廣大科研人員。
閱讀小貼士
(1) 技術(shù)思維。
筆者想借此機(jī)會(huì)告訴廣大讀者,區(qū)塊鏈技術(shù)協(xié)議大多不是獨(dú)創(chuàng)的,區(qū)塊鏈也不是平地而起的,而是結(jié)合具體應(yīng)用場(chǎng)景和業(yè)務(wù)痛點(diǎn),站在前人的肩膀上,組裝或改造這些技術(shù)協(xié)議,從而構(gòu)建起來(lái)的。在實(shí)際中,希望讀者也能夠借鑒這種模式,在創(chuàng)造或使用一些技術(shù)時(shí),首先要考慮的不是技術(shù)本身的先進(jìn)性,而是創(chuàng)造或使用它們的必要性,例如,政治性和業(yè)務(wù)性。沒有離開政治的業(yè)務(wù),沒有離開業(yè)務(wù)的技術(shù),也沒有離開政治的技術(shù),讀者需要在緊跟政治、業(yè)務(wù)的前提下,以賦能應(yīng)用場(chǎng)景和解決業(yè)務(wù)痛點(diǎn)為出發(fā)點(diǎn),做好這些技術(shù)。
(2) 實(shí)戰(zhàn)思維。
不同區(qū)塊鏈技術(shù)可能衍生不同的網(wǎng)絡(luò)、分支和版本。本書以廣泛的學(xué)習(xí)研究為目的,為讀者介紹了不同區(qū)塊鏈技術(shù)協(xié)議及其源碼實(shí)現(xiàn)。建議讀者根據(jù)實(shí)際情況選擇合適的技術(shù),參考GitHub等資源,進(jìn)行深入的研究和應(yīng)用。
(3) 閱讀重點(diǎn)。
本書在介紹同一區(qū)塊鏈系統(tǒng)時(shí),涵蓋了背景知識(shí)、開發(fā)技術(shù)和底層實(shí)現(xiàn)等內(nèi)容。建議讀者通讀這些內(nèi)容。如果讀者只是以應(yīng)用開發(fā)為目的,不甚關(guān)心系統(tǒng)底層實(shí)現(xiàn),可略過第4、6、7、9章; 如果讀者希望學(xué)習(xí)底層實(shí)現(xiàn),請(qǐng)勿略過第4、6、7、9章。
最后,特別感謝指導(dǎo)、幫助、支持我的領(lǐng)導(dǎo)和同事,特別感謝關(guān)心、理解、包容我的家人和朋友。在本書的編寫過程中,參考了諸多相關(guān)資料,在此衷心感謝相關(guān)作者。
限于個(gè)人水平和時(shí)間倉(cāng)促,書中難免存在疏漏之處,歡迎廣大讀者批評(píng)指正。
筆者2023年1月
第1章區(qū)塊鏈概念
1.1區(qū)塊鏈的定義
1.2區(qū)塊鏈的特點(diǎn)
1.3區(qū)塊鏈的發(fā)展
1.4區(qū)塊鏈的分類
1.5區(qū)塊鏈生態(tài)架構(gòu)
1.5.1區(qū)塊鏈賦能體系結(jié)構(gòu)
1.5.2區(qū)塊鏈能力拓展生態(tài)
第2章區(qū)塊鏈技術(shù)
2.1區(qū)塊鏈技術(shù)協(xié)議
2.2數(shù)據(jù)層
2.2.1哈希函數(shù)
2.2.2加密算法
2.2.3默克爾樹
2.2.4時(shí)間戳
2.2.5賬號(hào)體系
2.2.6交易結(jié)構(gòu)
2.2.7區(qū)塊結(jié)構(gòu)
2.2.8鏈?zhǔn)浇Y(jié)構(gòu)
2.3網(wǎng)絡(luò)層
2.3.1網(wǎng)絡(luò)模型
2.3.2傳輸機(jī)制
2.4共識(shí)層
2.4.1PoW
2.4.2PoS
2.4.3DPoS
2.4.4Raft
2.4.5BFT
2.4.6衍生算法
2.5合約層
2.5.1腳本系統(tǒng)
2.5.2智能合約
2.5.3虛擬機(jī)
2.6拓展層
2.6.1隱私保護(hù)
2.6.2擴(kuò)容協(xié)議
第3章區(qū)塊鏈第一代系統(tǒng)比特幣
3.1比特幣基本概念
3.2比特幣業(yè)務(wù)流程
3.3比特幣數(shù)據(jù)層技術(shù)
3.3.1賬號(hào)
3.3.2交易和UTXO
3.3.3區(qū)塊和鏈?zhǔn)浇Y(jié)構(gòu)
3.4比特幣網(wǎng)絡(luò)層技術(shù)
3.5比特幣共識(shí)層技術(shù)
3.6比特幣合約層技術(shù)
3.7比特幣改進(jìn)提案
3.8比特幣系統(tǒng)搭建
3.8.1系統(tǒng)安裝
3.8.2系統(tǒng)啟動(dòng)
第4章比特幣源碼解析
4.1比特幣源碼結(jié)構(gòu)
4.2比特幣數(shù)據(jù)層源碼
4.2.1交易
4.2.2幣視圖
4.2.3區(qū)塊
4.2.4區(qū)塊鏈
4.3比特幣網(wǎng)絡(luò)層源碼
4.3.1節(jié)點(diǎn)連接
4.3.2交易廣播
4.3.3區(qū)塊批量下載
4.3.4區(qū)塊廣播
4.4比特幣共識(shí)層源碼
4.4.1交易打包
4.4.2區(qū)塊上鏈
4.5比特幣合約層源碼
第5章區(qū)塊鏈開發(fā)平臺(tái)以太坊
5.1以太坊基本概念
5.2以太坊業(yè)務(wù)流程
5.3以太坊數(shù)據(jù)層技術(shù)
5.3.1狀態(tài)和賬號(hào)
5.3.2交易
5.3.3區(qū)塊和鏈?zhǔn)浇Y(jié)構(gòu)
5.4以太坊網(wǎng)絡(luò)層技術(shù)
5.5以太坊共識(shí)層技術(shù)
5.6以太坊合約層技術(shù)
5.6.1Gas
5.6.2智能合約和EVM
5.7以太坊改進(jìn)提案
5.8以太坊系統(tǒng)搭建
5.8.1區(qū)塊鏈搭建(C 版本)
5.8.2區(qū)塊鏈搭建(Go版本)
5.9以太坊合約開發(fā)
5.9.1智能合約環(huán)境搭建
5.9.2智能合約開發(fā)
5.9.3智能合約部署
5.9.4智能合約調(diào)用
5.9.5智能合約詳解
第6章以太坊源碼解析(C 版本)
6.1以太坊源碼結(jié)構(gòu)
6.2以太坊數(shù)據(jù)層源碼
6.2.1賬號(hào)和狀態(tài)
6.2.2交易
6.2.3區(qū)塊
6.2.4區(qū)塊鏈
6.3以太坊網(wǎng)絡(luò)層源碼
6.4以太坊共識(shí)層源碼
6.4.1共識(shí)引擎
6.4.2共識(shí)流程
6.5以太坊合約層源碼
第7章以太坊源碼解析(Go版本)
7.1以太坊源碼結(jié)構(gòu)
7.2以太坊數(shù)據(jù)層源碼
7.2.1賬號(hào)和狀態(tài)
7.2.2交易
7.2.3區(qū)塊
7.2.4區(qū)塊鏈
7.3以太坊網(wǎng)絡(luò)層源碼
7.4以太坊共識(shí)層源碼
7.4.1共識(shí)引擎
7.4.2共識(shí)流程
7.5以太坊合約層源碼
第8章區(qū)塊鏈企業(yè)級(jí)操作系統(tǒng)EOS
8.1EOS基本概念
8.2EOS業(yè)務(wù)流程
8.3EOS數(shù)據(jù)層技術(shù)
8.3.1賬號(hào)和權(quán)限
8.3.2交易和資源
8.3.3區(qū)塊和鏈?zhǔn)浇Y(jié)構(gòu)
8.4EOS網(wǎng)絡(luò)層技術(shù)
8.5EOS共識(shí)層技術(shù)
8.5.1DPoS演進(jìn)
8.5.2共識(shí)準(zhǔn)入
8.5.3共識(shí)流程
8.6EOS合約層技術(shù)
8.6.1WASM
8.6.2系統(tǒng)合約
8.7EOS版本演進(jìn)
8.8EOS系統(tǒng)搭建
8.8.1單節(jié)點(diǎn)搭建
8.8.2智能合約環(huán)境搭建
8.8.3系統(tǒng)合約初始化
8.8.4集群搭建
8.9EOS合約開發(fā)
8.9.1智能合約開發(fā)
8.9.2智能合約部署
8.9.3智能合約調(diào)用
8.9.4智能合約拓展
8.9.5節(jié)點(diǎn)遠(yuǎn)程交互
第9章EOS源碼解析
9.1EOS源碼結(jié)構(gòu)
9.2EOS數(shù)據(jù)層源碼
9.2.1賬號(hào)和權(quán)限
9.2.2交易
9.2.3區(qū)塊
9.2.4區(qū)塊鏈
9.3EOS網(wǎng)絡(luò)層源碼
9.4EOS共識(shí)層源碼
9.4.1共識(shí)準(zhǔn)入
9.4.2共識(shí)流程
9.5EOS合約層源碼
參考文獻(xiàn)