Hyperledger Composer之开发部署业务网络(方式二)
2017-08-30 10:42
381 查看
playground方式
这个方式适合业务人员/开发人员快速测试开发业务网络,它提供图形化界面操作,可以直观的操作资产/参与者以及提交交易。安装这个环境很简单。如果要部署到正式环境,请先导出.bna文件,然后参考方式一中的部署到区块链上的操作。我的操作系统是ubuntu16.04。
要求
Docker Engine >= 17.03Docker Compose >= 1.8
安装
注意:先关闭其他fabric网络,防止冲突。
选择一个安装目录执行面命令:
curl -sSL https://hyperledger.github.io/composer/install-hlfv1.sh | bash
// 在当前目录下 会多出一个composer-data文件夹,一个composer.sh脚本 . ├── composer-data ├── composer.sh └── ......
它会自动执行:
下载fabric相关镜像
启动fabric网络
生成composer配置文件
下载composer playground镜像
启动composer playground
把预先准备的admin证书材料复制到composer里面
效果
最终执行完毕后,会跳转到http://localhost:8080/editor界面基本操作
开启composer:./composer
关闭composer:
./composer stop
部署业务网络
它会部署到自带的fabric测试网络上。测试业务网络
我们使用composer playground自带的basic-sample-network来演示。这个业务网络定义了:
SampleParticipant参与者,
SampleAsset资产,
SampleTransaction交易,
SampleEvent事件。创建资产,参与者是通过点击右侧
+create按钮,输入
json格式化数据,然后提交即可。
创建两个参与者,id分别为A和B
{ "$class": "org.acme.sample.SampleParticipant", "participantId": "A", "firstName": "zhang", "lastName": "san" }
{ "$class": "org.acme.sample.SampleParticipant", "participantId": "B", "firstName": "li", "lastName": "si" }
结果:
创建一个归属于A的资产
{ "$class": "org.acme.sample.SampleAsset", "assetId": "1", "owner": "resource:org.acme.sample.SampleParticipant#A", "value": "" }
结果:
修改资产值( 执行事务)
{ "$class": "org.acme.sample.SampleTransaction", "asset": "resource:org.acme.sample.SampleAsset#1", "newValue": "1000" }
执行完毕后 再次查看
SampleAsset:
测试权限控制
查看权限定义规则permissions.acl
/** * Sample access control list. */ //任何人都有读取权限 rule EverybodyCanReadEverything { description: "Allow all participants read access to all resources" participant: "org.acme.sample.SampleParticipant" operation: READ resource: "org.acme.sample.*" action: ALLOW } //任何人都可以提交交易 rule EverybodyCanSubmitTransactions { description: "Allow all participants to submit transactions" participant: "org.acme.sample.SampleParticipant" operation: CREATE resource: "org.acme.sample.SampleTransaction" action: ALLOW } //只有资产的拥有者才可以进行所有操作(增删改查),当然了 其他人是可以读取查看的(第一个权限规则) rule OwnerHasFullAccessToTheirAssets { description: "Allow all participants full access to their assets" participant(p): "org.acme.sample.SampleParticipant" operation: ALL resource(r): "org.acme.sample.SampleAsset" condition: (r.owner.getIdentifier() === p.getIdentifier()) action: ALLOW } // 系统权限:CRUD 如 PeerAdmin , Admin rule SystemACL { description: "System ACL to permit all access" participant: "org.hyperledger.composer.system.Participant" operation: ALL resource: "org.hyperledger.composer.system.**" action: ALLOW }
上一个步骤是在PeerAdmin身份下执行的所有的操作,我们需要为两个参与者颁发身份。注意:只有admin才有颁发身份的权限。
颁发身份
点击右上角
PeerAdmin,切换到
admin身份,点击右侧
Issue New ID
按照上面步骤再添加
b,最后效果如下:
测试不同身份
根据
permissions.acl中的定义规则,对于id为1的资产,只有拥有者才能执行全部操作,其他人只能查看。 切换到
b身份,我们来修改下资产value ,查看效果:
提示错误:
Error: Error trying invoke chaincode. Error: chaincode error (status: 500, message: Error: Participant 'org.acme.sample.SampleParticipant#B' does not have 'UPDATE' access to resource 'org.acme.sample.SampleAsset#1')
很明显
b身份 没有修改这个资产的权限,和定义的权限规则一致。相似的你可以测试其他几个权限规则,你页可以修改规则,重新部署来测试。
部署业务网络到正式环境中
导出bna后,需要参考方式一。
相关文章推荐
- Hyperledger Composer之开发部署业务网络(方式一)
- Hyperledger Composer 生成业务网络访问卡(Business Network Card)
- 使用Hyperledger Composer将业务网络部署到单个组织的Hyperledger Fabric区块链上
- 使用Hyperledger Composer将业务网络部署到单个组织的Hyperledger Fabric区块链上
- Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)
- 使用Hyperledger Composer将业务网络部署到多个组织的Hyperledger Fabric区块链上
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- 面对对象之差异化的网络数据交互方式--单机游戏开发之无缝切换到C/S模式
- Winform开发框架的业务对象统一调用方式
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- 基于业务单元的开发与部署模式
- RMI网络编程开发之一 JAVA“进程间”通信方式
- Android开发技术网络篇之── http协议post请求方式
- Android开发请求网络方式详解
- 用三层架构与设计模式思想部署企业级数据库业务系统开发
- Android开发请求网络方式详解
- Android开发请求网络方式详解
- linux_c 网络开发日记(3)系统调用方式访问文件
- 用Axis开发Web Service的三种部署方式测试
- Hyperledger Composer 连接到Fabric网络的配置文件