ビットコインとブロックチェーン:暗号通貨を支える技術といった本を読んだりだとか身辺でビットコインの話題が出るに連れ、個人的にはブロックチェーンに興味があるのでそのあたりの環境を作るのに手軽な基盤はないかなと見ていたところHyperledgerというプロジェクトを知った。
Hyperledger自体はLinux Foundationが進めているブロックチェーン技術に関するオープンソースコミュニティーで、そこで開発されているブロックチェーンの基盤にHyperledger Fabric*1があり、他にも複数のプロジェクトが推進されている。(詳しくはこちらのページが詳しい)
Home | Hyper Ledger Foundation
Fabric自体はDockerHubにイメージが提供されているので、これを使うとローカルにもFabricによるブロックチェーン基盤を立てることができるということなので試してみた。
まずはイメージをpullする。
$ docker pull hyperledger/fabric-membersrvc:latest $ docker pull hyperledger/fabric-peer:latest
fabric-membersrvcが証明書等のCAとなるコンポーネントのコンテナ、fabric-peerがブロックチェーン内でのpeerのコンテナに該当する。
membersrvcと少なくとも1つpeerを立ち上げる必要があるので、pullが完了したら以下の様なdocker-compose用のYAMLを用意する。
membersrvc: image: hyperledger/fabric-membersrvc command: membersrvc vp0: image: hyperledger/fabric-peer ports: - "7050:7050" environment: - CORE_PEER_ADDRESSAUTODETECT=true - CORE_VM_ENDPOINT=http://172.17.0.1:2375 - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=vp0 - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054 - CORE_SECURITY_ENABLED=true - CORE_SECURITY_ENROLLID=test_vp0 - CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT links: - membersrvc command: sh -c "sleep 5; peer node start --peer-chaincodedev"
上を準備した上でコンテナを立ち上げると
$ docker-compose up Starting fabric_membersrvc_1 Starting fabric_vp0_1 Attaching to fabric_membersrvc_1, fabric_vp0_1 vp0_1 | 07:33:18.451 [logging] LoggingInit -> DEBU 001 Setting default logging level to DEBUG for command 'node' vp0_1 | 07:33:18.451 [nodeCmd] serve -> INFO 002 Running in chaincode development mode vp0_1 | 07:33:18.451 [nodeCmd] serve -> INFO 003 Set consensus to NOOPS and user starts chaincode vp0_1 | 07:33:18.451 [nodeCmd] serve -> INFO 004 Disable loading validity system chaincode vp0_1 | 07:33:18.452 [peer] func1 -> INFO 005 Auto detected peer address: 172.17.0.3:7051 vp0_1 | 07:33:18.454 [peer] func1 -> INFO 006 Auto detected peer address: 172.17.0.3:7051 (snip)
何やら動き始めた感があるので、サンプルユーザーとしてJimというユーザーが登録されているのでAPIを叩いてみる。
$ curl -X POST -H 'Content-Type: application/json' -d '{"enrollId":"jim","enrollSecret":"6avZQLwcUe9b"}' http://localhost:7050/registrar
{"OK":"Login successful for user 'jim'."}
また、ブロックチェーン自体も素朴に http://localhost:7050/chain を開くと確認できる。
HTTP/1.1 200 OK Access-Control-Allow-Headers: accept, content-type Access-Control-Allow-Origin: * Content-Length: 123 Content-Type: application/json Date: Mon, 20 Mar 2017 07:55:16 GMT { "currentBlockHash": "RrndKwuojRMjOz/rdD7rJD/NUupiuBuCtQwnZG7Vdi/XXcTd2MDyAMsFAZ1ntZL2/IIcSUeatIZAKS6ss7fEvg==", "height": 1 }
こういった形で何やら動き始めるところまでは確認できたので実際に諸々試すのはまた次回。
備考
この本で大雑把に技術周りも含めて把握したつもりなのだけれども、なんらか手を動かさないとどうもピンとこない性分なので試してみている。
- 作者: アンドレアス・M・アントノプロス,今井崇也,鳩貝淳一郎
- 出版社/メーカー: エヌティティ出版
- 発売日: 2016/07/14
- メディア: 大型本
- この商品を含むブログ (3件) を見る
最近のコメント