2017年1月21日土曜日

ブロックチェーンの軽量化


Not Your Typical Ball And Chain by Jeff Hester via Attribution Engine. Licensed under CC BY-NC-SA.

ブロックチェーンでは、個々のノードにトランザクション履歴がどんどん溜まっていくようになっている。また、そもそも全てのノードに同じデータがあるというのは非効率だ。多くのシステムではせいぜいバックアップを多重化しているくらいであり、ここまでに重複データを持っているというシステムは他にない。ストレージ効率の点から全体を考えると、かなり非効率な仕掛けと言える。大げさに言うと、幾ら個々の取引のデータ量が小さくとも、捨てていく仕掛けがないと何れは破綻する。
今まで色々な記事を読んできたが、データの破棄に関するものはなかった。今後、一般の取引にブロックチェーンが使われるような進化が見込まれているが、契約書をそのまま投入するような大容量データがここに入ると、この問題は急激に深刻化する。ここは誰かが考えなければならない。自分なりに少し考えてみる。
このためには、チェーンのどこかを切断して、それ以前のデータを破棄するか、少なくともシステムから切り離して別に保管する(バックアップ)ということになる。この場合のバックアップとは通常とは少し意味が異なり、過去のデータを参照したくなった時に、現状のブロックチェーンシステムではない別のシステムから参照する、という意味になる。これには二種類考えられる。
最初は、適当に値を決めてやった上で、その期間ないしはデータ容量を超えたことで発動してバックアップを作り、同じようにノード間で承認をして、一定以上の承認が得られたら切り離す、というものだ。
過去のものを参照する際は、そのデータはブロックチェーンに承認されたものであることが確認できるから、正当性が担保できる。だが、バックアップをノードがどう扱うかも規定すべきで、別システムで保持するのと破棄するのでは動きが異なってくる。例えば破棄するノードが半数以上になったらそのデータは正当性を保証しない、などの仕掛けが必要になるだろう。
もう一つ考えられるのは、ノード毎の「纏め」を作ることだ。BitCoinで言えば、「指定時間現在のサイフの額」というデータを作り、そこを基点とするように作り変えるのだ。これも同じく、ノード間で承認作業が必要になる。
これらは排他ではないので、両方同時に行ってもよく、またその方が望ましいと考えられる。どの程度過去に遡るかは、データ改ざんの可能性と過去データ参照の必要性に応じて決まるから、システム毎に変わる、あるいはシステムの状態からダイナミックに決めるということもあるだろうが、何れにしてもデータを破棄する以上、全ての取引記録が残るわけではない。だが、実際の運用においては、法定年数+αのような仕掛けにすれば、あるいはあるいは50年など、人間の寿命に対して充分に長ければ、それほど問題はないだろう。
後者のデータ「指定時間現在のノードの状態纏め」だけを永年保存するようなことをすれば、定点観測ができるので、またビッグデータ解析的視点での情報価値が生まれるだろう。

0 件のコメント:

コメントを投稿

注目の投稿:

超音波モーターの原理によるVR用トレッドミル

  VRにおけるリアリティ問題の一つに、その場で動くのではなく移動する場合、つまり歩いたり走ったりすることが挙げられる。実際にはその場にいるので、歩いたかのように足場を調節してやる必要がある。 これを実現する方法として、すり鉢状の滑りやすい足場を作っておく方法と、トレッドミルを使...

人気の投稿: