31
区块链服务 最佳实践 文档版本 01 发布日期 2020-06-23 华为技术有限公司

最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

区块链服务

最佳实践

文档版本 01

发布日期 2020-06-23

华为技术有限公司

Page 2: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 i

Page 3: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

目 录

1 银行跨行开户系统...................................................................................................................... 11.1 关于 Demo................................................................................................................................................................................. 11.2 订购区块链服务.........................................................................................................................................................................11.3 安装及实例化链代码................................................................................................................................................................ 31.4 配置应用......................................................................................................................................................................................51.5 部署应用......................................................................................................................................................................................71.6 调试应用......................................................................................................................................................................................8

2 弹珠资产转移 Marbles Demo.................................................................................................. 92.1 关于 Demo................................................................................................................................................................................. 92.2 订购区块链服务...................................................................................................................................................................... 102.3 安装及实例化链代码............................................................................................................................................................. 112.4 配置应用................................................................................................................................................................................... 132.5 部署应用................................................................................................................................................................................... 142.6 Demo 体验............................................................................................................................................................................... 14

3 组建联盟链 Demo....................................................................................................................173.1 关于 Demo............................................................................................................................................................................... 173.2 准备工作................................................................................................................................................................................... 173.3 订购区块链服务...................................................................................................................................................................... 183.4 邀请成员................................................................................................................................................................................... 193.5 被邀请方加入联盟链............................................................................................................................................................. 203.6 安装及实例化链代码............................................................................................................................................................. 233.7 配置应用................................................................................................................................................................................... 243.8 部署应用................................................................................................................................................................................... 27

区块链服务最佳实践 目 录

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 ii

Page 4: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

1 银行跨行开户系统

1.1 关于 Demo本实践基于华为云区块链服务编写,以基于区块链身份共享的银行账户跨行开户Demo的部署为例,帮助您快速上手使用并体验华为云区块链服务。

说明

只用于场景体验,不用于实际应用。

● 业务场景:

基于一家银行的账户以及已有的KYC信息背书,免KYC过程开通另外一个银行的账户。

● 主要诉求:

用户身份等信息需要加密,避免暴力破解;提供基于身份信息的快速查询。

● 关键挑战:

– 安全隐私:银行不希望把客户隐私信息泄露给其它银行。

– 高性能检索:提供类传统数据库的检索性能 (毫秒级响应) ,保持一致用户体验。

– 良好接口:提供简单方便的接口,便于应用开发。

1.2 订购区块链服务您需要按照如下步骤订购一个区块链服务,并配置基本参数和网络节点。

步骤1 登录区块链服务管理控制台。

步骤2 单击页面右上角的“购买区块链服务”,在购买页面填写相关参数。

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 1

Page 5: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

表 1-1 购买参数

参数 参数值

计费模式 按需计费

区域 使用默认区域

企业项目 选择已创建的企业项目,例如:default。如果您没有开通企业管理服务,将无法看到企业项目选项。

区块链服务名称 自定义名称,例如:bank

版本类型 企业版

区块链服务类型 联盟链

为了保证网络互通,区块链服务类型请选择联盟链。

共识策略 测试策略(SOLO)

资源初始密码 请自行设置

资源初始密码确认 请自行设置

高级配置 现在配置

集群 创建新的CCE集群

可用区 请自行选择

云主机规格 4核/8GB

云主机个数 1

高可用 否

虚拟私有云 系统自动创建VPC

云主机登录方式 密码

root密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

确认密码 -

区块链管理初始密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

区块链管理确认密码 -

版本信息 请自行选择

存储卷类型 文件存储卷

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 2

Page 6: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 参数值

peer节点组织 创建3个节点组织,名称必须与如下内容完全一致:

● democraticBank,节点数量2● civilizationBank,数量2● harmoniousBank,数量2。

共识节点数量 1

开启共识节点数据老化 否

安全机制 ECDSA

节点组织存储容量 使用默认规格

账本数据存储方式 选择“文件数据库(goleveldb)”

通道配置 将通道名称修改为testchannel,并将democraticBank, civilizationBank,harmoniousBank节点组织添加至通道中。

说明

● 通道名称必须为testchannel。

● democraticBank已默认添加到通道,还必须将其他节点组织也添加至通道中,否则链代码将不能实例化。

