Hyperledger Composer CLI Ping 到业务网络 returns AccessException

Hyperledger Composer CLI Ping to a Business Network returns AccessException

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

我在他们的社区聊天中加入了 composer 频道,在 Discord 中看起来像是 运行 之类的,并且问了同样的问题但没有得到回应,我在 SO 中有更好的体验。

这就是问题所在:我部署了我的业务网络,安装它,启动它,创建我的网络管理卡并导入它,然后测试是否一切正常我必须命令 composer network ping --card NAME -OF-我的管理员卡

然后出现此错误:

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 的任何步骤。我也遵循了 playground 教程。我没有做的是用 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 网络,但也失败了。我运行没有选择

希望这段描述不会太长而忽略它。提前致谢

感谢提问!

第一种可能性是您的网络名称是 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. 更新 Business Network 项目目录中现有 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