我正在尝试使用Hyperledger Fabric。我设法从示例中运行“构建您的第一个网络”教程,并且我也遵循了“编写您的第一个应用程序”教程,该教程也有效。
下一步,我想通过调整样本中的.yaml文件并手动运行cryptogen和configtxgen从头开始或多或少地创建自己的网络。我设法建立了一个由三个组织,每个组织两个同龄人和一个单独订购服务的网络。现在,我想在其中一个对等节点上安装一些基本的chaincode,但由于遇到一些奇怪的错误,我陷入了困境:
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
的使用信息如果您能对导致此错误的原因提供任何见解,我将不胜感激。我什至不知道它是由网络配置还是由链码本身引起的(我不这么认为,因为我尝试了两种不同的链码,其中之一是样本中的“sacc”),但是安装了chaincode似乎正在工作。我的问题是我不知道自己在做什么,因此在对等链代码实例化的参数进行了搜索和愚弄之后,我全都没了主意。
我的命令(我从.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
非常感谢!如果您需要更多日志或其他信息,我可以提供。
最佳答案
解决了。问题与我没有提交cafile有关。基本上,我所做的是回到this tutorial并再次使用其chaincode进行尝试:
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-> volumes中来调整了docker-compose-cli.yaml)
- $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替换为我的域,依此类推。)
那解决了问题。