見出し画像

【プライベートブロックチェーンが未来を作る】タイムライン式の記録方法がもたらすもの

ブロックチェーンはTwitter?

ブロックチェーンは「AのあとにBが起きた、BのあとにCが起きた」と記録する技術である。これを相対記録という。
TwitterやFacebookでは一つ一つの投稿が投稿時間に沿ってタイムラインに表示されるが、イメージとしては限りなくこれに近い。

タイムライン式の記録方法は、各イベントの前後関係を証明するという点では強力な証明力をもつ。この記録方法こそが、ビットコインで二重支払いを防止している核心技術だ。

Aさんが1000円しか持っていないのに、BさんとCさんに1000円ずつ送金しようと画策しているとする。取引としては「AさんからBさんへの送金取引」と「AさんからCさんへの送金取引」の2つをブロックチェーンに記録しなければならない。
ここにタイムラインの概念を持ち込むと、どちらかの取引が必ず先行して記録される。
「AさんからBさんへの送金取引」が先にブロックチェーンに記録されると、その時点で残高が0になるため、次に行われる「AさんからCさんへの送金取引」が不正取引であることが誰の目にも明らかになるのだ。


一方、タイムライン式記録方法をもつブロックチェーンは、時系列以外の用途で使おうとすると一転して非常に使いづらいものとなる。

例えば、レコーディングダイエットとして、Twitterに毎日の食事記録をツイートしたとする。月末に今月の摂取カロリーを計算しようとすると、その月の全ツイートを探して一つずつカロリーを足し合わせなければならない。
ブロックチェーン上でアプリを作る場合、この問題は残高計算などで現れてくる。現在の残高を知りたいだけなのに、ブロックチェーン上に記録した各取引をかき集めてきて計算しなければならず、目的に対してのコスパが非常に悪い。

ブロックチェーンは、各イベントの前後関係を証明することを重視した結果、現実世界の使い勝手を犠牲にしているといえる。

この問題を緩和するために、多くのブロックチェーン基盤がタイムライン式記録方法とともに、「ワールドステート」と呼ばれる記録方法を採用している。ブロックチェーンに時系列でイベントを記録しつつ、データ参照効率を上げるために、最新値だけはNoSQL系のデータベースに記録しているのだ。

タイムライン式の記録部分については、ブロックチェーン基盤によって隠蔽されるため、開発者はほとんど意識する必要がない。多くの場合で問題になるのは、ワールドステート部分である。
ワールドステートは開発者が自由に設計できるために、設計次第でアプリケーション全体の品質にダイレクトな影響を与えかねない。

次回はエンジニア向けに、Hyperledger Fabricにおけるワールドステート設計について考えていきたい。

いいなと思ったら応援しよう!