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界面

Hyperledger Composer之开发部署业务网络(方式二)_第1张图片

基本操作

开启composer:

./composer

关闭composer:

./composer  stop

部署业务网络

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

Hyperledger Composer之开发部署业务网络(方式二)_第2张图片

测试业务网络

我们使用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"
    }

    结果:

    Hyperledger Composer之开发部署业务网络(方式二)_第3张图片

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

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

    结果:

    Hyperledger Composer之开发部署业务网络(方式二)_第4张图片

  3. 修改资产值( 执行事务)

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

    Hyperledger Composer之开发部署业务网络(方式二)_第5张图片

    执行完毕后 再次查看SampleAsset

    Hyperledger Composer之开发部署业务网络(方式二)_第6张图片

测试权限控制

  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

    Hyperledger Composer之开发部署业务网络(方式二)_第7张图片
    Hyperledger Composer之开发部署业务网络(方式二)_第8张图片

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

    Hyperledger Composer之开发部署业务网络(方式二)_第9张图片

  3. 测试不同身份
    根据permissions.acl中的定义规则,对于id为1的资产,只有拥有者才能执行全部操作,其他人只能查看。 切换到b身份,我们来修改下资产value ,查看效果:

    Hyperledger Composer之开发部署业务网络(方式二)_第10张图片

    提示错误:

    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)