LoginSignup
7
6

More than 5 years have passed since last update.

HyperLedger Fabric v1.1でchaincodeを実行する

Last updated at Posted at 2018-07-09

0.前回

前回の投稿でHyperLedger Fabricの起動まで行いましたので今回は動作確認のためgo言語のサンプルソースを使ってchaincodeの実行を行いたいと思います。

1.chaincodeとは

端的にいうと、イーサリアムでいうスマートコントラクトのことであり、HyperLedger Fabricではchaincodeと呼んでいます。HyperLedger Fabricでもブロックチェーン上にプログラムを実行することができます。HyperLedger Fabricを使用したブロックチェーンの開発となれば大半がchaincodeの開発になると思います。

2.dockerのCLIイメージへログインする

前回の投稿に沿ってHyperLedger Fabricを起動した場合、イメージ名がcliであるイメージが起動されているはずです。コマンド実行によりチェーンコードを実行するためのイメージですが、chaincodeのインストール、インスタンス化についても使用します。以下のコマンドでイメージの中へログインします。

#「cli」の部分にdockerのイメージ名を入れる
sudo docker exec -it cli bash

3.ソース格納用のディレクトリを作成する

ログインしたら、イメージ内部にソース格納用のディレクトリを作成します。作成したらログアウトしておきます。

mkdir -p /opt/gopath/src/github.com/sample
exit

4.dockerへファイルをコピー

以下のコマンドでdockerのcliイメージへファイルをコピーします。ここではサンプルソースであるchaincode_example02.goを使用します。

cd /home/vagrant/fabric-samples/chaincode/chaincode_example02/go
sudo docker cp chaincode_example02.go cli:/opt/gopath/src/github.com/sample/chaincode_example02.go

5.ファイルのインストール

chaincodeをsampleという名前でインストールします。更新をする場合は、-v 1.0がバージョン情報になっていますので、バージョンを上げて実行してください。

sudo 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 sample -v 1.0 -p github.com/sample

6.インスタンス化

chaincodeをインスタンス化します。サンプルソースは簡単な送金アプリになっていて、-c '{"Args":["init","a","5000","b","5000"]}'で初期の設定を行っています。a,bが名称、5000が金額になります。

sudo 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 sample -v 1.0 -c '{"Args":["init","a","5000","b","5000"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"

7.送金処理

これでchaincodeを実行できる状態になりました。サンプルのソースの機能で送金機能がありますので実行してみます。ここでは「a」から「b」へ100を送金します。

sudo 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 sample -v 1.0 -c '{"Args":["invoke","a","b","100"]}' 

8.残高確認

以下のコマンドで残高を確認します。aの残高は4900、bの残高は5100と出力されるはずです。

#「a」の場合
sudo docker exec cli peer chaincode query -C mychannel -n sample -c '{"Args":["query","a"]}'
---------結果---------
Query Result: 4900
#「b」の場合
sudo docker exec cli peer chaincode query -C mychannel -n sample -c '{"Args":["query","b"]}'
---------結果---------
Query Result: 5100
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6