第1章 比特币与区块链 1
1.1 比特币系统 2
1.1.1 比特币简介 2
1.1.2 分布式账本 3
1.1.3 比特币的账户地址 4
1.2 比特币挖矿 5
1.2.1 挖矿的过程 5
1.2.2 矿场与矿池 6
1.3 比特币中的区块链 7
1.3.1 区块头结构 7
1.3.2 区块体结构 9
1.3.3 区块链结构 10
1.3.4 区块的产生 11
1.4 比特币交易 11
1.4.1 交易结构 11
1.4.2 交易的本质 12
1.4.3 比特币的交易过程 14
1.5 区块链的发展 15
1.5.1 区块链1.0 15
1.5.2 区块链2.0 15
1.5.3 区块链3.0 16
1.5.4 区块链4.0 16
1.6 区块链的优势和劣势 17
1.6.1 区块链的优势 17
1.6.2 区块链的劣势 17
1.6.3 区块链面临的问题 19
第2章 区块链的基础知识 21
2.1 区块链的体系架构 22
2.2 区块链的分类 25
2.2.1 根据准入规则划分 25
2.2.2 根据链与链的关系划分 26
2.2.3 根据适用范围划分 27
2.3 密码技术 27
2.3.1 公钥加密体制 27
2.3.2 椭圆曲线密码算法 30
2.4 哈希算法 31
2.4.1 哈希值的特性 31
2.4.2 哈希函数处理过程 32
2.4.3 常用的哈希算法 32
2.4.4 SHA256算法 33
2.5 Merkle树 36
2.5.1 Merkle树的定义 36
2.5.2 各平台中的Merkle树 37
2.5.3 Merkle树遍历算法 38
2.6 区块链的数据模型 40
2.6.1 基于交易的模型 40
2.6.2 基于账户的模型 41
2.7 区块链的关键技术 41
2.7.1 共识机制 41
2.7.2 智能合约 42
第3章 常用的共识算法 43
3.1 共识算法概述 44
3.1.1 共识算法的发展 44
3.1.2 共识算法的模型 47
3.1.3 共识算法的分类 48
3.1.4 共识算法的评价标准 49
3.2 分布式系统一致性问题 50
3.2.1 分布式系统模型 50
3.2.2 一致性重要定理 51
3.2.3 一致性算法 54
3.2.4 区块链的一致性问题 55
3.3 PBFT算法 56
3.3.1 系统假设 56
3.3.2 PBFT算法的角色 56
3.3.3 PBFT算法的共识流程 57
3.4 PoW算法 60
3.4.1 数学难题 60
3.4.2 新区块验证 61
3.4.3 长链法则 61
3.4.4 PoW算法的安全性 62
3.4.5 基于比特币PoW算法的改进 63
3.4.6 BitcoinNG 65
3.4.7 GHOSTPoW共识机制 66
3.5 PoS算法 67
3.5.1 PoS算法的基本思想 67
3.5.2 PoS算法的改进 68
3.5.3 PoS算法的特点 69
3.5.4 基于虚拟挖矿的共识算法 70
3.6 DPoS算法 70
3.7 主流共识算法的性能对比 72
第4章 智能合约 73
4.1 智能合约概述 74
4.1.1 智能合约概念的提出 74
4.1.2 智能合约与区块链 74
4.1.3 智能合约的生命周期 75
4.1.4 智能合约的特点 77
4.2 智能合约架构 79
4.2.1 智能合约模型 79
4.2.2 智能合约基础架构 80
4.3 智能合约的关键技术 83
4.3.1 合约主体 83
4.3.2 数据加载方式 84
4.3.3 执行环境 84
4.3.4 验证方法 85
4.3.5 扩展性的实现 85
4.4 区块链中的智能合约语言 85
4.4.1 智能合约语言 85
4.4.2 比特币脚本语言 86
4.4.3 以太坊图灵完备型语言 87
4.4.4 可验证型语言 87
4.4.5 账本智能合约语言 88
4.4.6 智能合约语言比较 89
4.5 区块链中智能合约的实现技术 90
4.5.1 嵌入式运行 90
4.5.2 虚拟机运行 91
4.5.3 容器式运行 93
4.5.4 以太坊和 账本智能合约的比较 96
4.6 智能合约的应用 97
4.6.1 金融 97
4.6.2 数字货币 98
4.6.3 管理 98
4.6.4 医疗 99
4.6.5 物联网与供应链 99
4.6.6 智能法律合约 100
第5章 区块链开发平台 101
5.1 区块链开发平台简介 102
5.2 以太坊 103
5.2.1 以太坊的特点 103
5.2.2 以太坊的发展阶段 104
5.3 以太坊的基本概念 106
5.3.1 账户 106
5.3.2 交易和消息 107
5.3.3 交易费用 110
5.3.4 以太币 113
5.3.5 以太坊挖矿 114
5.3.6 状态转换 116
5.4 以太坊基础 118
5.4.1 以太坊技术架构 118
5.4.2 以太坊区块结构 120
5.4.3 叔区块 121
5.4.4 Merkle Patricia树 121
5.5 智能合约和以太坊虚拟机 123
5.5.1 EVM 123
5.5.2 智能合约 125
5.6 GHOST协议 126
5.6.1 以太坊的安全问题 126
5.6.2 叔区块的出块奖励 127
5.7 挖矿算法 128
5.7.1 数组定义 128
5.7.2 难度调整 129
5.7.3 权益证明 130
第6章 Solidity编程基础 132
6.1 Solidity语言的开发环境 133
6.1.1 智能合约的开发流程 133
6.1.2 安装Node环境 134
6.1.3 编程工具准备 138
6.2 Solidity程序框架 139
6.2.1 简单的Solidity实例 139
6.2.2 Solidity源文件结构 140
6.2.3 合约文件结构 142
6.3 Solidity语言的数据类型 146
6.3.1 数据类型概述 146
6.3.2 布尔类型 146
6.3.3 整型 146
6.3.4 字节类型 147
6.3.5 枚举类型 147
6.3.6 地址类型 148
6.3.7 数组类型 150
6.3.8 结构类型 151
6.3.9 字符串类型 151
6.3.10 映射 152
6.4 Solidity的控制结构 153
6.4.1 条件语句 153
6.4.2 循环语句 154
6.4.3 三目运算符 156
6.5 Solidity函数 157
6.5.1 函数的定义 157
6.5.2 函数的调用方式 160
6.5.3 构造函数 161
第7章 智能合约实例 163
7.1 电子投票系统 164
7.1.1 电子投票概述 164
7.1.2 主要的数据结构 164
7.1.3 主要的函数解析 165
7.2 公开拍卖系统和盲拍卖系统 168
7.2.1 公开拍卖系统 168
7.2.2 盲拍卖系统 171
7.3 安全的远程购买合约 176
7.3.1 主要的数据结构 177
7.3.2 主要函数解析 177
7.4 微支付通道 179
7.4.1 创建及验证签名 179
7.4.2 简单的支付通道 182
7.4.3 验证支付 185
参考文献 187