添加RESTful APIs支持 否

配置弹性IP 是

弹性IP计费方法 按带宽计费

弹性IP带宽 5 Mbit/s

区块生成配置 否

步骤3 单击“立即购买”进入配置确认页面,确认信息无误后单击“提交”。

请等待数分钟,安装页面提示安装成功,查看服务及组织状态变为“正常”后,表示区块链服务部署完成。

----结束

1.3 安装及实例化链代码一个通道里的所有Peer节点都必须安装链代码,然后在其中一个Peer节点上进行链代码实例化。如需使用相同的链代码,通道成员必须在链代码安装期间为链代码提供相同的名称和版本。

安装链代码

步骤1 单击新创建的区块链服务右侧的“区块链管理”,登录链代码管理页面。

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 3

Page 7: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤2 在登录页面输入用户名、密码、验证码,单击“登录”。

说明

● 用户名为admin,密码为您在创建区块链服务时设置的区块链管理初始密码,如果没有设置区块链管理初始密码,则以资源初始密码为准。

● 登录时,若您使用的是IE浏览器,有可能会跳转失败并提示使用证书不受信任,此时您可以单击此处进行处理。

步骤3 在链代码管理页面,单击页面左上角的 。

步骤4 在安装界面输入“链代码名称”、“链代码版本”,选择需要安装链代码的节点及链代码语言,添加链代码文件等,如下表:

参数 值

链代码名称 fabbank

链代码版本 1.0

账本数据存储方式 文件数据库(goleveldb)

选择全部Peer节点 勾选

组织&Peer节点 默认已同时选中所有节点。

链代码语言 Golang

链代码文件 下载示例链代码:fabbank.zip

链代码描述 根据需要填写相关描述。

步骤5 单击“安装”,完成链代码安装。

----结束

实例化链代码

步骤1 链代码安装完成后,在链代码列表的“操作”列,单击“实例化”。

步骤2 选择实例化通道、链代码版本、背书策略、背书组织,并填写初始化函数、链代码参数等,如下表:

参数 值

链代码名称 fabbank

实例化通道 testchannel

链代码版本 1.0

初始化函数 init

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 4

Page 8: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 值

链代码参数 a,200,b,250

背书策略 选择“下列任意组织背书”

背书组织列表 选择全部三个组织

隐私保护配置 否

步骤3 单击“实例化”,完成链代码在当前通道上的实例化。

稍等2-3分钟后刷新界面,单击“实例化”列的“查看更多”,查看链代码实例化进度。

----结束

1.4 配置应用

前提条件● 如果您如果使用Fabric 1.1.0版本,需要准备一台可用内存至少2G的服务器,用于

部署Demo应用。

● 如果您如果使用Fabric 1.4.0版本,不需要额外准备服务器,Demo必须部署在BCS所在的集群。

须知

● 用于部署Demo应用的服务器可为您自己已有的服务器(需已安装Docker),亦可为华为云弹性云服务器。

● 弹性云服务器操作系统建议选择CentOS或者ubuntu。

证书下载

步骤1 在区块链服务“服务管理”页面,单击目标服务名前的 ,在组织列表操作列下载相关证书。

本例中需要下载1个共识管理员证书和3个节点管理员证书。

步骤2 登录准备好的服务器,在本地创建一个bankdemo目录,并将下载的证书文件保存至bankdemo目录下。

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 5

Page 9: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

须知

● 如果使用ssh工具无法连接到服务器,请查看您的服务器安全组是否打开了22端口。

● 请妥善保管下载证书中的私钥,建议您对私钥进行加密存储。

----结束

SDK 配置下载

步骤1 在“服务管理”界面,单击“更多 > 下载SDK配置”。

步骤2 配置SDK文件参数并下载。如下表:

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

参数名称 参数值

链代码名称 fabbank

证书存放根路径 /opt/bank/src/bank/conf/crypto

通道名称 testchannel

选择成员 全选关联出来的节点组织

步骤3 解压下载的SDK,将解压包中的yaml文件拷贝两份,并将这三份yaml文件分别命名为civilizationBank.yaml、democraticBank.yaml、harmoniousBank.yaml,最后将yaml文件保存至已创建的bankdemo目录下。

