第1章 初识 Go 语言 2

1.1 为什么要学习 Go 语言 3

1.1.1 Go 语言的前世今生 3

1.1.2 Go 语言能做什么 4

1.2 Go 语言开发环境搭建5

1.2.1 多平台开发环境搭建 5

1.2.2 Go 语言 IDE 开发工具介绍 11

实训:查看并使用 Go 语言命令行帮助手册13

本章总结 15

第2章 Go 语言基础语法 16

2.1 数据类型与定义 17

2.1.1 数据类型丰富17

2.1.2 如何定义变量 18

2.1.3 如何定义常量 20

2.1.4 如何优雅地定义枚举类型 21

2.1.5 不用害怕指针 23

2.2 分支与循环 24

2.2.1 if 语句的写法 24

2.2.2 一个关键字支持所有循环方式. 26

2.3 函数 27

2.3.1 Go 语言函数的特色27

2.3.2 函数闭包30

2.4 容器编程 33

2.4.1 数组的使用 34

2.4.2 什么是切片 36

2.4.3 map 的使用 38

2.5 面向对象编程 41

2.5.1 自定义结构 41

2.5.2 方法封装 42

2.5.3 结构体内嵌 44

2.5.4 接口47

2.6 并发编程 49

2.6.1 并发的概念与 Go 并发的设计50

2.6.2 并发经典案例52

2.6.3 同步与 channel54

2.6.4 单方向 channel 58

2.6.5 定时器62

2.7 网络编程 63

2.7.1 文件 IO 处理 64

2.7.2 TCP 协议简介 68

2.7.3 TCP 服务器搭建 70

2.7.4 HTTP 协议简介 75

2.7.5 HTTP 服务器搭建77

实训:基于 TCP 协议的并发聊天室 79

本章总结 . 86

第3章 区块链原理、发展与应用88

3.1 区块链基本原理 89

3.1.1 区块链技术为什么会产生 89

3.1.2 什么是 hash 函数 90

3.1.3 P2P 网络简介92

3.1.4 PoW 共识算法 93

3.1.5 UTXO 模型 94

3.2 区块链发展历程 95

3.2.1 区块链发展现状 95

3.2.2 区块链 2.0 时代 97

3.2.3 区块链行业未来展望97

3.3 区块链开发技术选型 98

3.3.1 DApp 架构分析 98

3.3.2 公链与联盟链之争 99

3.4 区块链行业应用示例 100

3.4.1 数字金融100

3.4.2 电子存证101

3.4.3 食品安全103

实训:区块链理论在线 demo 演示 104

本章总结 104

第4章 Go 语言区块链初级应用开发105

4.1 智能合约开发 106

4.1.1 合约开发环境搭建106

4.1.2 初识 Solidity114

4.1.3 智能合约有哪些数据类型122

4.1.4 什么是内建对象126

4.1.5 智能合约的函数128

4.1.6 函数修饰符132

4.1.7 巧用复合类型 133

4.1.8 断言处理与自定义修饰符 136

4.1.9 经典智能合约案例138

4.1.10 智能合约开发技巧 146

4.2 Go 语言与智能合约调用154

4.2.1 合约函数如何被调用154

4.2.2 智能合约被调用的基本步骤154

4.2.3 调用合约时如何签名160

4.2.4 如何订阅合约的 event163

实训:编写一个银行合约168

本章总结 169

第5章 Go 语言区块链高级应用开发 170

5.1 Go 语言与区块链开发准备171

5.1.1 Go 语言与 hash 函数171

5.1.2 Go 语言与 Base58 编码 172

5.1.3 Go 语言与默克尔树174

5.1.4 Go 语言实现 P2P 网络178

5.2 Go 语言实现 PoW 共识算法 183

5.2.1 区块定义与数据串行化183

5.2.2 PoW 算法实现186

5.3 区块数据如何持久化 190

5.3.1 Go 语言与 boltDB 实战190

5.3.2 区块数据如何持久化 192

5.3.3 区块数据如何遍历 195

5.4 Go 语言实现 UTXO 模型196

5.4.1 如何定义交易197

5.4.2 如何判断 CoinBase 交易199

5.4.3 如何使用 CoinBase 交易199

5.4.4 如何查找账户的 UTXO 203

5.4.5 如何发送交易206

5.5 区块链账户地址如何生成 210

5.5.1 公钥加密与数字签名 210

5.5.2 生成区块链账户地址213

实训:结合区块链账户地址,发送区块链交易217

本章总结 218

第6章 Go 语言离线钱包开发220

6.1 区块链钱包原理 221

6.1.1 区块链钱包的核心原理221

6.1.2 助记词如何生成与验证223

6.1.3 如何存储私钥230

6.2 区块链钱包核心功能实现 237

6.2.1 flag 使用与开发框架搭建 238

6.2.2 钱包如何支持 Coin 转移 241

6.2.3 钱包如何支持 Coin 查询 246

6.2.4 ERC-20 标准与实现 248

6.2.5 钱包如何支持 token 转移254

6.2.6 钱包如何支持 token 查询256

6.2.7 交易明细查询257

本章总结 261

第7章 Go 语言图片版权交易系统开发262

7.1 项目需求分析与通证设计 263

7.1.1 项目需求与痛点分析263

7.1.2 项目整体设计264

7.1.3 ERC-721 标准与实现265

7.2 项目核心功能实现 276

7.2.1 Go 语言 Echo 框架搭建 276

7.2.2 注册实现281

7.2.3 登录与 session 处理285

7.2.4 图片上传处理289

7.2.5 拍卖功能实现298

7.2.6 投票功能实现308

本章总结 311

参考文献 312