首页 > 解决方案 > 无法在超级账本结构中调用链码

问题描述

我正在学习如何使用 Hyperledger Fabric 和 Chaincode。基本上,我按照这个链接在 Hyperledger 结构中创建了一个 Java 链码,但我无法在 cli/channel 中调用我的链码。

我使用BYFN.shHyperledger 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。所以我在链码调用命令中更改了端口号,一切正常。

标签: javahyperledger-fabrichyperledgerchaincode

解决方案


您在命令中为 peer0.0rg1.example.com 和 peer0.0rg2.example.com 指定相同的端口号。如果您使用 byfn 拓扑创建网络 peer0.org2 在端口 9051 上侦听。此外,在询问此类问题时,最好提供您的配置,即 docker-compose.yaml 文件。这在理解问题时非常有用。

在您的 compose.yaml 文件中,您可能没有将 Org2 的端口号映射到不同的端口号。

您可以尝试以下任何一种方法 -

  1. 查看 docker yaml 文件中定义的端口号,并在命令中使用该端口号来调用链码。每个同龄人应该是不同的。

  2. 修改 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 的末尾。


推荐阅读