Ubuntu OSには、Dockcer及びDocker-composeをインストール済みであること。
(参照元URL)
https://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html
- Ubuntu OSにTeratermでログインする。
- 以下のフォルダを作成する。
$ mkdir fabric-sample$ cd fabric-sample - 以下のコマンドを実行する。このコマンドを実行すると、インストールに必要なパッケージをダウンロードしてくれる。(結構時間がかかる)
$curl -sSL https://goo.gl/LQkuoh | bash - docker imagesコマンドでFabricイメージがダウンロードされていることを確認する。
- configtxgentツールを使うと、Fabricを動かすために必要となる以下の4つの設定情報ファイルを自動的に作成してくれる。
・bootstrap block
・チャネルトランザクション
・2つのアンカーPeerトランザクション
まず、bootstrap blockを作成するために、以下のコマンドを実行する。
$ cd release/linux-amd64/
$ ./bin/cryptogen generate --config=./crypto-config.yaml
以下の警告が大量に出力されるが無視する。
[bccsp] GetDefault -> WARN 001 Before using BCCSP, please call InitFactories(). Falling back to bootBCCSP. - 次に、チャネルトランザクションを作成する。
$ export FABRIC_CFG_PATH=$PWD
$ ./bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
$ ./bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel2017-06-15 23:31:19.449 JST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-15 23:31:19.460 JST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2017-06-15 23:31:19.461 JST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx - Org1という組織にアンカーPeerを登録する。
$ ./bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
2017-06-05 22:28:12.620 JST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-05 22:28:12.625 JST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-06-05 22:28:12.625 JST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
同様に、Org2という組織にアンカーPeerを登録する。
$ ./bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychnnel -asOrg Org2MSP
2017-06-05 22:30:01.798 JST [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-05 22:30:01.805 JST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-06-05 22:30:01.805 JST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update - 以下のコマンドを実行する。
$ ./generateArtifacts.sh mychannel - docker-compose-cli.yamlをviで開いて、以下をbashコマンドをコマンドアウトする。
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
# command: /bin/bash -c './scripts/script.sh ${CHANNEL_NAME}; sleep $TIMEOUT'
volumes: - クライアントのDockerコンテナを起動する。
$ CHANNEL_NAME=mychannel TIMEOUT=60 docker-compose -f docker-compose-cli.yaml up -d - docker psコマンドを実行し、cliというコンテナが起動していることを確認する。
- cliコンテナにログインする。
$ docker exec -it cli bash - 「mychannel」というチャネルを作成する。
$ CHANNEL_NAME=mychannel
# 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/cacerts/ca.example.com-cert.pem - 「mychannel」チャネルに「peer0.org1.example.com」を追加する。
$ peer channel join -b mychannel.block - Fabric付属のexample02というチェーンコードをインストールする。
$ peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/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/cacerts/ca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')" - aという値をクエリしてみる。
$peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
・・・
Query Result: 100
・・・ - チェーンコードをinvokeして、aからbに10資産移動させる。
$ 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/cacerts/ca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'
aの資産が90になっていることを確認する。
$peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
・・・
Query Result: 90
・・・
bの資産が110になっていることを確認する。
$peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'
・・・
Query Result: 110
・・・
0 件のコメント:
コメントを投稿