5.2. デモ2 ローカル環境でBlockchainアプリを動かしてみよう!
余裕がある方は、こちらもお試し下さい。安定版のIBM Open Blockchainです。
以前はGitHubで公開されていましたが、現在はHyperledgerプロジェクトに完全移行しているため、記事に添付されているファイル「obc-dev-env.zip」をGOPATH/WORKSPACEに展開してご利用下さい。
あらかじめインストールが必要なツールは以下のとおりです。
- Git Client
- Go(バージョン1.6以上)
- Vagrant(バージョン1.7.4以上)
- VirtualBox(バージョン5.0以上)
動作環境としては、Host→VM→Dockerのような構成になります。
先に説明したChaincodeを実行するValidation Peerは、Dockerコンテナ上に配置されます。ただし、開発者モードの場合にはホストOSのみでも動作します。
以下のGitHubリポジトリをご自身のアカウントにforkした後、各種Instructionの通りに環境設定を行ってください。
注目していただきたいのは、ホストOS上に作成したGOPATH配下のopenchain-peerおよびWORKSPACEとVirtual Machineのそれらが同期されることです。
では、環境設定が完了したら実際にアプリを動かしてみましょう! 以下は開発者モードで行います。
Terminal(あるいはコマンドプロンプト)は3つ開いてください(それぞれvagrant sshであらかじめ作成していたVMにログインした状態にします)。
まず、1つ目のTerminalで、
cd $GOPATH/src/github.com/openblockchain/obc-peer
を実行します。その後、
OPENCHAIN_PEER_ADDRESSAUTODETECT=true obc-peer peer --peer-chaincodedev=true
を実行しpeerを起動します。起動するとログにpeerのIPアドレスが表示されますのでこれを控えておいてください。
[chaincode] NewChaincodeSupport -> INFO 013 Chaincode support using peerAddress: 10.0.2.15:30303
1つ目のTerminalは起動したままにしておき、2つ目のTerminalで、サンプルアプリケーションのディレクトリに移動し、Goで記述されたChaincodeをコンパイルします。
cd /opt/gopath/src/github.com/openblockchain/obc-peer/openchain/example/chaincode/chaincode_example02
で移動した後、
go build -o chaincode_example02 chaincode_example02.go
でChaincodeファイルをコンパイルします。
そうしたら次に、たった今ビルドしたアプリケーションを起動します。
OPENCHAIN_PEER_ADDRESS=<PeerのIPアドレス>:<ポート番号> OPENCHAIN_CHAINCODE_ID_NAME=test openchain/example/chaincode/chaincode_example02/chaincode_example02
すると、以下のように準備ができたことを示すログが表示されます。
正常に準備が整ったことを確認したら、3つ目のTerminalで、以下のように実際にChaincodeのfunctionをDeployします。
obc-peer chaincode deploy -n test -c '{"Function":"init", "Args":[ "ACCOUNT_A", "2000", "ACCONT_B", "1000"] }'
これで、ACCOUNT_Aに2000、ACCONT_Bに1000が登録されました(※申し訳ありません、ACCOUNT_BをACCONT_Bとスペルミスをしていました)。
では、今度はQueryを実行して残高を確認してみましょう。
obc-peer chaincode query -l golang -n test -c '{"Function":"query", "Args":["ACCOUNT_A"] }'
「2000」と表示されたら成功です!
では次はInvokeを実行してみましょう。
obc-peer chaincode invoke -n test -c '{"Function":"invoke", "Args":["ACCOUNT_A", "ACCONT_B", "100"] }'
出力は「b77b0aac-130e-4fb6-ae73-9fa9967a9e5e」となっていますね。これがあなたのTransaction IDです。
それでは最後に、残高を移動した結果を確認してみましょう。
obc-peer chaincode query -l golang -n test -c '{"Function":"query", "Args":["ACCOUNT_A"] }' obc-peer chaincode query -l golang -n test -c '{"Function":"query", "Args":["ACCONT_B"] }'
ACCOUNT_Aの残高からACCONT_Bに100移動し、それぞれ1900、2100となっていますね。2番目のTerminalのログでも、その結果が見られます。
ここまでのBlockchain情報を破棄するには、
cd /var/openchain/production rm -rf db
を実行します。
まとめ
いかがでしたか?
途中駆け足となってしまいましたが、これで一通りのBlockchainの動作が確認できたかと思います。皆さまのBlockchainに対する興味にお応えできましたら幸いです。
BlockchainはFinTechのみならず幅広い応用が期待できる技術ですので、ぜひとも今後の動向をチェックしていただけたらと思います。
ここまでご覧いただき、ありがとうございました。