我正在学习如何使用Hyperledger架构和Chaincode。基本上,我遵循此link在Hyperledger架构中创建Java链代码,但无法在cli / channel中调用链代码。
我使用了Hyperledger fabric官方指南中的BYFN.sh
建立了Fabric网络,并跟随博客制作了Gradle&Java Chaincode。
我尝试用
调用它之后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"]}'
我收到此错误:
错误:获取代言人客户端调用时出错:代言人客户端无法连接到peer0.org2.example.com:7051:无法创建新连接:连接错误:desc =“传输:拨号时出错:拨打tcp 172.21。 0.4:7051:连接:连接被拒绝”
如果有人可以指出一个方向并告诉我什么可能是错误的,这将非常有帮助。我试图用Google搜索它,但是找不到任何有用的信息。
更新:
原来是端口号问题。我进入对等方的一个容器,结果发现端口号是9051,而不是7051。因此,我在chaincode invoke命令中更改了端口号,一切正常。
答案 0 :(得分:0)
您可以在https://www.chaincoder.org上查看免费工具Chaincoder,这对于初学者来说是一个不错的开始。它使用标准CLI来在IDE内用于结构网络,链码,通道...。
答案 1 :(得分:0)
您在命令中为peer0.0rg1.example.com和peer0.0rg2.example.com指定了相同的端口号。如果您是使用byfn拓扑创建的网络,则peer0.org2会侦听端口9051。此外,在询问此类问题时,最好提供您的配置,即docker-compose.yaml文件。在理解问题时非常有用。
在您的compose.yaml文件中,您可能没有将Org2的端口号映射到其他端口号。
您可以尝试以下任何一种方式-
查看docker yaml文件中定义的端口号,然后在命令中使用该端口号调用链代码。每个同行的情况应该有所不同。
修改yaml文件,以便7051重定向到新的端口号,例如9051。 像下面的
环境:
查看端口号7051映射到9051的末尾。