最终bankdemo目录的结构如下图所示:

----结束

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 6

Page 10: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

1.5 部署应用

部署应用

步骤1 进入bankdemo目录,执行命令启动服务。如果使用的Fabric 1.4.0版本,请执行以下命令:wget https://bcs.obs.cn-north-1.myhuaweicloud.com/bankdemo/fabric1.4/V2/startserver.sh;bash startserver.sh

说明

startserver.sh执行过程中涉及Demo镜像的下载,由于镜像较大,故脚本执行可能较慢。

用户需要输入两次信息,第一次“是否是第一次部署应用”,是键入y,否(即想修改密码)键入n;第二次键入用户自定义密码(以下举例,键入密码为aaa):

执行结果可参考如下返回信息:

步骤2 执行如下命令检查容器是否启动。docker ps

----结束

(可选)添加安全组● 若您通过自有服务器部署Demo则不涉及。

● 若您是通过华为云弹性云服务器ECS部署Demo应用,部署成功后需要先创建安全组再添加安全组规则以允许服务器的8080端口可被访问。添加安全组规则时的规则参数如下表:

表 1-2 安全组规则参数表

参数 值 说明

协议 TCP 网络协议

方向 入方向 安全组规则生效的方向,入方向指从外部访问安全组规则下的弹性云服务器。

端口范围 创建1条规则,填写8080。

规则的端口范围

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 7

Page 11: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 值 说明

源地址 选择IP地址,0.0.0.0/0 当方向为入方向时,需要填入此参数。

1.6 调试应用

录入客户信息

步骤1 Demo应用成功运行后,银行管理员通过“http://EIP:8080/adminLogin“访问Demo应用。

说明

● EIP为部署Demo的服务器IP或弹性云服务器的浮动IP。

● 管理员页面

默认用户名:admin,密码:(请输入上页部署应用时键入的自定义密码),仅供demo体验登录。

步骤2 单击“创建账户”录入客户信息。例如在中国文明银行录入信息,包括姓名、身份证号、银行卡号和电话号码。

----结束

客户申请账户

步骤1 客户通过“http://EIP:8080/userLogin”访问Demo应用,进入客户页面。

说明

● EIP为部署Demo的服务器IP或弹性云服务器的浮动IP。

● 客户页面

默认用户名:customer,密码:(请输入上页部署应用时键入的自定义密码),仅供demo体验登录。

步骤2 客户根据界面提示选择申请中国民主银行的账户。

进入到中国民主银行的账户申请界面,可以通过其他已开户银行的账户信息开通中国民主银行的账户。

这里充分使用了基于区块链的身份共享,客户一旦开通一家银行的账户,那么经过审核的可信身份信息就会记录在区块链中,且加密共享给其他银行。那么客户就可以免审核申请其他银行的账户。

----结束

区块链服务最佳实践 1 银行跨行开户系统

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 8

Page 12: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

2 弹珠资产转移 Marbles Demo

2.1 关于 Demo本实践基于华为云区块链服务,以弹珠资产转移Marbles Demo部署为例进行演示,旨在帮助您了解链代码的基础知识,帮助您快速上手使用并体验华为云区块链服务。

说明

只用于场景体验,不用于实际应用。

这是一个简单的资产转移演示,多个用户之间可以创建并相互转移弹珠资产,同时您还能看到详细的交易信息及区块链信息。界面如下:

源码下载

如果您需要查看Demo应用的源码,请点击下载源码进行下载查看,希望对您的应用开发有所帮助。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 9

Page 13: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

2.2 订购区块链服务您需要按照如下步骤订购一个区块链服务,并配置基本参数和网络节点。

步骤1 登录区块链服务管理控制台。

步骤2 单击页面右上角的“购买区块链服务”,在订购页面填写相关参数。

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

表 2-1 购买参数

参数 参数值

计费模式 按需计费

区域 使用默认区域

企业项目 选择已创建的企业项目,例如:default。如果您没有开通企业管理服务,将无法看到企业项目选项。

区块链服务名称 自定义名称,例如:marbles

版本类型 根据实际需要选择,例如:基础版

区块链服务类型 根据实际需要选择,例如:私有链

共识策略 测试策略(SOLO)

资源初始密码 请自行设置

资源初始密码确认 请自行设置

高级配置 现在配置

集群 创建新的CCE集群

可用区 请自行选择

云主机规格 4核/8GB

云主机个数 1

高可用 否

虚拟私有云 系统自动创建VPC

云主机登录方式 密码

root密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 10

Page 14: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 参数值

确认密码 -

区块链管理初始密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

区块链管理确认密码 -

版本信息 根据实际需要选择,例如:选择最新版本。

存储卷类型 文件存储卷

peer节点组织 创建1个节点组织,名称自定义。

共识节点数量 1

开启共识节点数据老化 否

安全机制 ECDSA

节点组织存储容量 使用默认规格

账本数据存储方式 选择“文件数据库(goleveldb)”

通道配置 系统已默认将创建的节点组织添加到了通道中,请保持默认状态,不须修改。

添加RESTful APIs支持 根据实际需要选择,例如:否

配置弹性IP 是

弹性IP计费方法 按带宽计费

弹性IP带宽 5 Mbit/s

区块生成配置 否

步骤3 单击“立即购买”进入配置确认页面,确认信息无误后点击“提交”。

请等待数分钟,安装页面提示安装成功,查看服务及组织状态变为“正常”后,表示区块链服务部署完成。

----结束

2.3 安装及实例化链代码

安装链代码

步骤1 单击新创建的区块链服务右侧的“区块链管理”,登录链代码管理页面。

步骤2 在登录页面输入用户名、密码、验证码,单击“登录”。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 11

Page 15: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

说明

● 用户名为admin,密码为您在创建区块链服务时设置的区块链管理初始密码,如果没有设置区块链管理初始密码,则以资源初始密码为准。

● 登录时,若您使用的是IE浏览器,有可能会跳转失败并提示使用证书不受信任,此时您可以单击此处进行处理。

步骤3 在链代码管理页面,单击页面左上角的 。

步骤4 在安装界面输入“链代码名称”、“链代码版本”,选择需要安装链代码的节点及链代码语言,添加链代码文件等,如下表:

参数 值

链代码名称 自定义名称,例如:marbles

链代码版本 自定义版本,例如:1.0

账本数据存储方式 文件数据库(goleveldb)

选择全部Peer节点 勾选

组织&Peer节点 默认已同时选中所有节点。

链代码语言 Golang

链代码文件 下载示例链代码:marbles.zip

链代码描述 根据需要填写相关描述。

步骤5 单击“安装”,完成链代码安装。

----结束

实例化链代码

步骤1 链代码安装完成后,在链代码列表的“操作”列,单击“实例化”。

步骤2 选择实例化通道、链代码版本、背书策略、背书组织,并填写初始化函数、链代码参数等。如下表:

参数 示例值

实例化通道 channel

链代码版本 1.0

初始化函数 init

链代码参数 a,200,b,250

背书策略 选择“下列任意组织背书”

背书组织列表 选择已创建的组织

隐私保护配置 否

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 12

Page 16: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤3 单击“实例化”,完成链代码在当前通道上的实例化。

----结束

2.4 配置应用

登录服务器

在“区块链服务 > 服务管理”页面中,单击对应的服务右侧的“更多”,选择“更新访问地址”,查看访问地址,并登录部署区块链服务的节点的所在服务器。

证书下载

步骤1 在区块链服务“服务管理”页面,单击目标服务名前的 ,在组织列表操作列下载相关证书。

本例中需要下载1个共识组织管理员证书和1个节点管理员证书。

请妥善保管下载证书中的私钥,建议您对私钥进行加密存储。

步骤2 登录准备好的服务器,在本地创建一个marblesdemo目录,并将下载的证书文件保存至marblesdemo目录下。

----结束

SDK 配置下载

步骤1 在“服务管理”界面,单击“更多> 下载SDK配置”。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 13

Page 17: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤2 配置SDK文件参数并下载。如下表:

参数名称 参数值

链代码名称 填写自定义的链代码名称,示例:marbles

证书存放根路径 任何合法路径,例如:/opt/gopath/src/github.com/hyperledger/api-server/marblesdemo/crypto

通道名称 选择已创建的通道,示例:c12345

选择成员 全选关联出来的节点组织

步骤3 单击下载,解压出yaml文件并将其保存至已创建的marblesdemo目录。

----结束

2.5 部署应用进入marblesdemo目录,执行命令部署服务。rm startserver.sh -f;wget https://bcs.obs.cn-north-1.myhuaweicloud.com/marbles/v2.0/startserver.sh; bash startserver.sh

执行结果可参考如下返回信息,登录提示的网址体验marbles(请使用Chrome浏览器访问,使用IE浏览器访问可能会导致页面混乱)。

2.6 Demo 体验步骤1 启动弹珠应用。

单击“Express”,启动弹珠应用。

如果您进入该页面时,关闭了“Welcome to the Marbles Hyperledger Fabricdemo!”页面,导致创建弹珠页面为空白,无法创建弹珠,请单击“Start UpHelp”,启动弹珠应用。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 14

Page 18: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤2 创建弹珠。

单击“+”,填写配置项,单击“create”创建弹珠,几秒后出现新弹珠。如没有出现新弹珠则使用F5键刷新页面。

步骤3 交易弹珠。

拖动弹珠至另一个用户模拟交易,在交易过程中,弹珠将暂时消失,然后在新主人内重新绘制。

步骤4 删除弹珠。

拖动弹珠到垃圾桶,弹珠将会在几秒后消失。

步骤5 刷新页面以检查您的行为是否已执行。

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 15

Page 19: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤6 体验弹珠交易的故事模式。

1. 单击页面上方“setting”设置按钮。

2. 在出现的对话框,单击“Enabled”启用故事模式。

3. 单击右上角“X”关闭按钮关闭菜单栏。

4. 拖动弹珠到另一个用户,此时您可以看到详细的交易过程。

5. 关闭故事模式。

----结束

恭喜您已经成功体验华为云区块链服务以及marbles示例!

区块链服务最佳实践 2 弹珠资产转移 Marbles Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 16

Page 20: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

3 组建联盟链 Demo

3.1 关于 Demo本实践基于华为云区块链服务编写,以组建联盟链为例进行演示,旨在帮助您了解联盟链的基础知识以及如何组建联盟链的方法,帮助您快速上手使用并体验华为云区块链服务。

您可以一个组建联盟链,联盟链的发起方可以动态邀请其他成员加入此联盟链,组建一个多成员参与的联盟链系统,即方便又灵活。各成员的节点运行在独立的VPC中,独立管理,安全可控。

说明

● 只用于场景体验,不用于实际应用。

● Fabric 1.1.0版本BCS服务支持更新至1.4.0版本,同时取消1.1.0版本BCS服务的创建,仅支持1.4.0版本BCS服务的创建。

● 对于已构建的1.1.0版本的联盟链,被邀请方服务仍旧可以创建1.1.0版本并加入联盟。

● 如果联盟链一方升级至1.4.0版本,请所有联盟成员同步升级,否则将会导致交易失败。升级方法请参见:Fabric 1.1.0版本BCS服务如何更新至1.4.0版本。

3.2 准备工作华为云区块链服务是基于容器所构建的集群进行部署的,同时为使外网能够正常访问,且保证数据不丢失,在开始部署区块链服务之前,需要先完成相应的环境准备工作,依次为:创建集群、绑定弹性IP、创建文件存储。

表 3-1 准备工作

准备顺序 操作指导 说明

1 准备弹性云服务器

该Demo需要在Linux环境中运行,请准备一台弹性云服务器,并在该服务器中安装开发工具。

2 安装开发工具

在弹性云服务器上安装golang1.11.5的开发环境,以及openssl lib库。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 17

Page 21: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

准备顺序 操作指导 说明

3 下载项目代码及链代码

下载项目代码,并将其保存至弹性云服务器的/root路径下。

链代码:chaincode

3.3 订购区块链服务您需要按照如下步骤订购一个区块链服务,并配置基本参数和网络节点。

步骤1 登录区块链服务管理控制台。

步骤2 单击页面右上角的“购买区块链服务”,在订购页面填写相关参数。

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

表 3-2 购买参数

参数 参数值

计费模式 按需计费

区域 使用默认区域

企业项目 选择已创建的企业项目,例如:default。如果您没有开通企业管理服务,将无法看到企业项目选项。

区块链服务名称 自定义名称,例如:sdk-union-invitor

版本类型 企业版

区块链服务类型 联盟链

共识策略 测试策略(SOLO)

资源初始密码 请自行设置

资源初始密码确认 请自行设置

高级配置 现在配置

集群 创建新的CCE集群

可用区 请自行选择

云主机规格 4核/8GB

云主机个数 1

高可用 否

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 18

Page 22: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 参数值

虚拟私有云 系统自动创建VPC

云主机登录方式 密码

root密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

确认密码 -

区块链管理初始密码 如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

区块链管理确认密码 -

版本信息 请选择最新版本

存储卷类型 文件存储卷

peer节点组织 创建1个节点组织,名称自定义,例如:org1

共识节点数量 1

开启共识节点数据老化 否

安全机制 ECDSA

节点组织存储容量 使用默认规格

账本数据存储方式 选择“文件数据库(goleveldb)”

通道配置 系统已默认将创建的节点组织添加到了通道中,请保持默认状态,不须修改。

添加RESTful APIs支持 否

配置弹性IP 是

弹性IP计费方法 按带宽计费

弹性IP带宽 5 Mbit/s

区块生成配置 否

步骤3 单击“立即购买”进入配置确认页面,确认信息无误后点击“提交”。

请等待数分钟,安装页面提示安装成功,查看服务及组织状态变为“正常”后,表示区块链服务部署完成。

----结束

3.4 邀请成员步骤1 在区块链服务左侧导航栏,成员管理界面中,单击“邀请成员”。

步骤2 在下拉列表中选择上述创建的服务和通道,在租户名称中填入被邀请方的租户名,单击“确定”。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 19

Page 23: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤3 (可选)单击“邀请一个新租户”可添加多个成员进行邀请。

说明

最多支持邀请5个成员,铂金版本支持提交工单修改成员配额,其他版本不支持。

----结束

3.5 被邀请方加入联盟链被邀请方可以在通知管理中查看收到的邀请,在创建BCS服务后,可以接受邀请,加入联盟链中。

步骤1 被邀请方登录区块链服务界面,在通知管理界面中,查看邀请。

步骤2 在邀请详情中,单击“创建BCS服务”,进入被邀请方服务创建BCS服务界面,创建名称为“sdk-union-invitee”的区块链服务。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 20

Page 24: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤3 在订购页面填写相关参数。

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

表 3-3 购买参数

参数 参数值

计费模式 按需计费

区域 使用与邀请方相同的区域

区块链服务名称 自定义名称,例如:sdk-union-invitee

版本类型 企业版

区块链服务类型 联盟链

集群类型 CCE集群

容器集群 选择创建好的容器集群

存储卷类型 文件存储卷

网络存储 选择创建好的文件存储

账本数据存储方式 选择“文件数据库(goleveldb)”

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 21

Page 25: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

参数 参数值

peer节点组织 创建1个节点组织,名称自定义,例如:org2

共识策略 测试策略(SOLO)

开启共识节点数据老化 否

多可用区 否

安全机制 ECDSA

版本信息 请选择最新版本

区块链管理初始密码 请自行设置

添加RESTful APIs支持 否

配置弹性IP 是

步骤4 单击“立即购买”进入配置确认页面,确认信息无误后点击“提交”。

请等待数分钟,安装页面提示安装成功,查看服务及组织状态变为“正常”后,表示区块链服务部署完成。

步骤5 被邀请方创建BCS服务后,在通知管理页面单击“同意”,加入联盟链。

----结束

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 22

Page 26: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

3.6 安装及实例化链代码邀请方和被邀请方都必须安装链代码,且使用的链代码名称和版本号必须一致。实例化链代码只需要由邀请方或被邀请方之一完成即可。

安装链代码

步骤1 单击新创建的区块链服务右侧的“区块链管理”,登录链代码管理页面。

步骤2 在登录页面输入用户名、密码、验证码,单击“登录”。

说明

● 用户名为admin,密码为您在创建区块链服务时设置的区块链管理初始密码,如果没有设置区块链管理初始密码,则以资源初始密码为准。

● 登录时,若您使用的是IE浏览器,有可能会跳转失败并提示使用证书不受信任,此时您可以单击此处进行处理。

