此文章系列计划记录本人从零开始学习JD Chain的历程,因为是从零开始,理所当然会有许多理解不够深入的地方,还望各位同好及时指正错误,共同成长。不定期更新,但尽量坚持下去,分享文章也是想立个Flag,让大家监督我的学习进度。

JD Chain 是京东区块链开发团队自主研发的,专门为企业应用设计的区块链框架系统,适用多种通用业务场景。不同于超级账本(Hyperledger Fabric)生态和企业级以太坊联盟(Enterprise Ethereum AllianceEEA),JD Chain 拥有完全的自主知识产权和充分开放的开源协议(Apache-2.0 License)。在我大中华和美丽国在各个维度频频摩擦,连Docker这种应用广泛的开源项目都不再能愉快使用的当下,学习了解完全自主可控的开源项目,也算为加速内循环做出微薄贡献(此处应该有掌声^ ^)。

-------------这里是废话的分割线-------------------

为了帮助开发者快速部署,JD Chain 项目在部署脚本中内置了一个可视化管理工具,除了一些必要的配置修改外,大部分如快速实现JDChain的初始化和peer节点启动等区块链部署工作只需要在前端页面按照操作提示进行简单的点点点即可,减少用户的各种繁琐操作,简直是我这种懒人的福音。

部署模型

1.png

JD Chain 官网 提供了面向中小型企业和大型企业的两种不同部署模型。其中面向中小企业的最简部署模型为JD Chain可正常运行的最低配置,在硬件条件满足的情况下,可以支持亿级交易,通常用于Demo实验或小型应用,也正是下文采用的部署模型。最简部署模型需要部署一个客户端节点、一个网关节点和多个共识节点(共识节点数量依赖于共识算法,本次部署部署了四个共识节点)

操作步骤

2.png

安装、修改配置

http://ledger.jd.com下载安装包,其中jdchain-peer-1.2.1-xxx.zippeer节点压缩包,jdchain-gateway-1.2.1-xxx.zip为网关压缩包。

如果peer节点部署在不同的机器上,采用默认端口安装就可以;
如果peer节点部署在同一台机器上,需要修改管理工具和peer节点的默认端口,避免端口冲突导致服务无法启动。还需要做一些假设:

  1. 管理工具的端口定义为:8000/8001/8002/8003
  2. peer节点的启动端口定义为:7080/7081/7082/7083
  3. JDChain项目的安装路径为:/export/jdchain

对节点配置进行修改,具体修改如下(如果为不同机器部署,只需执行如下步骤1和步骤2):

  1. 切换路径 cd /export/jdchain
  2. 解压Peer节点安装包 unzip jdchain-peer-1.2.1.RELEASE.zip –d peerX
  3. 切换路径 cd /export/jdchain/peerX/bin
  4. 修改管理工具manager端口(如下图所示位置) vi manager-startup.sh
  5. 修改peer启动端口和内存大小vi peer-startup.sh。本机多peer部署建议把内存配置改小一点避免内存不够用应用程序无法启动或者被系统kill,下图提示位置建议修改为:-Xmx512m -Xms512m

启动管理工具

  1. 进入可执行脚本目录 cd /export/jdchain/peerX/bin
  2. 执行: sh manager-startup.sh
  3. 管理工具的后台日志默认存放在 jump.out 文件内
  4. 管理工具会启动一个UI操作界面方便部署,界面默认的访问端口为 8000。

创建公私钥

5.png

登录管理端UI界面,点击左侧菜单:公私钥管理->生成公私钥。在弹出的界面中填写相关信息:
OK! 创建完毕!公钥(以及公钥衍生的地址)将作为区块链上各个参与方节点或用户的数字身份(类比于邮箱账号),私钥作为区块链上各个参与方节点或用户的数字身份的密码(类比于邮箱密码,需要妥善保管)

创建数据账本

  1. 修改配置信息:点击左侧菜单:账本->初始化账本,选择一台机器作为协调方,其它的作为参与方。每个节点填写内容之后先不要点击“保存配置信息”按钮,都填写完成之后统一,先保存协调方,其它依次快速保存。

注意事项:

  • 参与方要使用协调方的邀请码;
  • 共识协议:目前为:Bftsmart
  • 密码算法:默认;
  • 参与方数量:包含协调方在内;
  • 共识节点信息:如果在同一台机器,一定要保证共识端口不同(共识会占用多个连续端口,步长建议设置为10,即:6300/6310/6320/6330);
  • 初始化共识地址:如果在同一台机器,一定要保证共识端口不同(共识会占用多个连续端口,步长建议设置为10,即:22000/22010/22020/22030);
  • peer节点公钥:选择上一步创建的公钥;
  • 数据库名称:在同一个机器上的名称不能重复。
  • 由于peer节点之间的通信设置了时延,一定要确保四个peer节点的配置都无误的前提下,在尽可能短的时间内同时点击界面下方的“保存配置信息”按钮。
6.png

协调方配置信息如下:

7.png

参与方配置信息如下:

8.jpg

四个参与方都点击“保存配置信息”后,配置信息会在四个参与方之间共享。界面如下:

  1. 账本初始化:点击界面下方的“开始”按钮,则启动四个参与方的初始化操作,初始化进度会在下方展示。最终展示界面如下:

注意:一定要确保所有的账本初始化都完成之后,再进行后续操作。初始化完成表示创世区块已经创建。否则在启动节点过程中会出现报错。

  1. 启动peer节点:点击菜单 账本->查看账本,刚生成的账本会在内容区展示。点击其中的“启动节点”按钮,即可启动peer节点(见下图)。启动无误后,进度状态会展示为:已启动->已加载。

安装、启动Gateway节点

  1. 确定路径 cd /export/jdchain
  2. 解压gateway节点安装包unzip jdchain-gateway-1.2.1.RELEASE.zip –d gw
  3. 管理端查看公私钥(即上文在管理端为每个节点创建的公私钥)
  4. 查看加密后的口令 cd peer0cd config/keysmore *.pwd
  5. 修改端口 、添加公私钥cd /export/jdchain/gw/configvi gateway.conf
  6. 脚本启动gateway: sh startup.sh
  7. 稍等片刻,如果没有修改默认端口配置,可通过http://localhost:18081页面访问区块链浏览器,界面如下:
  8. 大功告成!

注意事项:

  1. 公私钥可以在管理工具的“公私钥管理”中获得,但私钥的解密密码(keys.default.privkey-password参数),需要通过登录后台才能查看,即上文中的第4步。
  2. 注意,公钥以3sn开头,私钥以177开头。

划重点:以上基于JDChain1.2.1.RELEASE版本搭建,最新版本JDChain1.3.0.RELEASE版本已经发布,建议基于最新版本部署,部署过程完全一致。

参考链接:
https://zhuanlan.zhihu.com/p/102270006

13.png

JD Chain GitHub项目链接见下,欢迎各位跟我一样先Star收藏关注起来,共同学习共同成长!



从零开始学习 JD Chain(一)- 快速部署 JD Chain插图7

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2020/08/25/jd-chain/