見出し画像

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が実行していることをまとめるとこんな感じでしょうか。

画像1

相変わらずきたない絵で申し訳ございません汗

次回は、Fabcarのチェーンコードの中身でも見ていこうと思います。

おわり。

この記事が気に入ったらサポートをしてみませんか?