【プライベートブロックチェーンが未来を作る】ブロックチェーンに何を記録するか
ここからは、設計開発論を書いていく。
タイトルが「プライベートブロックチェーンが未来を作る」であることから、一般的にプライベート型に分類される、Hyperledger Fabricをベースに話を進めていく。
パフォーマンスチューニングの章で、一部Hyperledger Fabric固有の説明をするが、それ以外の部分は極力抽象化して、どのブロックチェーンプラットフォームにも適用できるように説明しようと思う。
データを厳選せよ!
ブロックチェーンにデータを記録するという行為は、オフチェーンにデータを記録するよりも圧倒的にコストが高い。
記録する際に各ノードの検証作業が必要になるため、一定の処理時間が必要になるし、一度記録したらデータは変更困難になる。
まったくもって開発者泣かせである。
そのため、ブロックチェーンに記録するデータは厳選する必要がある。
一般的にデータには、”状態を直接的に表現するもの”と、”それを補強するもの”の2種類がある。不動産を例にすると、土地権利証が状態を直接的に表現するデータであり、契約書がそれを補強するものである。
ブロックチェーンは、データの正当性を担保する技術だと言われるが、そのためにはこの2種類のデータが同時にブロックチェーンに記録されていなければならない。
ブロックチェーンに記録するデータを決めるには、この関係性を意識することが重要だ。この関係性を無視すると、データの正当性が揺らぐ。
トークンを生み出すという行為を例にとって説明しよう。
トークンの最小限の構成要素は「識別情報」「価値」「所有情報」である。この3つが表現できていればトークンとして使うことができる。
// トークン情報
{
'docType': 'PaymentToken'
'tokenCode': 'xToken',
'amount': 100,
'owner': 'hanako.yamada'
}
ここまで表現できれば、トークンの現所有者と保有額は表現できる。しかし正当な所有者であることまでは証明できない。
そこで、そのトークンを所有するに至った経緯もブロックチェーンに記録する。そして、トークンと経緯情報をリンクさせる。
// 経緯情報
{
'id': '0000000001',
'docType': 'SendRequest',
'sender': 'taro.yamada',
'receiver': 'hanako.yamada',
'token': 'xToken',
'amount': 100,
'requestedDate': '2018-09-13 10:30:14',
'requester': 'taro.yamada',
'status': 'approved'
}
// トークン情報
{
'docType': 'PaymentToken',
'tokenCode': 'xToken',
'amount': 100,
'owner': 'hanako.yamada',
'refer': '0000000001'
}
このような形で記録することによって、権利情報を補強することができる。この補強によって、データは確かなものとして扱えるのだ。
慶応大学の斉藤教授が進めているBBc-1の履歴交差という仕組みは、この補強データを他のトランザクションに含めることで、補強度合いをさらに強める仕組みである。
https://gihyo.jp/dev/serial/01/bbc1/0002
言い換えると、これ以外の情報はオフチェーンで管理したほうがよい。
AIを使った分析情報、日々送られてくるIoTデータなどは、ブロックチェーンに記録しないほうが良いと思う。
データを判断系の情報と執行系の情報に分けて考え、ブロックチェーンには執行系の情報のみ記録するとよい。執行系の情報であればデータ変更が起きる可能性は極めて低く、データ変更が困難なブロックチェーンでも取り扱うことができるからだ。
まとめ
1.ブロックチェーンにデータを記録するという行為はコストが高い
2.ブロックチェーンには執行情報のみ記録すること
3.所有に関するデータと補強データをセットで記録すること