1

我正在尝试连接 Composer 和 Fabric 之间的点,以构建一个支持多个组织的概念验证应用程序。因此,我使用 Composer 教程来构建业务网络,然后是“部署到多组织业务网络”教程(它引用了 Fabric“构建您的第一个网络”教程,但告诉您使用不同的 git repo BYFN 教程,我做了)。

我能够使用 Composer 的开发人员教程来构建简单的贸易业务网络,然后将存档复制到我使用 Fabric 构建多组织业务网络的文件夹中(这需要我想使用的 couchdb无论如何,为了能够进行更复杂的查询),启动它,然后使用资源管理器 REST API 创建参与者、资产和交易交易。这一切都很好。

然后,我进入 Composer Queries 教程以添加 queries.qry,生成新存档,复制并更新存档的结构安装,停止并更新并重新启动 REST API 服务器。我现在可以在 REST API 中看到查询,所以我知道它已经获取了新代码。但是,无论我尝试通过 REST API 资源管理器运行哪个查询,它们都返回相同的错误:

  {
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "Error trying to query business network. Error: chaincode error (status: 500, message: Error: Couch DB Error:invalid_operator,  Status Code:400,  Reason:Invalid operator: $class)",
    "stack": "Error: Error trying to query business network. Error: chaincode error (status: 500, message: Error: Couch DB Error:invalid_operator,  Status Code:400,  Reason:Invalid operator: $class)\n    at channel.queryByChaincode.then.catch (/usr/local/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:809:34)\n    at <anonymous>"
  }
}

本教程中最简单的查询是一个简单的不带参数的 get all,所以问题不可能是我传入的问题(因为实际上没有任何东西可以传入)。问题必须是系统性的。

示例:获取所有商品查询

query selectCommodities {
  description: "Select all commodities"
  statement:
      SELECT org.acme.biznet.Commodity
}

错误消息说它不喜欢 $class 在响应中。

The response from the GET all commodities endpoint (which doesn't use the query) is:

[
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "KPX",
    "description": "KnitPicks",
    "mainExchange": "SP",
    "quantity": 50,
    "owner": "resource:org.acme.biznet.Trader#4567"
  },
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "KPX2",
    "description": "KnitPicks",
    "mainExchange": "SP",
    "quantity": 120,
    "owner": "resource:org.acme.biznet.Trader#4567"
  }
]

并且 selectCommodities 查询示例响应的 API 文档具有相同的格式:

[
  {
    "$class": "org.acme.biznet.Commodity",
    "tradingSymbol": "string",
    "description": "string",
    "mainExchange": "string",
    "quantity": 0,
    "owner": {}
  }
]

所以我不确定出了什么问题,但似乎要么是查询本身与 CouchDB 不兼容的问题,要么是从 Composer 中的查询到低级 Fabric API 的翻译层问题?后一种理论得到了 Composer API 层返回的 500 具有嵌套 400 错误的支持,这意味着 Composer 层通过 hlfconnection 传递的某些内容是无效的。

任何帮助是极大的赞赏!我无法想象我是第一个遇到这个问题的人,但我没有在网上找到任何直接相关的东西。提前致谢!

作曲家版本 0.16.6

码头工人 PS:

