第0章 导言 1
0.1 区块链技术体系分类 2
0.2 网络层 3
0.3 共识层 4
0.4 数据层 4
0.5 智能合约层 5
0.6 应用层 6
0.7 本书目的 6
0.8 阅读建议 7
0.9 勘误和支持 7
0.10 致谢 8
第1章 密码学基础 9
1.1 基本元素 11
1.2 对称加密 12
1.3 非对称加密 13
1.4 混合加密 14
1.5 哈希算法 14
1.6 数字签名 16
1.7 可信通信 20
1.7.1 TLS协议 20
1.7.2 双向认证 22
1.8 ECDH密钥协商 23
1.9 身份验证 25
1.10 数字证书 26
1.10.1 数字证书结构 27
1.10.2 数字证书类型 29
1.10.3 数字证书编码 30
1.10.4 简单应用 31
1.11 PKI体系 32
1.12 证书链 34
1.13 可信执行环境 36
第2章 网络层 38
2.1 集中式网络 39
2.2 纯分布式网络 40
2.2.1 Gossip协议 41
2.2.2 Gossip协议流程 42
2.3 混合式网络 44
2.4 结构化网络 45
2.4.1 Kademlia算法原理 46
2.4.2 K桶 49
2.4.3 K桶的更新机制 50
2.4.4 加入Kad网络 51
2.4.5 定位节点 51
2.4.6 以太坊中的Kad网络 52
2.5 RLP编码 54
2.5.1 RLP编码定义 55
2.5.2 RLP编码规则 55
2.6 RLPx子协议 57
2.7 Whisper协议 60
2.7.1 消息广播 61
2.7.2 协议流程 64
第3章 交易模型 66
3.1 UTXO模型介绍 67
3.1.1 输入 69
3.1.2 输出 70
3.1.3 比特币脚本 71
3.2 账户模型 78
3.2.1 外部账户 78
3.2.2 合约账户 79
3.2.3 世界状态 81
第4章 智能合约 83
4.1 Gas 85
4.1.1 Gas支付 86
4.1.2 Gas成本与Gas价格 86
4.1.3 Gas成本限制和Gas耗尽 86
4.1.4 Gas价格和交易优先顺序 87
4.1.5 区块Gas限制 87
4.1.6 Gas限制 88
4.1.7 Gas退款 88
4.1.8 GasToken 88
4.2 智能合约生命周期 88
4.3 以太坊高级语言简介 89
4.4 Remix开发环境 90
4.5 Solidity文件结构 94
4.5.1 版本标识 94
4.5.2 源文件导入 94
4.5.3 路径 95
4.5.4 注释 95
4.6 数据类型 96
4.6.1 变量 96
4.6.2 值类型 96
4.6.3 引用类型 99
4.6.4 数据位置 100
4.6.5 动态数组 102
4.6.6 映射 103
4.6.7 枚举 104
4.6.8 结构体 104
4.7 控制结构与表达式 105
4.7.1 构造函数与析构函数 106
4.7.2 函数参数 107
4.7.3 函数返回变量 107
4.7.4 作用域 108
4.7.5 函数调用 109
4.7.6 函数可见性 111
4.7.7 函数装饰器 113
4.7.8 回退函数 114
4.7.9 错误处理及异常 115
4.8 事件 117
4.8.1 监听事件 117
4.8.2 检索日志 118
4.9 合约继承 119
4.9.1 继承支持传递参数 120
4.9.2 继承中的重名 121
4.9.3 重写函数 123
4.9.4 继承父类合约方法 125
4.9.5 多继承与线性化 126
第5章 深入EVM 128
5.1 存储 132
5.1.1 存储分类 132
5.1.2 Hex编码 135
5.2 智能合约的ABI 135
5.3 编译Solidity 136
5.4 ABI编码 140
5.4.1 状态变量 140
5.4.2 结构体 141
5.4.3 布尔类型 142
5.4.4 定长数组 144
5.4.5 映射 144
5.4.6 动态数组 147
5.4.7 动态数组打包 149
5.4.8 字节数组和字符串 150
5.4.9 函数选择器和参数编码 151
5.5 Solidity汇编 152
5.5.1 内联汇编 152
5.5.2 基本语法 153
5.5.3 操作码 153
5.5.4 函数风格 156
5.5.5 访问外部变量和函数 156
5.5.6 汇编局部变量声明 157
5.5.7 赋值 157
5.5.8 条件判断与循环语句 158
5.5.9 函数 160
5.5.10 注意事项 161
5.5.11 Solidity惯例 161
5.5.12 独立汇编 162
5.5.13 EVM中的事件与日志 162
5.6 跨合约调用 164
5.6.1 call和callcode异同 165
5.6.2 callcode和delegatecall异同 166
5.7 智能合约安全 167
5.7.1 合约审计 168
5.7.2 未来研究方向与改进思路 169
5.7.3 漏洞分析 170
第6章 区块链核心数据结构 176
6.1 交易结构 177
6.1.1 AccountNonce 178
6.1.2 Price 179
6.1.3 Recipient 179
6.1.4 Amount 180
6.1.5 Payload 180
6.1.6 V. R. S 180
6.2 交易池 181
6.3 交易回执 183
6.4 区块 187
6.4.1 区块结构 188
6.4.2 区块存储 192
6.4.3 创世区块 192
6.4.4 区块广播 193
6.4.5 区块扩容 194
6.5 默克尔树与轻节点 196
6.5.1 默克尔树 196
6.5.2 轻节点 197
6.5.3 布隆过滤器 199
6.6 字典树 201
6.7 MPT树 204
6.7.1 MPT树持久化 206
6.7.2 安全的MPT树 209
6.7.3 持久化MPT树 209
6.7.4 MPT树应用 209
6.8 Bucket树 211
第7章 共识算法 216
7.1 分布式系统模型 217
7.1.1 分布式系统中的网络模型 217
7.1.2 分布式系统中的故障模型 218
7.2 FLP和CAP定理 219
7.2.1 FLP定理 219
7.2.2 CAP定理 219
7.3 比特币共识 222
7.3.1 比特币清算 223
7.3.2 难度调整 224
7.3.3 出块时间调整 225
7.3.4 算法原理 225
7.3.5 压缩算法 225
7.3.6 难度计算 226
7.3.7 算力 227
7.3.8 铸币交易 227
7.3.9 算力单位 228
7.3.10 矿池收益 228
7.3.11 矿池 228
7.3.12 全网算力 229
7.3.13 区块确认 229
7.4 以太坊共识 230
7.4.1 Dagger 230
7.4.2 Hashimoto 231
7.4.3 Dagger-Hashimoto 232
7.4.4 Ethash 232
7.5 以太坊Ghost协议 243
7.6 公有链激励 248
7.6.1 公有链共识与激励相容 248
7.6.2 矿池利益分配 248
7.6.3 挖矿风险 251
7.7 联盟链共识 253
7.8 Raft算法 254
7.8.1 复制状态机 254
7.8.2 算法流程 255
7.8.3 领导者选举 256
7.8.4 选举流程 257
7.8.5 日志复制 258
7.8.6 领导者选举安全性 258
7.8.7 候选者和跟随者安全性 260
7.8.8 可用性 260
7.8.9 增删节点 261
7.8.10 配置变更流程 262
7.8.11 日志压缩 263
7.9 实用拜占庭容错算法 264
7.9.1 算法容错 265
7.9.2 算法流程 266
7.9.3 日志压缩 267
7.9.4 视图切换 268
7.9.5 主动恢复 269
7.9.6 增删节点 271
7.10 共识算法的新进展 272
第8章 数字钱包 275
8.1 确定性钱包 276
8.2 分层确定性钱包设计 278
8.2.1 主密钥生成 280
8.2.2 HCKD函数 281
8.2.3 节点派生路径 283
8.3 助记词 285
8.3.1 助记词生成 285
8.3.2 恢复种子 287
8.4 硬件钱包 288
8.5 双离线支付 289
第9章 预言机 292
9.1 预言机基本原理 293
9.2 预言机的起源与发展 295
9.2.1 可信预言机 296
9.2.2 奶酪模型 296
9.3 理想预言机 298
9.4 去中心化系统的弱点 299
9.5 去中心化预言机项目 301
9.5.1 ChainLink 301
9.5.2 Witnet 307
9.6 数据聚合方式 309
9.7 预言机面临的挑战 311
第10章 区块链标准 315
10.1 比特币标准 316
10.1.1 BIP的需求 316
10.1.2 BIP的剖析 317
10.1.3 多种类型的BIP 318
10.2 以太坊标准 321
10.3 金融分布式账本技术安全规范 324
10.4 区块链服务网络 325
· · · · · · (
收起)
0 有用 z. 2022-01-20 17:16:40
学习到不少,但是因为没啥技术基础好多代码部分直接跳过了,只是了解了一些通识性知识。
0 有用 沉寂之舟 2022-05-28 22:10:06
名字起得挺好,以为内容会是侧重于对比分析几个项目的优劣势,局限性之类。结果除了最开始一章做了个表格外,大部分都只是技术的罗列。甚至对于所列技术的精细度也像凭兴致,号称架构之美,居然发了大量的篇幅讲解solidity语法。而且内容明显偏重以太坊,其他两个最多就是个补充,归根到底还是国人擅长的学习笔记汇集成书模式,小失望。
0 有用 沉寂之舟 2022-05-28 22:10:06
名字起得挺好,以为内容会是侧重于对比分析几个项目的优劣势,局限性之类。结果除了最开始一章做了个表格外,大部分都只是技术的罗列。甚至对于所列技术的精细度也像凭兴致,号称架构之美,居然发了大量的篇幅讲解solidity语法。而且内容明显偏重以太坊,其他两个最多就是个补充,归根到底还是国人擅长的学习笔记汇集成书模式,小失望。
0 有用 z. 2022-01-20 17:16:40
学习到不少,但是因为没啥技术基础好多代码部分直接跳过了,只是了解了一些通识性知识。