Hyperledger Composer之开发部署业务网络(方式二)

playground方式

这个方式适合业务人员/开发人员快速测试开发业务网络,它提供图形化界面操作,可以直观的操作资产/参与者以及提交交易。安装这个环境很简单。如果要部署到正式环境,请先导出.bna文件,然后参考方式一中的部署到区块链上的操作。我的操作系统是ubuntu16.04。

要求

Docker Engine >= 17.03
Docker Compose >= 1.8

安装

注意: 先关闭其他fabric网络,防止冲突。
选择一个安装目录执行面命令:

curl -sSL https://hyperledger.github.io/composer/install-hlfv1.sh | bash
// 在当前目录下 会多出一个composer-data文件夹,一个composer.sh脚本
.
├── composer-data
├── composer.sh
└── ......

它会自动执行:

  1. 下载fabric相关镜像
  2. 启动fabric网络
  3. 生成composer配置文件
  4. 下载composer playground镜像
  5. 启动composer playground
  6. 把预先准备的admin证书材料复制到composer里面

效果

最终执行完毕后,会跳转到http://localhost:8080/editor界面

这里写图片描述

基本操作

开启composer:

./composer

关闭composer:

./composer  stop

部署业务网络

它会部署到自带的fabric测试网络上。

这里写图片描述

测试业务网络

我们使用composer playground自带的basic-sample-network来演示。这个业务网络定义了:SampleParticipant 参与者,SampleAsset 资产,SampleTransaction 交易,SampleEvent 事件。创建资产,参与者是通过点击右侧+create 按钮,输入json格式化数据,然后提交即可。

  1. 创建两个参与者,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"
    }
    

    结果:

    这里写图片描述

  2. 创建一个归属于A的资产

    {
      "$class": "org.acme.sample.SampleAsset",
      "assetId": "1",
      "owner": "resource:org.acme.sample.SampleParticipant#A",
      "value": ""
    }
    

结果:

![这里写图片描述](https://img-blog.csdn.net/20170831162608960?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc4MTg1NDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
  1. 修改资产值( 执行事务)

    {
      "$class": "org.acme.sample.SampleTransaction",
      "asset": "resource:org.acme.sample.SampleAsset#1",
      "newValue": "1000"
    }
    

    这里写图片描述

    执行完毕后 再次查看SampleAsset

    这里写图片描述

测试权限控制

  1. 查看权限定义规则

    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才有颁发身份的权限。

  2. 颁发身份
    点击右上角PeerAdmin ,切换到admin身份,点击右侧Issue New ID

这里写图片描述
这里写图片描述

按照上面步骤再添加 b,最后效果如下:

![这里写图片描述](https://img-blog.csdn.net/20170831182354919?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjc4MTg1NDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
  1. 测试不同身份
    根据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后,需要参考方式一

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值