编辑推荐

适读人群:区块链爱好者、区块链初学者、想自行开发设计区块链底层的有Java基础的读者。

区块链技术人才的缺少使得区块链人才招聘市场热火朝天,各大培训机构也纷纷进场,培训费用居高不下,但效果却不尽如人意。

区块链底层设计Java实战》从架构的角度,细致拆分了区块链各技术与我们熟悉的技术的一一对应之处,比如区块中的Merkle树对应二叉树,header+body结构设计与HTTP异区同工,等等。这种讲解方式可以破掉学习的壁垒,让有Java基础的读者可以快速地理解区块链的底层开发技术。这正是《区块链底层设计Java实战》作者的高明之处。

内容简介

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

作者简介

牛冬,中科院软件研究所硕士毕业,先后就职于人人网、先锋金融集团、阿里巴巴,现任职于好未来教育科技集团,作为区块链研发负责人。

目录

第1章区块链简介/1
1.1戏说区块链/2
1.2正说区块链/3
1.3区块链的未来:联盟链/5
1.4小结/7

第2章区块链架构/8
2.1比特币架构/9
2.2以太坊架构/10
2.3Hyperledger架构/13
2.4区块链通用架构/6
2.5小结/19

第3章密码学.20
3.1加密与解密/21
3.1.1加密与解密简介/21
3.1.2Java实现/22
3.2哈希/46
3.2.1散列函数简介/46
3.2.2SHA-256Java实战/47
3.3Merkle树/50
3.3.1Merkle树简介/50
3.3.2Merkle树Java实战/52
3.4小结/63

第4章P2P网络构建/64
4.1P2P简介/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.1t-io介绍78
4.4.2t-io的主要用法/80
4.4.3基于t-io构建P2P网络.83
4.5小结/96

第5章分布式一致性与共识算法/97
5.1区块链的分布式/98
5.2Paxos算法/99
5.3ZooKeeper中的分布式一致算法实现/100
5.4二、三阶段提交协议/103
5.4.1二阶段提交协议/104
5.4.2三阶段提交协议/105
5.5区块链中的分布式一致性/106
5.5.1PoW算法/107
5.5.2PoW算法在比特币系统的源码实现/107
5.5.3以太坊的PoW实现/.109
5.6联盟链中PBFT的实现/111
5.6.1什么是PBFT/112
5.6.2PBFT基于WebSocket的实现/114
5.6.3PBFT基于t-io的实现/128
5.7小结/147

第6章区块设计/148
6.1比特币的区块设计.149
6.2以太坊的区块设计.151
6.3Hyperledger的区块设计/152
6.4Java版区块设计/153
6.5小结/160

第7章区块存储/161
7.1区块存储技术/162
7.2用Java实现文件存储/163
7.2.1Guava文件操作/163
7.2.2Guava实现文件存储/165
7.3用Java实现SQLite存储/170
7.3.1SQLite介绍/170
7.3.2SQLite的使用/171
7.4用Java实现LevelDB存储/185
7.4.1LevelDB介绍/185
7.4.2LevelDB的使用186
7.5用Java实现RocksDB存储/191
7.5.1RocksDB介绍/191
7.5.2RocksDB的使用192
7.6用Java实现CouchDB存储/195
7.6.1CouchDB介绍/195
7.6.2CouchDB的使用196
7.7小结/201

第8章联盟链中的币设计202
8.1比特币的币设计/203
8.2以太币的激励机制/206
8.3Java版联盟链的币设计与实现/208
8.3.1管理后台币的配置/208
8.3.2Java实现币交易212
8.4小结/235

第9章联盟链管理后台/236
9.1超级账本的成员管理/237
9.2Java版联盟链成员管理设计与实现/.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

附录ATextNG/275
附录BMockito/279
附录CCouchDB的安装/283
后记/286

前言/序言

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


其他推荐