先打开两个终端
1.第一个终端开启fabric网络
cd go/src/github.com/hyperledger/fabric-samples/first-network
./byfn.sh up
docker exec -it cli bash
注意,这里的go/src/github.com/hyperledger/fabric-samples/first-network是我个人的first-network目录,开启网络一定要进入你自己的目录文件中。
2.第二个终端运行main.go
cd fabric-sdk-go-sample/main.go
go run main.go
注意,这里的fabric-sdk-go-sample/main.go需要改成你自己的目录。
3.测试sdk与fabric之间的交互
3.1在第一个终端中输入
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 mychannel -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:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
意思是a向b转账10;
可以在当前窗口查询a账户中的值现在是否为90(初始值为100)
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
查询b账户的值是否为210
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
3.2 在第二个终端中运行main
go run main.go
页面将显示为90,
3.3可以在第二个终端中修改main文件,查询b的值
vim main.go
修改代码
在main.go文件中键入任意键进行编辑,然后将下面 代码的“a”修改“b”
if err := cli1.QueryCC("peer0.org2.example.com", "a"); err != nil {
log.Panicf("Query chaincode error: %v", err)
}
点击“esc”,输入:wq,点击回车
重新输入
go run main.go
页面将显示b的值为210
以上仅为fabric和sdk之间的简单交互,欢迎多提宝贵意见!