f844a2957bd5 dev-peer0.org2.example.com-tutorial-network-0.16.6-95a0f8a4fe6ff659a5943abc80b26a1134e77b74942eef102fa92c8480b680eb "chaincode -peer.add…" 24 小时前 24 小时前 dev-peer0.org.16.example.com0 6 556c9f3841ce dev-peer0.org1.example.com-tutorial-network-0.16.6-e4f751b9b8b3a307f6bf25ea97ccf3625bd75730a1dcb3f989a9a34bbb73f536 “chaincode -peer.add…” 24 小时前 24 小时前 64 小时 dev-peer0.com111-dev-peer0.com1 .6 831ca5b9a839 dev-peer1.org2.example.com-tutorial-network-0.16.6-a184efa69bdcbcb2e6ec3764e01d56f0c574ca0ad09d4656269d3b7aefbc44b8“链码-peer.add…”24 小时前 24 小时前 dev-peer1.org2.example.com-tutorial-network-0.16.6 6faf5b875df9 dev-peer1.org1.example.com-tutorial-network-0.16.6-44b9f2a6ea1ed75f106aa0b5fc8387c95cbde9eee551df9fb36d16709f2db981. " 24 小时前 24 小时前 dev-peer1.org1.example.com-tutorial-network-0.16.6 afbcbe9292fd dev-peer1.org2.example.com-mycc-1.0-26c2ef32838554aac4f7ad6f100aca865e87959c9a126e86d764c8d01fadd8346ab hours." 链码前 26 小时前 dev-peer1.org2.example.com-mycc-1.0 8444f922486d dev-peer0.org1.example.com-mycc-1。0-384f11f484b9302df90b453200cfb25174305fce8f53f4e94d45ee3b6cab0ce9 "chaincode -peer.add…" 26 hours ago Up 26 hours dev-peer0.org1.example.com-mycc-1.0 753588bacb47 dev-peer0.org2.example.com-mycc-1.0-15b571b3ce849066b7ec74497da3b27e54e0df1345daff3951b94245ce09c42b "chaincode -peer .add..." 26 小时前 26 小时前 26 小时前 dev-peer0.org2.example.com-mycc-1.0 662b61c00673 hyperledger/fabric-peer "peer node start" 26 小时前 26 小时前 0.0.0.0:10051->7051/tcp , 0.0.0.0:10053->7053/tcp peer1.org2.example。com 80a37822a0d6 hyperledger/fabric-peer "peer node start" 26 小时前 Up 26 hours 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com 2878eacafb29 hyperledger/fabric -peer "peer node start" 26 小时前 Up 26 hours 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com e8f3259dca2a hyperledger/fabric-peer "peer node start" 26 小时前 Up 26 hours 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com a79c29e762cd hyperledger/fabric-couchdb "tini -- /docker-ent..." 26 小时前 26 小时前 4369/tcp, 9100/tcp, 0.0.0.0:6984->5984/tcp couchdb1 34271122957a hyperledger/fabric-couchdb "tini -- /docker-ent…" 26 小时前 Up 26 hours 4369/tcp, 9100/tcp, 0.0.0.0:8984->5984/tcp couchdb3 8b88227ea7a7 hyperledger/fabric-ca "sh -c 'fabric-ca-se..." 26 小时前 Up 26 hours 0.0.0.0:7054->7054/tcp ca_peerOrg1 a75fa6328b02 hyperledger/fabric-ca "sh -c 'fabric-ca-se..." 26 小时前 Up 26 hours 0.0.0.0:8054->7054/tcp ca_peerOrg2 4e21c3c8fa16 hyperledger/fabric-orderer "orderer" 26 小时26 小时前 0.0.0.0:7050->7050/tcp orderer.example.com 2881999a4c7b hyperledger/fabric-couchdb "tini -- /docker-ent..." 26 小时前 26 小时前 4369/tcp, 9100/tcp, 0.0 .0.0:7984->5984/tcp couchdb2 8a77a5e86a3a hyperledger/fabric-couchdb "tini -- /docker-ent..." 26 hours ago Up 26 hours 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp couchdb0

4

1 回答 1

1

这可能是由于 Composer 版本 (16.x) 与 Fabric (1.1) 版本相匹配。Composer 0.16.x 仅适用于 Fabric v1.0.x(您可以从日志/docker images安装的内容中检查)。发行说明详细说明了哪些版本的作曲家将与哪些版本的面料一起使用。例如 https://github.com/hyperledger/composer/releases

Composer v0.18.2 and above is compatible with Fabric 1.1 GA only
Composer v0.18.0 -> v0.18.1 : compatible with the Fabric 1.1 RC1 driver only
Composer v0.17.3 -> v0.17.6 (old) are compatible with Fabric 1.1 alpha driver only

Composer v0.16.x -> compatible with Fabric v1.0.x only
于 2018-03-21T12:17:16.493 回答