配置工作目录
export FABRIC_CFG_PATH=$PWD
生成创世区块 文件
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/smallbankgenesis.block
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/bankchannel.tx -channelID mybankchannel
进入容器
docker exec -it cli bash
创建通道
peer channel create -o orderer.example.com:7050 -c mybankchannel -f ./channel-artifacts/bankchannel.tx --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
查看当前通道
peer channel list
将当前peer节点加入通道
peer channel join -b mybankchannel.block
安装链码
peer chaincode install -n smallbank -v 1.0 -p github.com/chaincode/smallbank/go
实例化链码
peer chaincode instantiate -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 mybankchannel -n smallbank -l golang -v 1.0 -c '{"Args":["init"]}'
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 mybankchannel -n smallbank -c '{"function":"create_state","Args":["10","0","100"]}'
2021-10-26 11:17:07.130 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 04d ESCC invoke result: response:<status:500 message:"failed to execute transaction ff51d04d8f13c2d84c9dcab5e3ace9bee83b4822e4d4cff52228fe156403a057: error sending: timeout expired while executing transaction" >
Error: endorsement failure during invoke. chaincode result: <nil>
此处注意:通道使用的还是mychannel,否则会超时报错
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 smallbank -c '{"function":"create_account","Args":["account1","Tina","100","200"]}'
查询账户
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 smallbank -c '{"function":"query","Args":["account1"]}'
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 smallbank -c '{"function":"create_account","Args":["account2","Tom","0","0"]}'
再次查询账户2
向账户2存款1000
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 smallbank -c '{"function":"deposit_checking","Args":["1000","account2"]}'
账户1向账户2转10
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 smallbank -c '{"function":"send_payment","Args":["10","account2","account1"]}'
此时,账户2:+10,账户1:-10
账户2支票账户提款 10000
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 smallbank -c '{"function":"write_check","Args":["10000","account2"]}'
合并账户
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 smallbank -c '{"function":"amalgamate","Args":["account2","account1"]}'