我正在尝试学习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网络,但是它也失败了。我的选项用完了
希望此描述不要太久而忽略它。预先感谢
答案 0 :(得分:0)
感谢您的提问!
第一种可能是您的网络名称为a3-policy-network
,但您正在ping通名为a3-poliza-microservice
的网络-一旦获得正确的ACL(当前,这就是您要尝试的错误)解决)。
升级过程通常如下:
在执行完第12步后(假设使用正确的网络名称,由于受限的ACL条件而无法ping通业务网络),您将拥有:
/ ** *示例访问控制列表。 * /
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
}
更新企业网络项目目录中现有package.json
中的“版本”字段(即,需要以下一个增量更改它-例如,将version属性从0.0.1更新为0.0.2。 )
在同一目录中,运行以下命令:
composer archive create --sourceType dir --sourceName . -a a3-policy-network@0.0.2.bna
现在首先安装新的业务网络代码:
composer network install --card PeerAdmin@hlfv1 --archiveFile a3-policy-network@0.0.2.bna
然后执行必要的升级步骤(参数的缩写形式为单个“-”):
composer network upgrade -c PeerAdmin@hlfv1 -n a3-policy-network -V 0.0.2
几秒钟后,再次对网络执行ping操作,以查看ACL更改现已生效:
composer network ping -c a3-policy-network