第1 章 区块链简介 / 1
1.1 戏说区块链 / 2
1.2 正说区块链 / 3
1.3 区块链的未来:联盟链 / 5
1.4 小结 /7
第2 章 区块链架构 / 8
2.1 比特币架构 / 9
2.2 以太坊架构 / 10
2.3 Hyperledger 架构 / 13
2.4 区块链通用架构 /6
2.5 小结 / 19
第3 章 密码学 . 20
3.1 加密与解密 / 21
3.1.1 加密与解密简介 / 21
3.1.2 Java 实现/22
3.2 哈希 /46
3.2.1 散列函数简介/46
3.2.2 SHA-256 Java 实战 /47
3.3 Merkle 树 /50
3.3.1 Merkle 树简介 /50
3.3.2 Merkle 树Java 实战 /52
3.4 小结 /63
第4 章 P2P 网络构建 / 64
4.1 P2P 简介 /65
4.2 区块链P2P 网络实现技术总结 /66
4.3 基于WebSocket 构建P2P 网络 /68
4.3.1 WebSocket 介绍 /. 68
4.3.2 基于WebSocket 构建P2P 网络 / 69
4.4 基于t-io 构建P2P 网络 /. 78
4.4.1 t-io 介绍 78
4.4.2 t-io 的主要用法 / 80
4.4.3 基于t-io 构建P2P 网络 . 83
4.5 小结 /96
第5 章 分布式一致性与共识算法 /97
5.1 区块链的分布式 /98
5.2 Paxos 算法 / 99
5.3 ZooKeeper 中的分布式一致算法实现 / 100
5.4 二、三阶段提交协议 / 103
5.4.1 二阶段提交协议/104
5.4.2 三阶段提交协议/105
5.5 区块链中的分布式一致性 /106
5.5.1 PoW 算法 /107
5.5.2 PoW 算法在比特币系统的源码实现 /107
5.5.3 以太坊的PoW 实现 /.109
5.6 联盟链中PBFT 的实现 / 111
5.6.1 什么是PBFT/112
5.6.2 PBFT 基于WebSocket 的实现 / 114
5.6.3 PBFT 基于t-io 的实现 /128
5.7 小结 / 147
第6 章 区块设计 / 148
6.1 比特币的区块设计 . 149
6.2 以太坊的区块设计 . 151
6.3 Hyperledger 的区块设计 /152
6.4 Java 版区块设计 / 153
6.5 小结 / 160
第7 章 区块存储 / 161
7.1 区块存储技术 / 162
7.2 用Java 实现文件存储 / 163
7.2.1 Guava 文件操作/163
7.2.2 Guava 实现文件存储 /165
7.3 用Java 实现SQLite 存储 /170
7.3.1 SQLite 介绍 /170
7.3.2 SQLite 的使用 / 171
7.4 用Java 实现LevelDB 存储 /185
7.4.1 LevelDB 介绍 /185
7.4.2 LevelDB 的使用 186
7.5 用Java 实现RocksDB 存储 / 191
7.5.1 RocksDB 介绍 / 191
7.5.2 RocksDB 的使用 192
7.6 用Java 实现CouchDB 存储 / 195
7.6.1 CouchDB 介绍/ 195
7.6.2 CouchDB 的使用 196
7.7 小结 / 201
第8 章 联盟链中的币设计 202
8.1 比特币的币设计 /203
8.2 以太币的激励机制 /206
8.3 Java 版联盟链的币设计与实现 /208
8.3.1 管理后台币的配置 /208
8.3.2 Java 实现币交易 212
8.4 小结 / 235
第9 章 联盟链管理后台 / 236
9.1 超级账本的成员管理 /237
9.2 Java 版联盟链成员管理设计与实现 /.238
9.2.1 加入联盟模块的设计与实现 / 239
9.2.2 联盟成员认证模块 /246
9.2.3 联盟成员密钥分发模块 / 257
9.3 小结 / 260
第10 章 联盟链的运营 /261
10.1 联盟链会员章程 /262
10.2 联盟链代码使用方式 / 269
10.3 联盟链代码升级 /272
10.4 联盟链代码安全 /273
10.5 联盟链激励体系运营 /273
10.6 小结 / 274
附录A TextNG /275
附录B Mockito / 279
附录C CouchDB 的安装 / 283
后记 /286