目录
第一章 区块链简史 2
1.1. 区块链的史前时代 2
1.1.1. 密码朋克社区 2
1.1.2. 经济危机与比特币诞生前夜 7
1.2. 公有链的澎湃浪潮 9
1.2.1. 引言 9
1.2.2. 中本聪的星星之火 10
1.2.3. 最早的加密货币和区块链社区 12
1.2.4. 10000 BTC for 2 pizzas 13
1.2.5. “丝绸之路”网站 17
1.2.6. 比特金,莱特银 19
1.2.7. POS的诞生 24
1.2.8. bytemaster、DPoS与去中心化公司 27
1.2.9. Vitalik封神,以太坊突进 33
1.2.10. 匿名币群雄并起 43
1.2.11. “黎明女神”EOS以及以太坊的其他“对手” 51
1.2.12. 比特币扩容之争始末 57
1.3. 联盟链的汹涌波涛 65
1.3.1. 引言 66
1.3.2. R3联盟:区块链金融应用领域的务实派 66
1.3.3. HyperLedger Project:区块链金融应用领域的技术派 69
1.3.4. 国内知名区块链联盟 73
2. 第二章 区块链技术总体架构 77
2.1. 总体架构 77
2.2. 密码学技术 79
2.2.1. 非对称加密 80
2.2.2. 哈希函数 80
2.2.3. 数字签名 82
2.2.4. 隐私保护 82
2.3. 分布式账本 84
2.3.1. 账本 84
2.3.2. 网络 84
2.3.3. 共识 85
2.4. 合约 85
2.5. 应用 86
2.6. 扩展技术 86
2.6.1. Layer 0 86
2.6.2. Layer 1 87
2.6.3. Layer 2 89
3. 第三章 账本 91
3.1. 账本模型设计 91
3.1.1. UTXO模型 92
3.1.2. 账户模型 97
3.2. 账本结构设计 102
3.2.1. 区块链 102
3.2.2. 区块 104
3.2.3. 新一代区块典型结构——以太坊 106
3.2.4. 有向无环图——DAG 110
3.3. 底层存储的技术实现 113
3.3.1. 区块链的存储方式 114
3.3.2. 新一代存储方式——以太坊 115
3.3.3. 链外扩展存储——IPFS 120
4. 第四章 网络 125
4.1. P2P网络简介 125
4.1.1. 什么是P2P网络? 125
4.1.2. 从BT下载看P2P网络 125
4.1.3. P2P网络与区块链 131
4.2. P2P网络中的重要技术 132
4.2.1. 分布式哈希表 132
4.2.2. Kademlia协议 135
4.2.3. NAT与NAT穿越 141
4.3. libp2p 149
4.3.1. libp2p是什么? 149
4.3.2. libp2p的设计 151
4.3.3. libp2p的组成 153
5. 第五章 共识 157
5.1. 共识与一致性 157
5.1.1. 一致性 157
5.1.2. 共识 159
5.2. FLP和CAP 159
5.2.1. FLP 160
5.2.2. CAP 160
5.3. 区块链中的共识及思路 163
5.4. PoX类共识 165
5.4.1. 工作量证明(PoW) 165
5.4.2. 权益证明(PoS) 172
5.4.3. 其他PoX共识 178
5.5. BFT类共识 181
5.5.1. 针对无拜占庭错误场景进行优化 181
5.5.2. 针对拜占庭错误场景进行优化 188
5.5.3. 基于密码学的改进 190
5.6. 混合类共识 191
5.6.1. PoW+BFT 191
5.6.2. DPoS+BFT 192
5.6.3. Tendermint 192
5.6.4. Algorand 193
6. 第六章 合约引擎 198
6.1. 合约设计 198
6.1.1. 确定性 199
6.1.2. 可终止性 200
6.2. 脚本方式 202
6.2.1. 比特币的分叉币竞争币 203
6.2.2. 匿名加密货币 203
6.2.3. 部分DAG 203
6.2.4. 扩展方法 203
6.3. 容器方式 204
6.4. 虚拟机方式 205
6.4.1. 改进 EVM 207
6.4.2. 兼容传统指令集 208
6.4.3. wasm 方式 209
7. 第七章 应用 212
7.1. 应用基础设施-钱包 212
7.1.1. 多角度看钱包 212
7.1.2. 钱包的技术实现原理 215
7.2. 应用的外部辅助机制 225
7.2.1. 预言机Oracle 225
7.2.2. 链下支付通道 230
7.3. Dapp应用生态 236
7.3.1. 主流生态平台现状 237
7.3.2. Dapp生存挑战 239