[Blockchain]Hyperledger Fabricを試す(構築編)


背景

数年前、「ブロックチェーン」という技術があることを知り、
弊社内の有志数名でイーサリアム(Ethereum)の環境を構築し、
実際にマイニングやコインの受け渡しなど試したことがあります。

ただ、当時は特に目的があったわけではなく、
「新技術に触れてみよう」
という漠然な目的で動き始めたため、触れただけで終わりました。

そして最近になり、ブロックチェーンが金融業界だけではなく
エンターブライズ方面でも利用されているというニュースを
よく見聞きするようになり、改めてブロックチェーンに触れてみることになりました。

また、今回は弊社内で「要員管理」にブロックチェーン技術が利用できないか?
という思いもあり、「ブロックチェーンで要員管理を行う」ことを目的として活動を開始しました。

なぜ要員管理?

要員情報は個人情報の塊です。

この情報を改ざんに強く、強固なセキュリティに守られたブロックチェーンネットワーク内で
管理することで、正しく要員の情報を管理できないかという発想がありました。

例えばですが、とある要員が、
過去どのような案件に携わっていたのか、
どんな資格を保有しているのか、
これらの情報を勝手に書き換えられることがなく、一元管理できることが必要でした。

もちろん、RDPを使用したシステムの構築も考えられますが、それでは目新しさがありません。
どうせなら新しい技術で実装することが可能か、そんな思いが強く、
ブロックチェーンでの検証を行いました。

使用したブロックチェーン

ブロックチェーンというと、すぐにビットコインのようなコインといった「価値」の管理を
イメージしますが、最近ではタクシーの配車であったりと、利用範囲が広がっており、
それらを調べていくうちに「Hyperledger Fabric」を知りました。
「HyperLedger Fabric」にはサンプルネットワークとして「fabcar」というものが
用意されており、名前の通り「車両情報管理」をテーマにしたサンプルネットワークでした。
この「車両情報」を「要員情報」に置き換えれば要員管理に利用できるのでは?と考え、
今回利用するブロックチェーンは「Hyperledger Fabric」としました。

構築手順

構築はかなり苦戦しました...
様々なサイトを参考にし、試し、失敗し...の繰り返し。
その結果、以下の手順で構築できるというゴールに辿り着きました。

事前準備

$ sudo apt update

docker

$ sudo apt install -y docker.io
$ docker --version
Docker version 19.03.6, build 369ce74a3c
$ sudo gpasswd -a comjo docker
Adding user comjo to group docker
$ id comjo
uid=1001(comjo) gid=1001(comjo) groups=1001(comjo),27(sudo),130(docker)
$ exit

再ログイン

docker-compose

$ sudo apt install -y docker-compose
$ docker-compose --version
docker-compose version 1.17.1, build unknown

nodejs

$ sudo apt install -y nodejs npm
$ sudo npm install n -g
$ sudo n 8.9.0
$ n ls
node/8.9.0
$ sudo apt purge -y nodejs npm
$ exec $SHELL -l
$ node -v
v8.9.0

go

$ sudo apt install -y golang-go
$ go version
go version go1.10.4 linux/amd64

python

$ python -V
Python 2.7.17

hyperledger-fabric

$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.4.4

$ docker ps --format "table{{.Names}}"
NAMES
dev-peer0.org2.example.com-fabcar-1.0
dev-peer0.org1.example.com-fabcar-1.0
cli
peer1.org1.example.com
peer0.org2.example.com
peer1.org2.example.com
peer0.org1.example.com
couchdb3
couchdb1
ca_peerOrg2
couchdb2
couchdb0
orderer.example.com
ca_peerOrg1

おわりに

情けないことに、インストールしたOSSが何に使用されているのか等、
Hyperledger Fabricの内部構造まで理解できているわけではありません。
各種コンテナについても大枠の用途は理解できましたがコンテナ設定を
カスタマイズし独自の構成にするといった理解には達せませんでした。
が、まずはHyperledger Fabricに触れて見る環境を構築するという
目的は達することができました。

次回は検証編として、用意されているサンプルネットワークを実際に動かしてみます。