【问题标题】:Chaincode for Developers tutorial error while instantiate chaincode实例化链代码时开发人员教程错误的链代码
【发布时间】:2017-08-23 15:26:06
【问题描述】:

这是“Chaincode for Developers Cli error terminal 3”的后续问题。我正在为开发人员教程做链代码,当我运行命令peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc 时出现以下错误。 3号航站楼。

命令peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc的输出:

错误:获取 (myc) 订购者端点时出错:批准 GetConfigBlock 时出错:rpc 错误:代码 = 未知 desc = 链码错误(状态:500,消息:“GetConfigBlock”请求未通过通道 [myc] 的授权检查:[无法获取频道 [myc]] 的策略管理器)

命令的输出:

peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0

2017-08-23 15:10:21.852 UTC [msp] GetLocalMSP -> DEBU 001 返回现有的本地 MSP 2017-08-23 15:10:21.852 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 获取默认签名身份 2017-08-23 15:10:21.852 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 使用默认 escc 2017-08-23 15:10:21.852 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 使用默认 vscc 2017-08-23 15:10:21.904 UTC [golang-platform] getCodeFromFS -> DEBU 005 getCodeFromFS chaincodedev/chaincode/sacc 2017-08-23 15:10:22.080 UTC [golang-platform] func1 -> DEBU 006 丢弃 GOROOT 包 fmt 2017-08-23 15:10:22.081 UTC [golang-platform] func1 -> DEBU 007 丢弃提供的包 github.com/hyperledger/fabric/core/chaincode/shim 2017-08-23 15:10:22.081 UTC [golang-platform] func1 -> DEBU 008 丢弃提供的包 github.com/hyperledger/fabric/protos/peer 2017-08-23 15:10:22.082 UTC [golang-platform] GetDeploymentPayload -> DEBU 009 完成 2017-08-23 15:10:22.085 UTC [msp/identity] 符号 -> DEBU 00a 符号:明文:0AA3080A5B08031A0B08DEB5F6CC0510...DF65FC130000FFFFF65F638E00120000 2017-08-23 15:10:22.085 UTC [msp/identity] 符号 -> DEBU 00b 符号:摘要:00E981BB0FC2A7D32706156C0F2E1521E5B62F58E231787D87B2CB57CD10C3FA 2017-08-23 15:10:22.089 UTC [chaincodeCmd] 安装-> DEBU 00c 远程安装响应: 2017-08-23 15:10:22.089 UTC [main] main -> INFO 00d 退出.....

我不得不注释掉这一行

command: /bin/bash -c './script.sh

在“docker-compose-simple.yaml”文件中以运行命令

docker exec -it cli bash

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: docker hyperledger hyperledger-fabric


    【解决方案1】:

    嗯,我可以看到一些问题,这些问题可能是您描述的错误的根本原因。首先请注意,在实例化命令期间:

    peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
    

    您没有指向排序服务,因为实例化是一个背书交易,最终它必须提交给排序服务,因此它应该是这样的:

    peer chaincode instantiate -o ordererEndpoint:7050 -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
    

    请注意,您收到的错误会提示您,因为它表示无法获取配置块:

    错误:获取 (myc) 订购者端点时出错:批准 GetConfigBlock 时出错:rpc 错误:代码 = 未知 desc = 链码错误(状态:500,消息:“GetConfigBlock”请求未通过通道 [myc] 的授权检查:[无法获取频道 [myc]] 的策略管理器)

    另外,请确保myc 是现有频道,并且您事先已正确创建它。你可以这样做:

    peer channel list
    

    检索对等体加入的频道列表。

    【讨论】:

      【解决方案2】:

      您禁用的脚本具有用于创建通道和将对等方加入通道的命令,这是使用链代码进行调用的先决条件。

      【讨论】:

      • 好的。但是,如果我不禁用它,那么我将无法为终端 3 运行“docker exec -it cli bash”,它会回到我原来的问题“开发人员 Cli 错误终端 3 的链码”。
      • 您是否手动创建了工件(创世块、交易工件...)?
      • 嗨!感谢您的答复。我用另一种方法完成了这个。谢谢!
      • 酷,也许您可​​以创建一个新答案并在那里编写您的解决方案,并将其标记为正确的解决方案。
      【解决方案3】:

      我认为您的问题是由图像版本引起的。您使用的是 1.0.1,您应该更改为 1.0.0。检查版本代码是

      sudo docker images
      

      【讨论】:

      • @PrashantDewan - 如果您可以分享您所做的事情,这将对其他人有所帮助
      【解决方案4】:

      如果您在 Windows7 上使用 docker 工具箱来运行开发者教程,则需要更改行尾符号以在 scripts.sh 中与 unix 兼容。您可以使用notepadd++ -> 编辑 -> EOL 转换 -> 选择 unix。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多