【问题标题】:IBM Blockchain (Hyperledger) - "Error when deploying chaincode"IBM Blockchain (Hyperledger) - “部署链码时出错”
【发布时间】:2017-01-09 12:22:17
【问题描述】:

我正在按照说明使用 IBM Bluemix 仪表板上的 swagger API 将一些链代码部署到 IBM Hyperledger 区块链。

为了部署一些链码,我需要提交一个 JSON 请求,其中包含链码存储库的路径:

{
  "jsonrpc": "2.0",
  "method": "deploy",
  "params": {
    "type": 1,
    "chaincodeID": {
      "path": "https://github.com/series0ne/learn-chaincode/tree/master/finished"
    },
    "ctorMsg": {
      "function": "init",
      "args": [
        "Hello, world"
      ]
    },
    "secureContext": "user_type1_0"
  },
  "id": 0
}

我在尝试部署之前已登录 user_type1_0,但这是我得到的结果:

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32001,
    "message": "Deployment failure",
    "data": "Error when deploying chaincode: Error getting chaincode package bytes: Error getting code 'go get' failed with error: \"exit status 1\"\npackage github.com/series0ne/learn-chaincode/tree/master/finished: cannot find package \"github.com/series0ne/learn-chaincode/tree/master/finished\" in any of:\n\t/opt/go/src/github.com/series0ne/learn-chaincode/tree/master/finished (from $GOROOT)\n\t/opt/gopath/_usercode_/424324290/src/github.com/series0ne/learn-chaincode/tree/master/finished (from $GOPATH)\n\t/opt/gopath/src/github.com/series0ne/learn-chaincode/tree/master/finished\n"
  },
  "id": 0
}

有什么想法吗?

附:目前在 Bluemix 上运行 Hyperledger 区块链的提交级别 0.6.1。

【问题讨论】:

    标签: ibm-cloud blockchain hyperledger hyperledger-fabric


    【解决方案1】:

    尝试删除部署 URL 的“树/主”部分。请注意,下面链接的示例不包括这部分 url:

    https://github.com/IBM-Blockchain/learn-chaincode#deploying-the-chaincode

    这个 url 将被传递到 peer 内部的 go get <url> 命令中,该命令将下载链代码以便可以编译它。因此,此 url 必须与此命令接受的格式匹配。

    【讨论】:

    • 剥离“tree/master”会导致 404:(github.com/series0ne/learn-chaincode/finished)
    • 是的,根据@AndrewTharp 的回答,该网址在删除这些部分后将无法在您的浏览器中使用,但它应该可以在部署请求中使用。
    • 如果我使用 v2.0 分支,则路径为 github.com/GitHub_ID/learn-chaincode/tree/v2.0/finished - 但是,如果更改 url,区块链网络将尝试从主分支获取文件。所以我该怎么做?将 v2.0 与 master 合并?
    • 是否可以从私有仓库部署链码?
    • 不,您不能从私有存储库进行部署。您无法通过 REST API 将 git 凭据传递给对等方进行部署,因此它只能提取公共存储库。
    【解决方案2】:

    我尝试根据 Dale 的建议使用 Learn Chaincode 示例,将存储库的地址从 https://github.com/GitHub_ID/learn-chaincode/tree/master/finished 更改为 https://github.com/GitHub_ID/learn-chaincode/finished。用于该测试的区块链网络在具有 Hyperledger Fabric 版本 0.6.1 的 Bluemix 上运行。通过修改后的路径,可以使用区块链网络界面中的 API 选项卡来部署链代码。

    以下是一些需要检查的事项。

    • https://github.com/IBM-Blockchain/learn-chaincode 的 v2.0 分支应与运行 Hyperledger Fabric 版本 0.6.1 的区块链网络一起使用。即使使用来自https://github.com/IBM-Blockchain/learn-chaincode 的 v2.0 分支,您的个人分支是否也如此?
    • 是否从用于注册 user_type1_0 用户的同一验证对等方发布的链代码部署?验证对等点可以在 API 选项卡的顶部选择。 Learn Chaincode 说明中有一条说明,表明同一个验证对等方必须注册用户并部署链码。

    【讨论】:

    • 如果我使用 v2.0 分支,则路径是 github.com/GitHub_ID/learn-chaincode/tree/v2.0/finished - 但是,如果更改 url,区块链网络将尝试从 master 分支获取文件。所以我该怎么做?将 v2.0 与 master 合并?
    • 是否可以从私有仓库部署链码?
    【解决方案3】:

    您的 go get 是命令由于 ACL 而无法访问您的包的位置,或者它的参数根据 IBM 文档无效。请重新检查其格式

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多