GO語言區(qū)塊鏈應(yīng)用開發(fā)從入門到精通
本書全面地介紹了Go語言區(qū)塊鏈應(yīng)用工程師所需要的基礎(chǔ)知識(shí)和各種技術(shù),主要分為基礎(chǔ)篇、進(jìn)階篇和實(shí)戰(zhàn)篇三部分。全書共7章,其中1~2章為基礎(chǔ)篇,介紹Go語言環(huán)境安裝、基礎(chǔ)語法、函數(shù)編程、容器編程、面向?qū)ο缶幊獭⒉l(fā)編程以及網(wǎng)絡(luò)編程;3~5章為進(jìn)階篇,第3章介紹區(qū)塊鏈基本原理、發(fā)展歷程、行業(yè)應(yīng)用案例,第4章主要介紹智能合約,包括solidity基礎(chǔ)語法,多個(gè)經(jīng)典案例,以及Go語言如何調(diào)用智能合約,第5章主要介紹區(qū)塊鏈原理的程序化實(shí)踐,包括Go語言實(shí)現(xiàn)Base58編碼、P2P網(wǎng)絡(luò)、PoW共識(shí)、區(qū)塊鏈組塊以及UTXO賬戶模型實(shí)現(xiàn);6~7章為實(shí)戰(zhàn)篇,介紹2個(gè)實(shí)戰(zhàn)項(xiàng)目,第6章介紹如何實(shí)現(xiàn)Go語言版的區(qū)塊鏈錢包項(xiàng)目,內(nèi)容包括助記詞生成、私鑰存儲(chǔ)、Coin交易以及Token交易等內(nèi)容,第7章介紹如何實(shí)現(xiàn)一個(gè)版權(quán)交易系統(tǒng),內(nèi)容包含如何去設(shè)計(jì)區(qū)塊鏈應(yīng)用系統(tǒng)、后端功能如何與區(qū)塊鏈相結(jié)合,它既是一個(gè)區(qū)塊鏈系統(tǒng)應(yīng)用項(xiàng)目,也是一個(gè)Go語言Web服務(wù)器項(xiàng)目。本書適合想從事GO語言區(qū)塊鏈開發(fā)的程序員及GO語言愛好者閱讀。
高野,2006年畢業(yè)于吉林大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè),曾先后就職于中國聯(lián)通、恒生電子、飛創(chuàng)科技、傳智播客,現(xiàn)任柏鏈道捷CTO。十多年開發(fā)和授課經(jīng)驗(yàn),熟悉以太坊、EOS等主流公鏈以及各聯(lián)盟鏈平臺(tái)應(yīng)用開發(fā),研發(fā)了國內(nèi)第一個(gè)區(qū)塊鏈應(yīng)用教學(xué)項(xiàng)目——版權(quán)交易系統(tǒng),研發(fā)了國內(nèi)首個(gè)EOS應(yīng)用開發(fā)培訓(xùn)課程,多次參加高校師資培訓(xùn)、線上線下教學(xué)和技術(shù)分享活動(dòng),培養(yǎng)過的學(xué)生遍布全球。
第1章 初識(shí) 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 多平臺(tái)開發(fā)環(huán)境搭建.... 5
1.2.2 Go 語言 IDE 開發(fā)工具介紹............... 11
實(shí)訓(xùn):查看并使用 Go 語言命令行幫助手冊(cè)......... 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 一個(gè)關(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è)計(jì).............· 50
2.6.2 并發(fā)經(jīng)典案例.......· 52
2.6.3 同步與 channel......· 54
2.6.4 單方向 channel......· 58
2.6.5 定時(shí)器... 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
實(shí)訓(xùn):基于 TCP 協(xié)議的并發(fā)聊天室 ..............79
本章總結(jié) ... 86
第3章 區(qū)塊鏈原理、發(fā)展與應(yīng)用..........· 88
3.1 區(qū)塊鏈基本原理 .... 89
3.1.1 區(qū)塊鏈技術(shù)為什么會(huì)產(chǎn)生................ 89
3.1.2 什么是 hash 函數(shù) ..... 90
3.1.3 P2P 網(wǎng)絡(luò)簡介.......· 92
3.1.4 PoW 共識(shí)算法....... 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 時(shí)代 ......·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
實(shí)訓(xùn):區(qū)塊鏈理論在線 demo 演示 ..............104
本章總結(jié) .. 104
第4章 Go 語言區(qū)塊鏈初級(jí)應(yīng)用開發(fā).......· 105
4.1 智能合約開發(fā) ....· 106
4.1.1 合約開發(fā)環(huán)境搭建....106
4.1.2 初識(shí) Solidity.......·114
4.1.3 智能合約有哪些數(shù)據(jù)類型...............·122
4.1.4 什么是內(nèi)建對(duì)象.....·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)用合約時(shí)如何簽名..·160
4.2.4 如何訂閱合約的 event.·163
實(shí)訓(xùn):編寫一個(gè)銀行合約....168
本章總結(jié) ..·169
第5章 Go 語言區(qū)塊鏈高級(jí)應(yīng)用開發(fā).......· 170
5.1 Go 語言與區(qū)塊鏈開發(fā)準(zhǔn)備.............171
5.1.1 Go 語言與 hash 函數(shù)..·171
5.1.2 Go 語言與 Base58 編碼 ................·172
5.1.3 Go 語言與默克爾樹...·174
5.1.4 Go 語言實(shí)現(xiàn) P2P 網(wǎng)絡(luò).·178
5.2 Go 語言實(shí)現(xiàn) PoW 共識(shí)算法 ............183
5.2.1 區(qū)塊定義與數(shù)據(jù)串行化.183
5.2.2 PoW 算法實(shí)現(xiàn)......·186
5.3 區(qū)塊數(shù)據(jù)如何持久化 ................ 190
5.3.1 Go 語言與 boltDB 實(shí)戰(zhàn).190
5.3.2 區(qū)塊數(shù)據(jù)如何持久化 .·192
5.3.3 區(qū)塊數(shù)據(jù)如何遍歷 ...195
5.4 Go 語言實(shí)現(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
實(shí)訓(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 助記詞如何生成與驗(yàn)證.223
6.1.3 如何存儲(chǔ)私鑰.......230
6.2 區(qū)塊鏈錢包核心功能實(shí)現(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 標(biāo)準(zhǔn)與實(shí)現(xiàn) ..·248
6.2.5 錢包如何支持 token 轉(zhuǎn)移...............·254
6.2.6 錢包如何支持 token 查詢...............·256
6.2.7 交易明細(xì)查詢.......257
本章總結(jié) ..·261
第7章 Go 語言圖片版權(quán)交易系統(tǒng)開發(fā)......262
7.1 項(xiàng)目需求分析與通證設(shè)計(jì) .............·263
7.1.1 項(xiàng)目需求與痛點(diǎn)分析..·263
7.1.2 項(xiàng)目整體設(shè)計(jì).......264
7.1.3 ERC-721 標(biāo)準(zhǔn)與實(shí)現(xiàn)..265
7.2 項(xiàng)目核心功能實(shí)現(xiàn) ..276
7.2.1 Go 語言 Echo 框架搭建 ................·276
7.2.2 注冊(cè)實(shí)現(xiàn)..........281
7.2.3 登錄與 session 處理...285
7.2.4 圖片上傳處理.......289
7.2.5 拍賣功能實(shí)現(xiàn).......298
7.2.6 投票功能實(shí)現(xiàn).......308
本章總結(jié) ..·311
參考文獻(xiàn).. 312