【问题标题】:Hyperledger Fabric: peer chaincode instantiate errorHyperledger Fabric:对等链码实例化错误
【发布时间】:2017-10-18 13:11:32
【问题描述】:

错误启动容器:无法生成特定于平台的 docker 构建:从构建返回的错误:1“无法加载包:包 ../../bin/github.com/hyperledger/fabric/chaincode/marbles:打开 /bin/github.com/hyperledger/fabric/chaincode/marbles:没有这样的文件或 目录。

我看到它正在寻找一个相对目录。相对于什么?链码安装很好。如果安装了chaincode,为什么找不到它进行实例化? 1个同行。 1个单独订购者。频道加入正常。

【问题讨论】:

  • 它看起来无法编译链码,因为它需要一个未安装在容器中的依赖包。
  • 这里使用的过程或命令是什么,能详细说明吗?

标签: hyperledger-fabric hyperledger


【解决方案1】:

链码安装并不意味着你已经正确映射了你的链码路径,

peer chaincode install -p {path} -n {} -v {}

Chaincode 实例化构建并实例化您的链码。

peer chaincode instantiate -n {} -v {} -c {} -C {}
  • 在 docker compose 文件中仔细检查卷/链码映射 cli。
  • 安装链码时使用实际路径。

【讨论】:

  • 我从链代码所在的目录安装。即 -p ./ 尝试重新安装会产生正确的错误,即已经存在。 Chaincode.0 文件存在于 /var/hyperledger/production/chaincodes 中。不使用码头工人。我知道它在安装时说 OK,我相信它说收到 0 块或类似的东西。
  • 啊。所以链码路径必须是类似于 github.com/hyperledger/fabric/chaincode/ccname 的东西,它以某种方式与 gopath 相关。完整路径是 /usr/local/go/src/github.com/hyperledger/fabric/chaincode/ccname。 $GOPATH 是 /usr/local/go/bin。 $GOROOT 是 /usr/local/go。所以fabric期望$GOROOT/src/中的链码?看起来很奇怪但有效。谢谢
  • @MohamedYoussef 很抱歉提前劫持了这个问题。我正在使用 NodeJS SDK,安装成功,实例化失败。你能看看这个问题吗:stackoverflow.com/questions/50963477/…
【解决方案2】:

路径映射中有一个“隐藏的”期望。它希望在 gopath 下有一个 /src 目录,这给我带来了一些麻烦,直到我弄明白为止。

这是我的解决方案:

在您的 compose yaml 中,您将设置 env 变量:

- GOPATH=/opt/gopath

然后您可以在 CLI 中安装并实例化:

SIGNED_CHAINCODE_LOCATION=/opt/gopath/src/chaincode/<cc_dir>/<signed_cc>.out

peer chaincode install /${SIGNED_CHAINCODE_LOCATION} 

然后像往常一样实例化。 如果您不需要打包和签名,只需使用目录而不是 .out 文件即可。

在我的例子中,我在 peer 中添加了一个工作目录,将链码设置为我的基本区块链目录的相对目录:- ./chaincode/:/opt/gopath/src/chaincode/ 并将 go 文件夹转储到那里。

【讨论】:

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