區(qū)塊鏈(Blockchain)被認(rèn)為是繼蒸汽機(jī)、電力、信息、互聯(lián)網(wǎng)之后,第五個最有潛力引發(fā)顛覆性革命的核心技術(shù)。它是數(shù)字化資產(chǎn)的分布式賬本,是構(gòu)建價值互聯(lián)網(wǎng)的基石,是驅(qū)動分享經(jīng)濟(jì)發(fā)展的新引擎。區(qū)塊鏈的共識算法、密碼學(xué)以及數(shù)據(jù)庫等技術(shù)手段,在商品溯源、跨境支付、供應(yīng)鏈金融等方面已有實(shí)際應(yīng)用。
本書首先介紹比特幣的相關(guān)技術(shù)和理念,進(jìn)而介紹區(qū)塊鏈的共識算法、密碼學(xué)等知識,最后帶領(lǐng)讀者搭建基于Hyperledger Fabric的區(qū)塊鏈環(huán)境與應(yīng)用。
本書內(nèi)容由淺入深,理論與實(shí)踐相結(jié)合,既適合區(qū)塊鏈的入門者,也適合從事與區(qū)塊鏈相關(guān)專業(yè)的人員參考。
為何寫作本書
近年來區(qū)塊鏈技術(shù)迅猛發(fā)展,各種基于區(qū)塊鏈的創(chuàng)新和應(yīng)用層出不窮。作為下一代互聯(lián)網(wǎng)的底層技術(shù),區(qū)塊鏈已正式被納入戰(zhàn)略性前瞻性領(lǐng)域,其在推動數(shù)字產(chǎn)業(yè)化、健全完善數(shù)字經(jīng)濟(jì)治理體系等方面發(fā)揮著重要作用,F(xiàn)實(shí)中人們經(jīng)常將區(qū)塊鏈技術(shù)和金融、投資等畫上等號,實(shí)際上,區(qū)塊鏈本質(zhì)上作為一種去中心化的分布式賬本技術(shù),已經(jīng)滲透到各行各業(yè),區(qū)塊鏈對推動企業(yè)數(shù)字化轉(zhuǎn)型,促進(jìn)產(chǎn)業(yè)數(shù)字化發(fā)展,推進(jìn)數(shù)字中國建設(shè)都起著強(qiáng)大的支撐作用。當(dāng)前,政策疊加效應(yīng)深度釋放,我國區(qū)塊鏈產(chǎn)業(yè)發(fā)展駛?cè)搿翱燔嚨馈,已?jīng)成為驅(qū)動數(shù)字經(jīng)濟(jì)高質(zhì)量發(fā)展的重要引擎。
區(qū)塊鏈作為一種新興技術(shù),在繁榮和飛速發(fā)展的背后也隱藏著危機(jī)。目前區(qū)塊鏈技術(shù)在實(shí)際應(yīng)用中還存在以下困難:
1)系統(tǒng)的學(xué)習(xí)資料較少。區(qū)塊鏈?zhǔn)墙鼛啄甑男屡d技術(shù),目前有關(guān)區(qū)塊鏈較為系統(tǒng)的資料比較少。
2)技術(shù)方向繁雜。區(qū)塊鏈?zhǔn)且豁?xiàng)融合了P2P、共識機(jī)制、密碼學(xué)等的綜合性技術(shù),且技術(shù)之間存在關(guān)聯(lián)。
3)有關(guān)區(qū)塊鏈的實(shí)驗(yàn)環(huán)境和案例難以搭建。區(qū)塊鏈?zhǔn)且婚T新技術(shù),缺乏比較成功的案例;即使一些行業(yè)頭部公司開發(fā)了個別成功案例,但是目前并沒有公開,這些都會給區(qū)塊鏈的實(shí)際應(yīng)用造成一定的阻礙。
本書由淺入深,避免區(qū)塊鏈的愛好者們因?yàn)樯願W的技術(shù)知識而對區(qū)塊鏈望而卻步,我們希望讀者通過這本書,在深入理解區(qū)塊鏈的核心技術(shù)的同時,也能夠?qū)^(qū)塊鏈付諸實(shí)踐,進(jìn)而解決現(xiàn)有技術(shù)無法解決的行業(yè)痛點(diǎn)。
讀者對象
本書適合區(qū)塊鏈技術(shù)愛好者以及入門者,對比特幣、以太坊感興趣的相關(guān)學(xué)者以及相關(guān)產(chǎn)業(yè)技術(shù)人員閱讀。
主要內(nèi)容
本書先對比特幣、以太坊這兩個典型區(qū)塊鏈平臺的理論進(jìn)行了介紹,然后深入解析其中蘊(yùn)含的密碼學(xué)以及共識機(jī)制的方法原理,最后以Hyperledger Fabric為實(shí)戰(zhàn)平臺,提供實(shí)戰(zhàn)項(xiàng)目案例,展示代碼示例供讀者參考。
區(qū)塊鏈理論與實(shí)戰(zhàn)
前言
全書共5章。
第1章:首先對比特幣的背景以及特性進(jìn)行介紹,進(jìn)而講解比特幣的數(shù)據(jù)結(jié)構(gòu),包括哈希指針、默克爾樹和區(qū)塊結(jié)構(gòu),然后深入解析比特幣的交易模型、挖礦過程等,幫助讀者深入了解比特幣。
第2章:通過以太坊的基本概述、賬戶、數(shù)據(jù)結(jié)構(gòu)、Ghost協(xié)議以及挖礦這五個方面,系統(tǒng)地介紹了以太坊的結(jié)構(gòu)以及應(yīng)用。
第3章:從密碼學(xué)的概念和發(fā)展歷程、區(qū)塊鏈中的哈希函數(shù)、主要的非對稱加密算法、數(shù)字簽名及零知識證明等方面,系統(tǒng)介紹了區(qū)塊鏈安全的保障——密碼學(xué)。區(qū)塊鏈之所以能夠解決人與人之間的信任問題,是因?yàn)樗牟豢纱鄹男裕@種特性本質(zhì)上又是基于密碼學(xué)算法來實(shí)現(xiàn)的。
第4章:介紹并深入探討經(jīng)典的分布式一致算法,包括Paxos、PoW、PoS以及PBFT。一致性問題是分布式領(lǐng)域最基礎(chǔ)、最重要的問題,也是半個世紀(jì)以來的研究熱點(diǎn)。分布式系統(tǒng)中如何保證共識是個經(jīng)典問題,無論在學(xué)術(shù)方面還是在工程方面都有很高的研究價值。通過本章的學(xué)習(xí),讀者可以體會到在工程應(yīng)用中的類似設(shè)計(jì)技巧。
第5章:將理論知識付諸實(shí)踐,帶領(lǐng)讀者詳細(xì)部署搭建Hyperledger Fabric環(huán)境,并進(jìn)行實(shí)例開發(fā),包括Fabric的技術(shù)特性、安裝和使用、智能合約的部署以及食品溯源等項(xiàng)目的開發(fā)。
我國采取了一系列措施全面整治虛擬貨幣和“挖礦”活動,本書選取國外實(shí)例進(jìn)行介紹,展示區(qū)塊鏈技術(shù)在全球范圍內(nèi)的發(fā)展現(xiàn)狀。
本書第1~2章由強(qiáng)彥教授編寫,第3~4章由趙涓涓教授編寫,第5章由王盈森編寫。原鐳明、段亞紅、王威雄、索遙、徐佳正等項(xiàng)目組成員做了大量的資料準(zhǔn)備、文檔整理和代碼調(diào)試工作。全書由強(qiáng)彥教授統(tǒng)稿。
主要特色
本書是作者深入研究區(qū)塊鏈并參與諸多區(qū)塊鏈項(xiàng)目后總結(jié)而成的,具有以下特點(diǎn):
1)基礎(chǔ)知識和高深理論相結(jié)合,由淺入深,由理論到實(shí)踐,逐步引導(dǎo)讀者深入理解區(qū)塊鏈技術(shù)的精髓。
2)提供大量細(xì)致的源代碼和實(shí)戰(zhàn)步驟,通過這些源代碼,讀者可以進(jìn)行區(qū)塊鏈的操作和項(xiàng)目開發(fā)。
致謝
本書能夠完成首先要感謝機(jī)械工業(yè)出版社的工作人員為本書順利出版付出的努力。同時感謝團(tuán)隊(duì)和對本書的編寫提供幫助的所有朋友。
編著者
CONTENTS
目錄
前言
第1章比特幣
1.1比特幣概述
1.1.1比特幣的特性
1.1.2比特幣的發(fā)展背景
1.1.3比特幣的意義和價值
1.2比特幣數(shù)據(jù)結(jié)構(gòu)
1.2.1比特幣的密碼學(xué)原理
1.2.2哈希指針
1.2.3默克爾樹(Merkle Tree)的基本概念與結(jié)構(gòu)
1.2.4區(qū)塊結(jié)構(gòu)
1.2.5全節(jié)點(diǎn)和輕節(jié)點(diǎn)
1.3比特幣交易
1.3.1鑄幣(CoinBase)交易
1.3.2UTXO交易模型
1.4比特幣中的挖礦
1.4.1挖礦原理
1.4.2挖礦過程的概率分析
1.4.3比特幣總量計(jì)算
1.4.4挖礦難度
1.4.5挖礦設(shè)備及礦池的演化
1.5身份認(rèn)證
1.5.1傳統(tǒng)認(rèn)證方式
1.5.2電子簽名
1.6挖礦攻擊
1.6.1背景
1.6.2分叉
1.6.3攻擊方式
1.7本章小結(jié)
1.8參考文獻(xiàn)
第2章以太坊(Ethereum)
2.1Ethereum概述
2.1.1Ethereum與去中心化思想
2.1.2Ethereum與BTC
2.1.3Ethereum的創(chuàng)新——“智能合約”
2.1.4關(guān)于Ethereum
2.2Ethereum的賬戶
2.2.1Ethereum賬戶(Ethereum Accounts)
2.2.2公鑰與私鑰
2.2.3BTC轉(zhuǎn)賬機(jī)制(UTXO)和Ethereum轉(zhuǎn)賬機(jī)制(Accounts)
2.3Ethereum中的數(shù)據(jù)結(jié)構(gòu)
區(qū)塊鏈理論與實(shí)戰(zhàn)
目錄
2.3.1默克爾帕特里夏樹(MPT)
2.3.2狀態(tài)樹
2.3.3交易樹與收據(jù)樹
2.3.4戶存儲樹
2.3.5Ethereum數(shù)據(jù)結(jié)構(gòu)小結(jié)
2.3.6Bloom Filter
2.4Ghost協(xié)議
2.4.1概述
2.4.2Ghost規(guī)則
2.4.3叔父塊的定義
2.4.4叔父塊的特點(diǎn)
2.4.5獎勵公式
2.5Ethereum中的挖礦
2.5.1Ethereum挖礦與BTC挖礦
2.5.2挖礦介紹
2.5.3挖礦算力
2.5.4礦池
2.5.5挖礦算法
2.5.6補(bǔ)充
2.6本章小結(jié)
2.7參考文獻(xiàn)
第3章區(qū)塊鏈安全的保障——密碼學(xué)
3.1密碼學(xué)概述
3.1.1密碼學(xué)的概念及分類
3.1.2密碼學(xué)的發(fā)展歷程
3.2區(qū)塊鏈中的密碼算法
3.2.1哈希函數(shù)
3.2.2基于哈希加密的默克爾樹(Merkle Tree)
3.3密碼算法
3.3.1RSA算法概述
3.3.2RSA算法密鑰生成過程
3.3.3RSA算法的加密和解密
3.3.4RSA算法的設(shè)計(jì)流程
3.3.5橢圓曲線密碼算法
3.3.6Diffie-Hellman密鑰交換算法
3.4數(shù)字簽名
3.5零知識證明
3.5.1QAP問題
3.5.2簡潔性問題
3.5.3同態(tài)隱藏
3.5.4KCA——解決“答非所問”問題
3.6本章小結(jié)
3.7參考文獻(xiàn)
第4章分布式系統(tǒng)核心技術(shù)
4.1一致性問題
4.1.1FLP不可能原理
4.1.2CAP原理
4.1.3ACID原則與多階段提交
4.2經(jīng)典分布式共識算法
4.2.1Paxos算法與Raft算法
4.2.2拜占庭問題與PBFT算法
4.3區(qū)塊鏈共識機(jī)制
4.3.1工作量證明(PoW)
4.3.2權(quán)益證明(PoS)
4.3.3委任權(quán)益證明(DPoS)
4.4本章小結(jié)
4.5參考文獻(xiàn)
第5章基于Hyperledger Fabric的區(qū)塊鏈應(yīng)用案例
5.1Hyperledger Fabric簡介
5.1.1模塊化
5.1.2許可和非許可區(qū)塊鏈
5.1.3智能合約
5.1.4隱私和保密性
5.2Fabric安裝與部署
5.2.1創(chuàng)建ubuntu 20.04虛擬機(jī)
5.2.2安裝基礎(chǔ)軟件
5.2.3安裝Go語言
5.2.4安裝Docker和Docker-compose
5.2.5拉取Fabric開源項(xiàng)目
5.2.6bootstrap.sh腳本運(yùn)行失敗
5.3密碼學(xué)實(shí)驗(yàn)
5.3.1用Java構(gòu)建簡單區(qū)塊鏈
5.3.2SHA256的具體實(shí)現(xiàn)
5.3.3區(qū)塊鏈存儲系統(tǒng)
5.4食品溯源
5.4.1項(xiàng)目環(huán)境
5.4.2hyperledger-simple-app
5.4.3url & json 格式
5.4.4部署于服務(wù)器
5.5以太坊智能合約實(shí)驗(yàn)
5.5.1實(shí)驗(yàn)部分
5.5.2實(shí)驗(yàn)1:開發(fā)第一個智能合約HelloWorld
5.5.3實(shí)驗(yàn)2:投票智能合約
5.5.4實(shí)驗(yàn)3:教學(xué)成績錄入
5.5.5實(shí)驗(yàn)4:Solidity基本語法
5.5.6實(shí)驗(yàn)5:ICO
5.5.7實(shí)驗(yàn)6:二手車交易
5.6參考文獻(xiàn)