Hyperledger Fabric官方工具注解(一)

在base文件夹下的docker-compose-base.yaml中可以查看到CLI container中的环境变量,CLI container环境中默认为peer0, 如果要唤起其他的peer或者orderer,需要修改相应的环境变量。

# docker exec -it cli bash

ca-cert用于验证TLS握手。

创建channel的时候需要频道注册交易(channel configration transaction)channel.tx(名称可以不同)和orderer的ca-cert。channel.tx文件制定了一个频道的创世区块的注册信息。

# peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx –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

频道创建命令,使用的是peer工具,返回的结果是一个创世区块(genesis block,文件名是CHANNEL_NAME.block);需要提供的参数是:
-o:orderer的标识;
-c:channel name;
-f:channel configration transaction文件;
–tls:true/false来标识是否进行TLS握手验证;
–cafile:orderer的ca-cert。

# peer channel join -b <channel-ID.block>

使用peer工具将环境变量对应的peer或者orderer添加进入由-b指定的genesis block所指明的channel。

部署链码需要先将链码安装到每一个需要执行或者背书/签署该链码的peer上,然后再在channel上实例化链码。

# peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

使用peer工具的chaincode功能install链码,-n指定链码名称???-v指定fabric版本,-p指定链码的在本地文件系统环境中的文件路径。

# 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’)”

使用peer工具的chaincode功能instantiate链码,其中-c指定初始化的参数,-P参数指定该链码执行的交易所需要的背书方式策略,比如-P “OR (‘Org0MSP.member’,’Org1MSP.member’)”表示Org1或者Org2中的一个结点进行背书即可,如果换成AND则需要两者都进行背书。

# peer chaincode query -C $CHANNEL_NAME -n mycc -c ‘{“Args”:[“query”,”a”]}’

使用peer工具的chaincode功能,利用peer chaincode的query,执行链码上的query函数,-C指定了chennel name,-n指定了链码的名称。peer chaincode的query只执行查询,并不会生成新的区块,也不会改变状态数据库(state DB)的状态。

# peer chaincode invoke -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 -c ‘{“Args”:[“invoke”,”a”,”b”,”10″]}’

peer chaincode的invoke会生成新的区块,并且会改变state DB的状态,所以执行invoke的时候需要TLS握手验证,也需要指定orderer以及orderer的ca-cert。

Leave Comment

电子邮件地址不会被公开。 必填项已用*标注