chaincodeのインストール方法が、V1.4から変化していたのでメモします。
V2.xから"Fabric chaincode lifecycle"という方法になっていました。
手順が増えているので備忘録として残します。
TLS:Enableだとコマンドラインがゴチャゴチャするので、TLS:Disabledとします。基本は変わらずTLS関連のオプションが増えるだけです。
Organization(Org1) + Peer(Peer0)分だけ書いておきます。
V1.4はどうだったか?
- channelをcreateして
- createしたchannelにjoinして
- chaincodeをインストールして
- chaincodeをinstantiate(同時にInitLedgerの呼び出し)します
この4ステップでした。
chaincodeのソースファイルは予め所定の場所へコピーしておきます(ソースがgolangの場合)。
peer channel create -o orderer-example-com:30050 -c mychannel -f ./channel.tx
peer channel join -b mychannel.block
peer chaincode install -n asset -v 1.0 -p github.com/asset
peer chaincode instantiate -o orderer-example-com:30050 -C mychannel -n asset -v 1.0 -c ...
シンプルです。
"Fabric chaincode lifecycle"でどう変わったか
joinまでは同じですが、そこからかなり手順が増えています。fabric-sampleのシェルを追って書いているので、不要な処理が入っているかもしれません(チェックなど)。
- channelをcreateして
- createしたchannelにjoinして
- channelをupdateして
- [lifecycle] chaincodeを.tar.gzファイルへpackageして
- [lifecycle] packageした.tar.gzファイルをinstallして
- [lifecycle] chaincodeをpackage-idでapproveformyorg(?)して
- [lifecycle] chaincodeをcommitできるかチェックして(checkcommitreadiness)
- [lifecycle] chaincodeをcommitして
- chaincodeをisInitオプションでInitLedgerをinvokeします
手順が倍以上に増えていました。
peer channel create -o orderer-example-com:30050 -c mychannel -f channel.tx --outputBlock mychannel.block
peer channel join -b mychannel.block
peer channel update -o orderer-example-com:30050 -c mychannel -f Org1MSPanchors.tx
peer lifecycle chaincode package asset.tar.gz --path ${CC_SRC_PATH} --lang ${CC_RUNTIME_LANGUAGE} --label asset_${VERSION}
peer lifecycle chaincode install asset.tar.gz
peer lifecycle chaincode approveformyorg -o orderer-example-com:30050 --channelID mychannel --name asset --version ${VERSION} --init-required --package-id ${PACKAGE_ID} --sequence ${SEQUENCE} --init-required
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name asset --version ${VERSION} --sequence ${SEQUENCE} --output json --init-required
peer lifecycle chaincode commit -o orderer-example-com:30050 --channelID mychannel --name asset --peerAddresses peer0-org1-example-com:30151 --peerAddresses peer0-org2-example-com:30351 --version ${VERSION} --sequence ${SEQUENCE} --init-required
peer chaincode invoke -o orderer-example-com:30050 -C mychannel -n asset --peerAddresses peer0-org1-example-com:30151 --peerAddresses peer0-org2-example-com:30351 --isInit -c ...
ソースファイルは指示した場所に置いてあれば、package化して所定の場所へコピーしてくれます。
さいごに
解読に疲れた…