第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区块链通用架构 16
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.1WebSocket介绍 68
4.3.2基于WebSocket构建P2P网络 69
4.4基于t-io构建P2P网络 78
4.4.1 t-i o介绍 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