Hyperledger Fabricを学ぶ(16回目)ネットワーク起動の解説
こんにちは。
このブログでは、ブロックチェーン関連を中心としたテック系の情報の紹介をしております。
この連載では、オープンソースのブロックチェーンプラットフォーム「Hyperledger Fabric」について、少しずつ勉強を進めてゆきます。
自分なりに公式のドキュメントを噛み砕きながら、分かり易くまとめて行きたいと思います。
前回までは、サンプルネットワーク「Fabcar」についての説明をしてきました。
主に「Fabcar」のアプリケーションの機能の説明をしてきましたが、今回からは、「Fabcar」が載っているHyperledger Fabricのネットワークについての説明をしていきます。
ネットワークの起動
「Fabcar」を起動する際に、最初に実行したプログラムが「startFabric.sh」です。
今回はこのプログラムの中身を見ていこうと思います。
プログラムの冒頭で、「basic-network」ディレクトリにある「start.sh」を実行しています。
# launch network; create channel and join peer to channel
cd ../basic-network
./start.sh
「start.sh」の内容は次のような感じです。(一部抜粋)
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
# Create the channel
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
# Join peer0.org1.example.com to the channel.
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel.block
Dockerコマンドで、「CA」、「Orderer」、「Peer」、「Couchdb」のコンテナを立ち上げています。
その後、チャネルの作成して、Peerを作成したチャネルに登録しています。
どうやら、「start.sh」の実行で最低限必要なコンポーネントとネットワークの起動ができるようになっているようです。
ただこのままでは、Hyperledger Fabricのネットワークがあるだけなので、ここにアプリケーションを立ち上げる必要があります。
アプリケーションのインストール
「fabcar」ディレクトリの「startFabric.sh」に戻りましょう。
「start.sh」の実行後、Dockerコマンドで「CLI」のコンテナを立ち上げています。
# Now launch the CLI container in order to install, instantiate chaincode
# and prime the ledger with our 10 cars
docker-compose -f ./docker-compose.yml up -d cli
コメントにもありますが、CLIはPeerにチェーンコードをインストールしたり、初期化するために使われるコンテナです。
CLIの立ち上げの直後に、PeerにFabcarのチェーンコードのインストール、初期化を行っています。
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n fabcar -v 1.0 -p github.com/fabcar
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n fabcar -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
これで「start.sh」で立ち上げたHyperledger Fabricのネットワークに、アプリケーションFabcarのチェーンコードがインストール・初期化され、アプリケーションを使う準備が整いました。
アプリケーションの起動
最後にアプリケーションの起動です。
「startFabric.sh」の最後で、インストールしたチェーンコード「initLedger()」を実行しています。
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n fabcar -c '{"function":"initLedger","Args":[""]}'
initLedger()の実行で、ブロックチェーン台帳に初期データが書き込まれ、台帳データの参照や更新ができるようになります。
まとめ
今回紹介したstart.shが実行していることをまとめるとこんな感じでしょうか。
相変わらずきたない絵で申し訳ございません汗
次回は、Fabcarのチェーンコードの中身でも見ていこうと思います。
おわり。
この記事が気に入ったらサポートをしてみませんか?