フォローしました目次1、トランザクションのレベル2、ステートのレベル3、ブロックのレベル長くなったのでまとめブロックチェーンを使えば信頼できる/信頼されなければならないデータ(例えばお金)を扱うことができようになる。ブロックチェーンの魅力といえばまずこれがあげられるだろう。「信頼」はブロックチェーンにおける根本的な価値であるが、その原理やしくみはなかなか理解されていないのではないだろうか?今回はブロックチェーンにおける「信頼」の仕組みについて考察してみたい。ブロックチェーンにおける「信頼」は単純な一つの原理で生まれるわけではなく、そこには3つのレベルがあると考えられる。1、トランザクションのレベル2、ステートのレベル3、ブロックのレベルでは順番にみていこう。1、トランザクションのレベル最初のレベルはトランザクションそのものだ。トランザクションといってもその形式は様々なフォーマットがあるが、どんな場合でも共通していることがある。それは「トランザクションには必ず署名(ハンコ)エリアがあり、データに対して電子署名がされている」ということとである。公開鍵暗号を使っているから署名があるのは当然なのだが、この意味をもう少し深く考えてみたい。ややこしくなるのでまず登場人物を整理しよう。これはトランザクション内に直接かかれるか署名から計算可能B:秘密鍵。公開鍵に紐つく秘密鍵でトランザクション作成者が知っているC:署名されるべきデータ。データはハッシュをとりそれに署名するD:署名。署名は証明対象データに含まれない。当たり前だが公開鍵暗号における署名というのは次の2点を保証できる。・この署名(D)は秘密鍵(B)を知っている人によって作成された・この署名(D)は署名対象データ(C)に対して署名され、1ビットたりとも変更されていないつまり、日本語に翻訳するとこうだ。「この文書には間違いなく田中(仮名)さんのハンコが押してあります。従来のシステムではこうはいかない。上記と同じことを保証するには専用のシステムを作り、そのシステムがハッキングされたりしておらず、中の人も不正を働いていない、ということを運営母体の社会的な信頼や運営の透明性などと合わせて保証しなくてはならないのだ。従来のシステムにおいて「信頼」はその運営母体から生じるといってよいだろう。ブロックチェーンではこの「信頼」は数学的な事実「秘密鍵を知らない人は署名を生成することができない」から直接発生するわけで好対照といえよう。中央システムを信頼する必要はないし通信経路も気にする必要はない。そもそもハッキングされたとしても署名をねつ造することはできない(もちろん秘密鍵を盗まれたときは別だ。皆さん知っての通り)とどのつまりデータがどこを経由してやってこようと、署名を見ればそのデータを「信頼」できるかどうかわかる。「信頼」はデータがどこからやってきたかに依存するのではなくデータそのものに内在しているのである。2、ステートのレベル2番目のレベルはステートのレベルだ。トランザクションを実行すると残高の状態などが変わる、この「状態」のことをステートと呼ぶ。このUTXOも使用済みか未使用かの状態であるので状態の一種だ。署名によりトランザクションが「信頼」できたとしても、そのトランザクションが有効であるとは限らない。残高が足りなかったり、すでに一度実行したりしたトランザクションは無効だからだ。これをチェックしなければ誰でも無限にコインを得ることができてしまう。このようなことが起きるのはトランザクションの有効性は状態に依存し、状態によっては有効であったり無効であったりするためだ。このレベルの「信頼」を得るには自分自身で状態をチェックする必要がある。どこか別のノードに問い合わせることも可能だが、その答えはなぜ信頼できるのか?結局そのノードを「信頼」することになってしまい、従来のシステムと同じレベルの「信頼」しか得られない。ブロック(台帳)を自分で取得し、ブロック内のトランザクションを自力で実行し、その時点で残高があるか、2重支払いになっていないか、などを自力でチェックする必要がある。ビットコインでよく言われる「世界中に何万と台帳がコピーされお互いに確認しあっているので改ざんすることはできない」というやつだ。各ノードが監査人となり、24時間365日ブロックに無効なトランザクションが混入していないかをチェックし続けているのだ。パブリックチェーンというのはネットワークへの参加が自由で公開されているチェーンのことであった。パブリックチェーンにおいては簡単にこの「信頼」を得ることができる。仮想通貨がパブリックチェーンを採用しているのはこのようなわけがあるからだろう。プライベートチェーンではこのレベルの「信頼」を得ることができないのだろうか?もちろんどんどん参加者を増やせば同じようなことはできる。通常のプライベートチェーンのコンセンサスアルゴリズムはコンセンサスノードが増えると性能が悪化するし、参加するために許可が必要となり面倒でもある。そこでmiyabiでは第三の選択肢を用意している。それはコアノードとアプリケーションノードという考え方だ。(実は特許も取っていたりする)この2つのノードの違いはたった一つ、アプリケーションノードはコンセンサスアルゴリズムに参加しないということだけだ。それ以外のあらゆる点でコアノードとアプリケーションノードに違いはない。コアノードだけがコンセンサスアルゴリズムに参加するためアプリケーションノード数が増えたとしても性能は悪化しない。同時にアプリケーションノードはコンセンサスに参加しないのだから参加のためのハードルも低くてすむ。プライベートチェーンにおいては、このレベルの「信頼」は意識しないと得ることができない恐れがある。サーバサイドでブロックチェーンが動いていても利用者がすべてそのシステムが提供するAPIなりUIを使っていたのではこのレベルの「信頼」を得ることができないからだ。そのようンシステムは従来のシステムと同様に中央のシステムを信頼することでステートレベルの「信頼」を得ることになる。3、ブロックのレベル最後のレベルはブロックのレベルだ。前章でステートの「信頼」はブロックを自力でチェックすることで得られるといったが、そもそもそのブロックはなぜ「信頼」できるのか?という問題である。ビットコインの場合を考えてみよう。Workによってブロックが「信頼」されるのではない。PoWはマイナーが投じた1票の正当性を保証しているだけで、そのブロックがプロトコルに従っていることを保証はしない。つながっていることを保証するのはPoWではなくマイナーの経済的合理性なのだ。これこそビットコインのもっとも革命的なアイデアといってもいいだろう。攻撃者は攻撃するくらいならマイニングしたほうが得であり、まともな思考の持ち主なら攻撃なんてしない。作られたブロックは「信頼」に値するのだ。この原理は次のように一般化できる。「システムを攻撃することによって得られる利益よりもそれによって失う損失のほうが大きい場合、そのシステムは攻撃されないであろう。そのことを皆が信じることで「信頼」が生まれる。」だからこのレベルの「信頼」を得るためには、攻撃者の利益を減らし、攻撃者の損失を増やすことが必要である。利益のほうを考えよう。プロトコルに準じないブロックを生成した時に攻撃者は何を得ることができるのか?実は100%のハッシュパワーを得たところでトランザクションをねつ造することはできない(トランザクションレベルの信頼)し、もともと持っていないコインを送ることもできない(ステートレベルの信頼)。考えると攻撃者やれることはせいぜい・特定のトランザクションを無視する・歴史を書き換え過去とは別の人にコインを送ることくらいだ。歴史を書き換えることは強力な行為ではあるのだが・・・。これさえもmiyabiのようにファイナリティのあるコンセンサスアルゴリズムを使っている場合は歴史を書き換えることさはできない。決まったことは覆らないからこそファイナリティがあるという。そんなことが起きればシステムは止まってしまうのだ。逆に言えば攻撃者はシステムを停止させることができるとも言えわけだが。次に損失のほうを考えてみよう。ビットコインで攻撃者が思いとどまるのは「そんなことするくらいならマイニングしたほうがましだ」と考えるからだった。これってつまりマイニング報酬を与えることで攻撃者の損失を増やしているのだと考えることができる(機会損失という意味で)。プライベートチェーンではどうだろうか。プライベートでは通常マイニング報酬はない。ノードの運営者はネットワークを運営することによって何かしら利益を得ていると考えられる。なければ運営コストを払うわけがないからだ。誰が運営しているのはネットワーク利用者には公開されているだろう。誰が運営しているかわからないサービスは使わないだろうから。いうことはシステムを攻撃するとことは少なくとも次の2つの点で損失になる。・運営者のレピュテーションが下がる・システムが止まってしまい本来の利益が得られないことあとはこれらの損失と利益を天秤にかけ、損失のほうが大きくなるようにすればいい。レピュテーションの低下やシステムが止まることの利益や損失はケースごとに違うだろうから一般論は語れないが、勝算のある話だと思う。これが達成できればビットコインと同じようにブロックのレベルの「信頼」を得ることができるのだ。なることによる「信頼」ということだ。ビットコインが成功したのもうなずける。レベル1は公開鍵暗号で、レベル2はP2Pで、レベル3はマイニング報酬という仕組みをうまく使うことで達成しているからだ。同様にほかのケースでどうすればいいかの指針もわかる。トランザクションの署名には形式的にではなく、利害関係者による意味のある署名を行うべきで、監査用のノードを参加させてチェックを行い、システムを攻撃したときの損失が大きくなるよな参加者にノードを任せるべきだ。ブロックチェーンの一番の特徴である「信頼できる」という特徴がどのようなメカニズムで発生するのか、これをちゃんと理解して実案件で応用することがブロックチェーンシステム構築において重要なことだと思う。ダウンロードこの記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。仮想通貨交換業もさることながから、現在はブロックチェーンのポテンシャルこそが世の中を変えると思っています。メンバーがお届けする公式ブログ。「ブロックチェーンで世界を簡単に。いうところに違和感を感じたのでコメントさせていただきます。書かれていると思いますが、文中でトランザクションレベルの信頼として挙げているものは電子署名が持つ特性ですので、電子署名を使っていれば、従来のシステムであっても当該信頼が生じるのではないでしょうか。