步骤3 在链代码管理页面,单击页面左上角的 。

步骤4 在安装界面输入“链代码名称”、“链代码版本”,选择需要安装链代码的节点及链代码语言,添加链代码文件等,如下表:

参数 值

链代码名称 chaincode

链代码版本 1.0

账本数据存储方式 文件数据库(goleveldb)

选择全部Peer节点 勾选

组织&Peer节点 默认已同时选中所有节点。

链代码语言 Golang

链代码文件 下载示例链代码:chaincode.zip

链代码描述 根据需要填写相关描述。

步骤5 单击“安装”,完成链代码安装。

----结束

实例化链代码

步骤1 链代码安装完成后,在链代码列表的“操作”列,单击“实例化”。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 23

Page 27: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤2 选择实例化通道、链代码版本、背书策略、背书组织,并填写初始化函数、链代码参数等。如下表:

参数 值

实例化通道 channel

链代码版本 1.0

初始化函数 init

链代码参数 a,200,b,250

背书策略 全部组织背书

背书组织列表 选org1,org2

隐私保护配置 否

步骤3 单击“实例化”,稍等2-3分钟,完成链代码在当前通道上的实例化。

----结束

3.7 配置应用

操作场景

在邀请方发起交易的时候,邀请方需要下载自己的orderer管理员证书、org1组织的管理员证书以及被邀请者已隐去私钥的证书。

请妥善保管下载证书中的私钥,建议对私钥进行加密存储。

证书下载

步骤1 邀请者在区块链服务“服务管理”页面,单击目标服务名前的 ,在组织列表操作列下载相关证书。

下载sdk- union-invitor-orderer的管理员证书、org1组织的管理员证书,下载至本地默认路径并解压。

步骤2 被邀请者在区块链服务“服务管理”页面,单击目标服务名前的 ,在组织列表操作列下载相关证书。

下载org2组织的管理员证书至本地默认路径并解压。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 24

Page 28: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤3 被邀请者在下载的管理员证书中删除私钥的证书,如下图所示的两个文件。

步骤4 邀请方将下载的orderer管理员证书、org1组织的管理员证书以及被邀请者隐去私钥的证书,存放至准备的弹性云服务器的/root路径下。

----结束

SDK 配置下载

步骤1 邀请方在“服务管理”界面,单击“更多 > 下载SDK配置”。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 25

Page 29: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

步骤2 配置SDK文件参数。如下表:

须知

为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

表 3-4 参数表

参数 值

链代码名称 chaincode须知链代码名称需要和链代码安装&实例化时的一致。

证书存放根路径 /root

通道名称 channel

选择成员 org1,org2

步骤3 单击下载,将SDK下载至准备的弹性云服务器/root路径下,并解压,编辑“sdk-union-invitor-channel-sdk-config.yaml”文件,将organization的两个组织下中关于certificateAuthorities的内容删除,保存后将修改后的yaml文件拷贝到下载的项目代码的“fabric-union-go-demo/src/bcs/fixtures”目录下。

如图所示,将红框中的内容删除:

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 26

Page 30: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

----结束

3.8 部署应用步骤1 在代码中找到“/fabric-union-go-demo/src/main.go”文件,进行以下修改,参考下

图:

● 将配置文件名称修改为“sdk-union-invitor-channel-sdk-config.yaml”。

● 将文件中OrgName中的值修改为org1对应的组织哈希值。

步骤2 配置openssl环境变量和GOPATH路径,请根据openssl的lib库的实际安装路径进行配置。

参考配置如下:

export LD_LIBRARY_PATH=/home/openssl/libexport GOPATH=/root/fabric-union-go-demo

步骤3 找到fabric-union-go-demo/src路径下的main.go文件,执行如下命令进行交易。go run main.go

每执行一次表示b向a转账30,结果如下,b向a转30之后,再次查询a的余额为230。

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 27

Page 31: 最佳实践 - Huawei · 2020-06-09 · 区块链服务 最佳实践 文档版本 01 发布日期 2020-06-04 华为技术有限公司

邀请方与被邀请方都能在区块浏览器中查看同一笔交易记录。

----结束

区块链服务最佳实践 3 组建联盟链 Demo

文档版本 01 (2020-06-23) 版权所有 © 华为技术有限公司 28