将Hyperledger Composer CLI Ping到业务网络会返回AccessException

时间:2018-08-22 22:12:32

标签: ping hyperledger hyperledger-composer

我正在尝试学习Hyperledger Composer,但似乎是一项相对较新的技术,我的意思是教程很少,解决许多问题的方法也很少,教程没有提到遵循命令时可能出现的错误情况,这意味着对于这些错误也没有解决方案。

我已经加入了作曲者频道的社区聊天中,看起来好像它正在Discord中运行,还是在没有回答的情况下问了同样的问题,所以我在SO方面有更好的经验。

这是问题:我已经部署了我的业务网络,安装了它,启动了它,创建了我的网络管理卡并导入了它,然后测试一切是否正常,我必须命令作曲家网络ping --card NAME-OF -MY-ADMIN-CARD

出现此错误:

juan@JuanDeDios:~/proyectos/inovacion/a3-poliza-microservice$ composer network ping --card admin@a3-policy-microservice
Error: transaction returned with failure: AccessException: Participant 'org.hyperledger.composer.system.NetworkAdmin#admin' does not have 'READ' access to resource 'org.hyperledger.composer.system.Network#a3-policy-microservice@0.0.1'
Command failed

我认为它必须与permission.acl文件做些事情,并向所有人授予所有权限,因此对任何人都没有任何限制,然后再次尝试,但失败了。

所以我以为我必须卸载我的业务网络并重新创建它,我也删除了.bna和network.card文件,因此所有内容都会再次创建,但结果相同。

我的另一尝试是更新业务网络,但没有成功,发生了相同的错误,我确信我没有错过任何tutorial步骤。我也遵循了游乐场教程。我没有做过用Yeoman创建另一个应用程序的事情,但是如果我找不到解决该问题的解决方案(不需要我创建另一个应用程序),我会做的。

这是我的步骤: 1。用Yeoman创建了我的应用

yo hyperledger-composer:businessnetwork

2-。选择了Apache-2.0作为我的许可证 3-。创建a3-policy-microservice作为业务网络的名称 4-创建了org.microservice.policy(是的,我更改了名称,但我完全知道) 5-使用选择“否”选项的模板生成了我的应用

6-。创建了我的资产,参与者和交易 7-。将我的许可规则更改为我的 8。我生成了.bna文件

composer archive create -t dir -n .

9-。然后安装我的bna文件

composer network install --card PeerAdmin@hlfv1 --archiveFile a3-policy-microservice@0.0.1.bna

10-。然后启动我的网络并创建我的网络管理员卡

composer network start --networkName a3-policy-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card

11-。导入了我的卡

composer card import --file networkadmin.card

12-。试图ping我的网络

composer network ping --card admin@a3-poliza-microservice

发生错误

后来,我试图再次创建所有内容,以关闭我的结构并重新启动它,并从第一步开始创建网络。

我的另一尝试是更改权限并升级我的bna网络,但是它也失败了。我的选项用完了

希望此描述不要太久而忽略它。预先感谢

1 个答案:

答案 0 :(得分:0)

感谢您的提问!

第一种可能是您的网络名称为a3-policy-network,但您正在ping通名为a3-poliza-microservice的网络-一旦获得正确的ACL(当前,这就是您要尝试的错误)解决)。

升级过程通常如下:

在执行完第12步后(假设使用正确的网络名称,由于受限的ACL条件而无法ping通业务网络),您将拥有:

  1. 进行更改以包含您的系统ACL,例如

/ ** *示例访问控制列表。 * /

rule SystemACL {
description: "System ACL to permit all access"
participant: "org.hyperledger.composer.system.Participant"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}

rule NetworkAdminUser {
description: "Grant business network administrators full access to user resources"
participant: "org.hyperledger.composer.system.NetworkAdmin"
operation: ALL
resource: "**"
action: ALLOW
}

rule NetworkAdminSystem {
description: "Grant business network administrators full access to system resources"
participant: "org.hyperledger.composer.system.NetworkAdmin"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
  1. 更新企业网络项目目录中现有package.json中的“版本”字段(即,需要以下一个增量更改它-例如,将version属性从0.0.1更新为0.0.2。 )

  2. 在同一目录中,运行以下命令:

    composer archive create --sourceType dir --sourceName . -a a3-policy-network@0.0.2.bna
    
  3. 现在首先安装新的业务网络代码:

    composer network install --card PeerAdmin@hlfv1 --archiveFile a3-policy-network@0.0.2.bna
    
  4. 然后执行必要的升级步骤(参数的缩写形式为单个“-”):

    composer network upgrade -c PeerAdmin@hlfv1 -n a3-policy-network -V 0.0.2
    
  5. 几秒钟后,再次对网络执行ping操作,以查看ACL更改现已生效:

    composer network ping -c a3-policy-network