GO語言區(qū)塊鏈應(yīng)用開發(fā)從入門到精通
本書全面地介紹了Go語言區(qū)塊鏈應(yīng)用工程師所需要的基礎(chǔ)知識和各種技術(shù),主要分為基礎(chǔ)篇、進階篇和實戰(zhàn)篇三部分。全書共7章,其中1~2章為基礎(chǔ)篇,介紹Go語言環(huán)境安裝、基礎(chǔ)語法、函數(shù)編程、容器編程、面向?qū)ο缶幊、并發(fā)編程以及網(wǎng)絡(luò)編程;3~5章為進階篇,第3章介紹區(qū)塊鏈基本原理、發(fā)展歷程、行業(yè)應(yīng)用案例,第4章主要介紹智能合約,包括solidity基礎(chǔ)語法,多個經(jīng)典案例,以及Go語言如何調(diào)用智能合約,第5章主要介紹區(qū)塊鏈原理的程序化實踐,包括Go語言實現(xiàn)Base58編碼、P2P網(wǎng)絡(luò)、PoW共識、區(qū)塊鏈組塊以及UTXO賬戶模型實現(xiàn);6~7章為實戰(zhàn)篇,介紹2個實戰(zhàn)項目,第6章介紹如何實現(xiàn)Go語言版的區(qū)塊鏈錢包項目,內(nèi)容包括助記詞生成、私鑰存儲、Coin交易以及Token交易等內(nèi)容,第7章介紹如何實現(xiàn)一個版權(quán)交易系統(tǒng),內(nèi)容包含如何去設(shè)計區(qū)塊鏈應(yīng)用系統(tǒng)、后端功能如何與區(qū)塊鏈相結(jié)合,它既是一個區(qū)塊鏈系統(tǒng)應(yīng)用項目,也是一個Go語言Web服務(wù)器項目。本書適合想從事GO語言區(qū)塊鏈開發(fā)的程序員及GO語言愛好者閱讀。
高野,2006年畢業(yè)于吉林大學(xué)計算機科學(xué)與技術(shù)專業(yè),曾先后就職于中國聯(lián)通、恒生電子、飛創(chuàng)科技、傳智播客,現(xiàn)任柏鏈道捷CTO。十多年開發(fā)和授課經(jīng)驗,熟悉以太坊、EOS等主流公鏈以及各聯(lián)盟鏈平臺應(yīng)用開發(fā),研發(fā)了國內(nèi)第一個區(qū)塊鏈應(yīng)用教學(xué)項目——版權(quán)交易系統(tǒng),研發(fā)了國內(nèi)首個EOS應(yīng)用開發(fā)培訓(xùn)課程,多次參加高校師資培訓(xùn)、線上線下教學(xué)和技術(shù)分享活動,培養(yǎng)過的學(xué)生遍布全球。
第1章 初識 Go 語言...· 2
1.1 為什么要學(xué)習(xí) Go 語言 .3
1.1.1 Go 語言的前世今生..... 3
1.1.2 Go 語言能做什么...... 4
1.2 Go 語言開發(fā)環(huán)境搭建.·5
1.2.1 多平臺開發(fā)環(huán)境搭建.... 5
1.2.2 Go 語言 IDE 開發(fā)工具介紹............... 11
實訓(xùn):查看并使用 Go 語言命令行幫助手冊......... 13
本章總結(jié) ... 15
第2章 Go 語言基礎(chǔ)語法................ 16
2.1 數(shù)據(jù)類型與定義 .... 17
2.1.1 數(shù)據(jù)類型豐富........17
2.1.2 如何定義變量.......· 18
2.1.3 如何定義常量.......· 20
2.1.4 如何優(yōu)雅地定義枚舉類型................ 21
2.1.5 不用害怕指針.......· 23
2.2 分支與循環(huán) ....... 24
2.2.1 if 語句的寫法 .......· 24
2.2.2 一個關(guān)鍵字支持所有循環(huán)方式............. 26
2.3 函數(shù) ..· 27
2.3.1 Go 語言函數(shù)的特色....·27
2.3.2 函數(shù)閉包..........· 30
2.4 容器編程 ........· 33
2.4.1 數(shù)組的使用......... 34
2.4.2 什么是切片......... 36
2.4.3 map 的使用......... 38
2.5 面向?qū)ο缶幊?.....· 41
2.5.1 自定義結(jié)構(gòu)......... 41
2.5.2 方法封裝..........· 42
2.5.3 結(jié)構(gòu)體內(nèi)嵌......... 44
2.5.4 接口....· 47
2.6 并發(fā)編程 ........· 49
2.6.1 并發(fā)的概念與 Go 并發(fā)的設(shè)計.............· 50
2.6.2 并發(fā)經(jīng)典案例.......· 52
2.6.3 同步與 channel......· 54
2.6.4 單方向 channel......· 58
2.6.5 定時器... 62
2.7 網(wǎng)絡(luò)編程......... 63
2.7.1 文件 IO 處理 ........ 64
2.7.2 TCP 協(xié)議簡介 ....... 68
2.7.3 TCP 服務(wù)器搭建 .....· 70
2.7.4 HTTP 協(xié)議簡介 ......75
2.7.5 HTTP 服務(wù)器搭建 ....·77
實訓(xùn):基于 TCP 協(xié)議的并發(fā)聊天室 ..............79
本章總結(jié) ... 86
第3章 區(qū)塊鏈原理、發(fā)展與應(yīng)用..........· 88
3.1 區(qū)塊鏈基本原理 .... 89
3.1.1 區(qū)塊鏈技術(shù)為什么會產(chǎn)生................ 89
3.1.2 什么是 hash 函數(shù) ..... 90
3.1.3 P2P 網(wǎng)絡(luò)簡介.......· 92
3.1.4 PoW 共識算法....... 93
3.1.5 UTXO 模型 ........· 94
3.2 區(qū)塊鏈發(fā)展歷程 .... 95
3.2.1 區(qū)塊鏈發(fā)展現(xiàn)狀...... 95
3.2.2 區(qū)塊鏈 2.0 時代 ......·97
3.2.3 區(qū)塊鏈行業(yè)未來展望...·97
3.3 區(qū)塊鏈開發(fā)技術(shù)選型 . 98
3.3.1 DApp 架構(gòu)分析......· 98
3.3.2 公鏈與聯(lián)盟鏈之爭....· 99
3.4 區(qū)塊鏈行業(yè)應(yīng)用示例 ................ 100
3.4.1 數(shù)字金融..........100
3.4.2 電子存證..........101
3.4.3 食品安全..........103
實訓(xùn):區(qū)塊鏈理論在線 demo 演示 ..............104
本章總結(jié) .. 104
第4章 Go 語言區(qū)塊鏈初級應(yīng)用開發(fā).......· 105
4.1 智能合約開發(fā) ....· 106
4.1.1 合約開發(fā)環(huán)境搭建....106
4.1.2 初識 Solidity.......·114
4.1.3 智能合約有哪些數(shù)據(jù)類型...............·122
4.1.4 什么是內(nèi)建對象.....·126
4.1.5 智能合約的函數(shù).....·128
4.1.6 函數(shù)修飾符........·132
4.1.7 巧用復(fù)合類型 ......133
4.1.8 斷言處理與自定義修飾符 ..............·136
4.1.9 經(jīng)典智能合約案例....138
4.1.10 智能合約開發(fā)技巧 ...146
4.2 Go 語言與智能合約調(diào)用..............·154
4.2.1 合約函數(shù)如何被調(diào)用..·154
4.2.2 智能合約被調(diào)用的基本步驟..............154
4.2.3 調(diào)用合約時如何簽名..·160
4.2.4 如何訂閱合約的 event.·163
實訓(xùn):編寫一個銀行合約....168
本章總結(jié) ..·169
第5章 Go 語言區(qū)塊鏈高級應(yīng)用開發(fā).......· 170
5.1 Go 語言與區(qū)塊鏈開發(fā)準備.............171
5.1.1 Go 語言與 hash 函數(shù)..·171
5.1.2 Go 語言與 Base58 編碼 ................·172
5.1.3 Go 語言與默克爾樹...·174
5.1.4 Go 語言實現(xiàn) P2P 網(wǎng)絡(luò).·178
5.2 Go 語言實現(xiàn) PoW 共識算法 ............183
5.2.1 區(qū)塊定義與數(shù)據(jù)串行化.183
5.2.2 PoW 算法實現(xiàn)......·186
5.3 區(qū)塊數(shù)據(jù)如何持久化 ................ 190
5.3.1 Go 語言與 boltDB 實戰(zhàn).190
5.3.2 區(qū)塊數(shù)據(jù)如何持久化 .·192
5.3.3 區(qū)塊數(shù)據(jù)如何遍歷 ...195
5.4 Go 語言實現(xiàn) UTXO 模型..............196
5.4.1 如何定義交易.......197
5.4.2 如何判斷 CoinBase 交易................199
5.4.3 如何使用 CoinBase 交易................199
5.4.4 如何查找賬戶的 UTXO ................·203
5.4.5 如何發(fā)送交易.......206
5.5 區(qū)塊鏈賬戶地址如何生成 .............·210
5.5.1 公鑰加密與數(shù)字簽名 .·210
5.5.2 生成區(qū)塊鏈賬戶地址..·213
實訓(xùn):結(jié)合區(qū)塊鏈賬戶地址,發(fā)送區(qū)塊鏈交易......·217
本章總結(jié) ..·218
第6章 Go 語言離線錢包開發(fā)............220
6.1 區(qū)塊鏈錢包原理 ...·221
6.1.1 區(qū)塊鏈錢包的核心原理.221
6.1.2 助記詞如何生成與驗證.223
6.1.3 如何存儲私鑰.......230
6.2 區(qū)塊鏈錢包核心功能實現(xiàn) .............·237
6.2.1 flag 使用與開發(fā)框架搭建 ...............·238
6.2.2 錢包如何支持 Coin 轉(zhuǎn)移 ................241
6.2.3 錢包如何支持 Coin 查詢 ................246
6.2.4 ERC-20 標準與實現(xiàn) ..·248
6.2.5 錢包如何支持 token 轉(zhuǎn)移...............·254
6.2.6 錢包如何支持 token 查詢...............·256
6.2.7 交易明細查詢.......257
本章總結(jié) ..·261
第7章 Go 語言圖片版權(quán)交易系統(tǒng)開發(fā)......262
7.1 項目需求分析與通證設(shè)計 .............·263
7.1.1 項目需求與痛點分析..·263
7.1.2 項目整體設(shè)計.......264
7.1.3 ERC-721 標準與實現(xiàn)..265
7.2 項目核心功能實現(xiàn) ..276
7.2.1 Go 語言 Echo 框架搭建 ................·276
7.2.2 注冊實現(xiàn)..........281
7.2.3 登錄與 session 處理...285
7.2.4 圖片上傳處理.......289
7.2.5 拍賣功能實現(xiàn).......298
7.2.6 投票功能實現(xiàn).......308
本章總結(jié) ..·311
參考文獻.. 312