【レッスン11】「数学的な根拠」~ブロックチェーンを改ざんしてみよう~

なぜこのレッスンが必要なのか

本レッスンでは、仮にブロックチェーンを改ざんしようとした場合に、どれぐらいの確率で改ざんに成功するか、数学的に証明する方法を学習していきます。

本レッスンを学ぶことで、ブロックチェーンを改ざんするのがいかに困難であるかわかるでしょう。

このレッスンで学べること

  • ブロックチェーンの改ざん困難性
  • ギャンブラー破産問題について
  • ビットコイン取引のファイナリティ
  • ブロックチェーンの改ざん可能性


    ブロックチェーンを構成する善良な各ノードは、当然不正な取引をブロックに取り込もうとはしません。

    従って、悪意のあるノードが行う不正行為は、以下の2つになります。

    過去の履歴を改ざんしてこれまでに支払った額を奪い戻す

    これから新しく発行するコインを独占する

    ブロックチェーン最も長いチェーンを正しいチェーンとみなすため、正しいチェーンと不正なチェーンが長さを競い合う様子は、ランダムウォークのようであると考えられます。

    正しいチェーンが1ブロック分伸びた場合は、善良なノード群が一歩リードし、反対に不正なチェーンが1ブロック分伸びた場合は、不正なノード群が一歩リードするということです。


    このとき、不正なチェーンの長さが正しいチェーンの長さに追いつき追い越す確率は、ギャンブラー破産問題と類似しています。

    ギャンブラー破産問題とは、ギャンブルで同額を賭け続けると破産する確率が高くなるという理論です。

    この理論では、資金の少ないギャンブラーは、膨大な資金力を有する運営組織には勝てないということを証明しています。


    ビットコイン論文では、不正なチェーンの長さが一度でも正しいチェーンの長さに追いつける確率は、正しいチェーンの長さが伸びるほど(ブロックの数が増えるほど)指数関数的に小さくなる、ということを証明しています。

    P > qであるとすると(善良なノード群が不正なノード群の数を上回っている状態)、qzは、正しいチェーンのブロック数が増えるほど指数関数的に低くなります。

    従って、不正なノード群は、少しでも早い段階で正しいチェーンとの差を詰めなければなりません。


    レッスン進捗の確認

    レッスンの内容を理解したら、
    「チェック」ボタンをクリックしましょう!

    取引のファイナリティ


    ここからは、取引が改ざんされる可能性をほぼ0%に近づけるには、どれほどの時間が必要になるのか学習していきます。

    この、取引が改ざんされる可能性がほぼ0%の状態を、ファイナリティといいます。


    例として、取引の送信側が不正なノード、受信側が善良なノードとします。

    不正なノードは、善良なノードに対して偽のビットコイン取引を送信し、一定時間経過後に善良なノードがそのことに気づいたときには時すでに遅し、という状態を目指します。

    不正なノードは、偽のビットコイン取引を送信したのと同時に不正なチェーンのブロックを形成し始めます。

    正しいノードは、不正なノードが不正なチェーンをどれだけ伸ばしているかを知ることはできません。

    このとき、正しいチェーンがディフィカルティの調整によって、普段通りにブロックを形成していたとすると、不正なノードが伸ばせるブロックの長さは、以下のポアソン分布の期待値に従うと考えられます。

    不正なチェーンが正しいチェーンに追いつく確率は、それぞれがチェーンを生成し始める時点で、不正なノードがkブロック分を形成し終えている確率に、z-kの差分(正しいチェーンに連結しているブロックの数−不正なチェーンに連結しているブロックの数)から追いつく確率を乗算し、その結果を全てのkに和算することで求められます。

    上記の式をC言語のコードに変換すると、以下のようになります。

    この式に対して、実際にいくつかの数字を当てはめて試してみます。

    上記の通り、不正なチェーンが正しいチェーンに追いつく確率は、zが増えるほど指数関数的に小さくなっていることがわかります。


    それでは、実際にどれほどのブロック数があればファイナリティ状態となるのでしょうか。

    仮に、不正なチェーンが正しいチェーンに追いつく確率が0.1%未満であればファイナリティ状態であるとした場合、必要なブロック数は以下の通りです。

    すなわち、正しいチェーンにブロックが6つ以上連結されていれば、不正なチェーンが正しいチェーンに追いつく確率を、0.1%未満に抑えることができるということです。

    言い換えると、新しくブロックが形成されてから6つのブロックがその後に形成されると、ファイナリティ状態であるとみなせるということになります。

    ビットコインの場合、1つのブロックが形成される時間、ディフィカルティによって約10分に1度になるよう調整されているため、新しくブロックが形成された後、10分×6ブロック=60分経つと、ファイナリティ状態が成立するということです。


    レッスン進捗の確認

    レッスンの内容を理解したら、
    「チェック」ボタンをクリックしましょう!

    【レッスン11】 「数学的な根拠」~ブロックチェーンを改ざんしてみよう~

    0%

    0%

    全てのレッスンが完了していません 全て完了にしてからテストを行いましょう!

    下のボタンを押すとテストが始まります。