java - 无法在超级账本结构中调用链码
问题描述
我正在学习如何使用 Hyperledger Fabric 和 Chaincode。基本上,我按照这个链接在 Hyperledger 结构中创建了一个 Java 链码,但我无法在 cli/channel 中调用我的链码。
我使用BYFN.sh
Hyperledger Fabric 官方指南来构建 Fabric 网络,并按照博客制作 Gradle 和 Java 链码。
在我尝试调用它之后
peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["createWallet","tom","100"]}'
我收到了这个错误:
错误:获取 endorser 客户端调用时出错:endorser 客户端无法连接到 peer0.org2.example.com:7051:无法创建新连接:连接错误:desc = "传输:拨号时出错:拨号 tcp 172.21.0.4:7051 :连接:连接被拒绝”
如果有人可以指出方向并告诉我可能出现的问题,那将非常有帮助。我试图用谷歌搜索,但找不到任何有用的信息。
更新:
原来是端口号问题。我进入对等方的容器之一,结果发现端口号是 9051 而不是 7051。所以我在链码调用命令中更改了端口号,一切正常。
解决方案
您在命令中为 peer0.0rg1.example.com 和 peer0.0rg2.example.com 指定相同的端口号。如果您使用 byfn 拓扑创建网络 peer0.org2 在端口 9051 上侦听。此外,在询问此类问题时,最好提供您的配置,即 docker-compose.yaml 文件。这在理解问题时非常有用。
在您的 compose.yaml 文件中,您可能没有将 Org2 的端口号映射到不同的端口号。
您可以尝试以下任何一种方法 -
查看 docker yaml 文件中定义的端口号,并在命令中使用该端口号来调用链码。每个同龄人应该是不同的。
修改 yaml 文件,让 7051 重定向到一个新的端口号,比如 9051。如下所示
环境:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP 卷:
- /var/run/:/host/var/run/
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
- peer0.org2.example.com:/var/hyperledger/生产端口:
- 9051:7051
- 9053:7053`。
查看端口号 7051 映射到 9051 的末尾。
推荐阅读
- java - JAVA在现有的excel表格中打印输出数据
- docker - 如何将启动参数传递给 docker compose 文件,如 docker run --opts?
- yocto - 带有 bbappend 多层的 Yocto 开发图像
- google-cloud-platform - Google“Team Foundation Server 的云工具”在 VSTS Marketplace 上不可用
- ffmpeg - FFmpeg 应用多个过滤器(徽标叠加、亮度变化和文本叠加)
- python - 打印分层字典的递归方法
- sharepoint-online - 有没有办法使用共享点加载项或扩展添加列表项
- html - 屏幕调整大小时,单行显示的等宽图像不会保持在同一行
- javascript - 当我通过 graphiql 发送查询时,graphql JS 返回 null
- python - 查找时间序列问题的 acf 值的问题