我正在尝试使用Hyperledger Fabric。我设法运行"从示例中构建您的第一个网络" -tutorial,然后我按照"编写您的第一个应用程序" -tutorial,这也有效。
下一步,我想从头开始或多或少地创建自己的网络,方法是调整样本中的.yaml文件并手动运行cryptogen和configtxgen。我设法建立了一个由三个组织组成的网络,每个组织有两个对等点和一个独立订购服务。我现在想在其中一个同行上安装一些基本的链码,但是我遇到了一些奇怪的错误:
2018-03-01 22:27:30.525 UTC [grpc] Printf -> DEBU 003 transport: http2Client.notifyError got notified that the client transport was broken read tcp 172.20.0.9:45178->172.20.0.3:7050: read: connection reset by peer.
Error: Error getting broadcast client: Error connecting to orderer.rle.de:7050 due to rpc error: code = Internal desc = transport: write tcp 172.20.0.9:45178->172.20.0.3:7050: write: broken pipe
2018-03-01 22:27:30.525 UTC [grpc] Printf -> DEBU 004 grpc: addrConn.resetTransport failed to create client transport: connection error: desc = "transport: Error while dialing dial tcp: lookup orderer.rle.de on 127.0.0.11:53: dial udp 127.0.0.11:53: operation was canceled"; Reconnecting to {orderer.rle.de:7050 <nil>}
2018-03-01 22:27:30.525 UTC [grpc] Printf -> DEBU 005 grpc: addrConn.transportMonitor exits due to: grpc: the connection is closing
之后,我会获得peer chaincode instantiate
如果您能够提供有关可能导致此错误的原因的任何见解,我将非常感激。我甚至不知道它是由网络配置还是链码本身引起的(我不这么认为,因为我尝试了两种不同的链码,其中一种是#34; sacc&#34;从样本)但链码的安装似乎工作。我的问题是我不知道我在做什么,所以在谷歌上搜索并讨论了对等链代码实例化的论点之后,我完全没有想法。
我的命令(我从.sh文件运行)是:
peer chaincode instantiate -o orderer.rle.de:7050 -C driverlogschannel -n test -v 1.0 -c '{"Args":["John","0"]}' -P "OR ('rleMSP.member')"
链码来自通过
安装的sacc示例peer chaincode install -n test -v 1.0 -p sacc
非常感谢!如果您需要更多日志或其他信息,我可以提供它们。
答案 0 :(得分:0)
解决了它。这个问题与我没有提交咖啡馆的事实有关。基本上,我所做的就是回到this tutorial并再次尝试使用他们的链码:
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
但我将其调整为
peer chaincode install -n mycc -v 1.0 -p chaincode_example02
(我将fabric-samples / chaincode /中的chaincode_example02.go文件放入我的$ GOPATH / src / chaincode_example02文件夹,并通过将此行添加到cli - &gt;卷来调整我的docker-compose-cli.yaml)< / p>
- $GOPATH/src/chaincode_example02:/opt/gopath/src/chaincode_example02
然后,关键点:
peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --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 -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
虽然我再次调整此行以使其符合我的文件夹结构(为我的域名交换example.com等等。)
这解决了这个问题。