Blockchain実装の大本命?であるhyperledger/fabricをローカルで動かしてみます。
fabricはethereumとかより非常に構築がしやすくなっています。
事前準備
まずは以下のソフトを入れましょう。
- Git https://git-scm.com/download
- Go https://golang.org/dl/
- Vagrant https://www.vagrantup.com/downloads.html
- Virtualbox http://download.virtualbox.org/virtualbox/
Goをインストールしたら環境変数に2つ登録します。
名前:GOROOT 値:C:\Go\ 名前:GOPATH 値:C:\gopath //任意のフォルダを作成する。
fabricのソースのDL
Gopathのなかにフォルダを作ってからGitCloneする。
src以下のフォルダ名は一致していないと後で困るのでここからはつづりミスをしないようきをつけましょう。
cd %GOPATH% mkdir src\github.com\hyperledger cd src\github.com\hyperledger git config --global core.autocrlf false git clone https://github.com/hyperledger/fabric.git
VMの起動
cd %GOPATH%\src\github.com\hyperledger\fabric\devenv\ vagrant up
最初にイメージをDLしたりするので20分ぐらいかかる。のんびりまちましょう。
これが終わって起動してきたらprovisionします
vagrant up --provision
これまたまあまあ時間がかかるのでのんびり待ちます。
これで基礎のイメージが出来ました。
処理が終わったら接続します。接続するやり方は以下の記事参照
garapon.hatenablog.com
membersrvcとpeerのDockerfileを作成
DockerFileを作ります。
cd $GOPATH/src/github.com/hyperledger/fabric make peer-image make membersrvc-image
出来たら確認する。
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hyperledger/fabric-peer latest f30c8c516186 6 seconds ago 1.748 GB hyperledger/fabric-ccenv latest bd03a61e190b About a minute ago 1.738 GB hyperledger/fabric-src latest 0b4d156de3a8 About a minute ago 1.721 GB hyperledger/fabric-baseimage latest 6abe2f90116a About a minute ago 1.687 GB <none> <none> 3c19ba8a6065 6 hours ago 1.385 GB busybox latest 2b8fd9751c4c 4 weeks ago 1.093 MB hyperledger/fabric-baseimage x86_64-0.0.10 a2392cc113fd 8 weeks ago 1.076 GB
こんな感じで出来ました。
起動
docker-compose -f docker-compose-4-consensus-batch.yml up --force-recreate -d
すると、MemberserviceとPeer4つがあがってきます。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c80799b160e2 hyperledger/fabric-peer "sh -c 'sleep 5; peer" 5 minutes ago Up 4 minutes bddtests_vp2_1 46f1ac71efb7 hyperledger/fabric-peer "sh -c 'sleep 5; peer" 5 minutes ago Up 5 minutes bddtests_vp1_1 91c702ef6377 hyperledger/fabric-peer "sh -c 'sleep 5; peer" 5 minutes ago Up 5 minutes bddtests_vp3_1 94ad8ce46101 hyperledger/fabric-peer "sh -c 'sleep 5; peer" 5 minutes ago Up 5 minutes 0.0.0.0:5000->5000/tcp bddtests_vp0_1 1d32f4eed13f hyperledger/fabric-membersrvc "membersrvc" 5 minutes ago Up 5 minutes bddtests_membersrvc0_1
こんなかんじで、あがってくるので以下のようなポートにJSON投げまくればOK。
http://127.0.0.1:5000/chaincode
Logを見たいときは以下
docker logs -f bddtests_vp0_1
明日はチェインコードのはデプロイをしてみます。