区块链底层设计Java实战

更多详情


内容简介: 2018 年是中国区块链发展的元年,火热的市场环境下,各互联网公司纷纷试水区块链落地项目。本书以区块链原理及其对应的Java 实现为主线展开,详细剖析区块链底层技术,主要内容包括区块链的底层架构、密码学原理、P2P 网络原理、分布式一致性算法、知名公链区块设计、知名公链区块存储技术、知名公链币的设计、联盟链管理后台的原理等。读者在学完本书后,可自行设计联盟链。本书内容基于Java 语言,为读者打开了区块链底层研发大门。

目录: 第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

前言: 序
自20 世纪80 年代计算机技术兴起以来,几乎每隔10 年就会有一次比较重大的技术变革。20 世纪90 年代互联网和搜索技术从美国风靡全球;21 世纪初,云计算和移动互联网成了弄潮儿。而今,区块链浪潮袭来!特别是2018 年初以来,区块链成了街谈巷议的话题。
在招聘市场上,区块链人才炙手可热,一些城市为了吸引区块链人才下足血本。杭州区块链产业园为了吸引高层次区块链人才入驻,实行购房补贴最高达300 万元人民币的政策,并补贴公用住房、云服务补助和研发经费;上海杨浦区对引入的区块链人才给予10 万元人民币住房补贴,补贴最长时限可达3 年。
在研发领域,各个互联网公司纷纷试水区块链落地项目。与之对应,区块链职位的招聘市场也是热火朝天。随着区块链研发的热浪,区块链培训机构也纷纷进场。
目前区块链研发培训周期基本都在两周左右,收费20000 元人民币以上。但培训效果却不尽如人意,笔者面试区块链岗位的人才时,发现几乎所有的小伙伴只是对区块链概念有模糊印象,至于如何实战知之甚少,如何自研区块链底层技术知之更少。
所以说,区块链人才的火热最主要或者最根本的原因是真正的区块链高端人才极为稀少。因此,这也成了本书写作的初衷,即试图降低区块链底层学习和开发的门槛,缩小学习区块链原理和理论到进入实战的鸿沟。
本书以区块链原理及其对应的Java 实现为主线展开,各章内容如下:
第1 章是区块链简介,从研发维度戏说、正说区块链,评说区块链的应用前景。
第2 章介绍区块链的底层架构。
第3 章讲区块链中所用的密码学原理及Java 实现。
第4 章讲P2P 网络原理及Java 实现。
第5 章讲分布式一致性算法及Java 实现。
第6 章讲知名公链的区块设计及Java 实现。
第7 章讲知名公链的区块存储技术及Java 实现。
第8 章讲知名公链币的设计及Java 实现。
第9 章讲联盟链管理后台的原理及实现。
第10 章讲联盟链的运营。
本书适用于区块链爱好者、区块链初学者、想自行开发设计区块链底层的有Java基础的读者。
当然,笔者学习和实践区块链技术刚刚2 年,因此书中难免有理解和实践不足之处,“卑辞俚语,不揣浅陋”,欢迎读者和笔者交流学习,共同进步,一起为区块链落地和人才培养体系建设略尽绵薄!