はじめに
みなさんこんにちは。
VIPPOOL でエンジニアをやっています、星月です。
今回はモナコインなどを送金する際に表示される「承認数」について、
また、これに関連して、どうして暗号資産が安全と言われるのか、
その辺りについてお話したいと思います。
また、世間で若干誤認されがちな、51% 攻撃についても少し触れたいと思います。
攻撃者を想定してみる
暗号の世界で「安全かどうか」を考えるときには、「攻撃者」を想定することが大事です。
というわけで、以下のシナリオを想定してみましょう。
- あなたはモナコインでお買い物をします
- その商品の価格は 1.0 MONA でした
- あなたは 1.0 MONA を送金し、商品を手に入れました
- はい、ここで 1.0 MONA の送金をなかったことにしましょう
これが、暗号資産の想定する「攻撃者」です。
あなたがこの立場になるとしたら、どんなやり方を思いつきますか?
一番に思いつきそうなのは、そう、ブロックチェーンの履歴の改ざんです。
履歴の改ざんをする方法について考えてみましょう。
ブロックチェーンの履歴の改ざん方法
ブロックチェーンは、おおむね一定時間ごとに新しいブロックを付けたしながら
伸びていきます。そして、複数のマイナーがいるため、ブロックのチェーンが分岐する
場合があります。
この場合、しばらく様子を見て、ブロックの累積 difficulty が多い方のチェーンは、
それだけ多くの計算資源が投入されている、つまり、正当なノードが集まっている証拠。信用できる。
というわけで、短い方を切り捨てて、全員で長い方に集まるルールで動いています。
これこそ、PoW の根幹を成しているルールです。
ということは、このルールに背くマイナーがいれば、安全の根拠が崩れる、つまり改ざんに成功します。
このように、累積 difficulty の大きいチェーンを無視して、1.0 MONA の支払いがなかった歴史のチェーンを
掘り続けるマイナーがいれば、まずは第一段階クリアです。
でも、この歴史のチェーンは、他の正当なノードから見ると「最長のものより短い」チェーンなので、
累積 difficulty はどうしても少なめになりがちです。そのため、このチェーンは無視されてなかったことにされます。
ではどうするか。
このように、一瞬でもいいから、正当なチェーンよりも長く伸ばすことを目標にします。
累積 difficulty なので、長ければ長いほど、大きくなる傾向があるため、長さは重要なファクターです。
すると、他の正当なノードも、ルールにのっとって、この改ざんされた歴史が正しいものとしてマイニングを始めます。
これで、あなたの支払いはなかったことになり、でも商品は受け取った後なので、
両取りの状態、つまり商品をだまし取ることに成功するわけです。
つまり攻撃者は、一瞬でいいからこの状態になることを目標にします。
要約すると、「正当なチェーンと延長の追いかけっこをして、一瞬でも追い抜けば勝ち」というゲームです。
「ブロック延長の追いかけっこ」を「ランダムウォークモデル」で表す
さて、じゃぁどうすれば正当なノードよりも伸ばすことができるのでしょうか?
それを考察するために、数学的に扱うことができるモデルに落とし込みます。
まずは前提として、モナコインのマイナー全員の総ハッシュレート(演算能力)を 100 % として、
攻撃者側のハッシュレートが p % あると仮定します。
すると、正当な歴史のチェーンは、一定時間おきに 100-p % の確率で 1 ブロック伸びます。
反対に、改ざんされた歴史のチェーンは、一定時間おきに p % の確率で 1 ブロック伸びます。
この追いかけっこは、改ざんされた歴史のチェーンのブロック高(長さ)を基準点、0 として、
正当な歴史のチェーンのブロック高を相対値でみたとき、
以下のような状態遷移のモデルで数学的に表すことができます。
これは、数学の世界では「ランダムウォークモデル」と呼ばれて、確率過程という分野で扱います。
すごろくのように、今の状態の位置にコマを置いて、確率に従ってコマを移動していくイメージです。
矢印についている確率が、その状態遷移が発生する確率です。
この図で、0 の位置が、正当な歴史と改ざんされた歴史のチェーンの長さがそろっている状態です。
1 は、改ざんされた歴史のチェーンが 1 ブロック短い状態です。
同様に、2 は、改ざんされた歴史のチェーンが 2 ブロック短い状態です。
反対に、-1 は改ざんされた歴史のチェーンの方が、正当な歴史のチェーンより 1 長い状態です。
つまり、-1 の状態に 1 度でも踏み込むことができれば、攻撃者の勝ちになります。
ちなみに、この図の子は、執筆者、星月が趣味で発注したイメージキャラです。
株式会社 VIPPOOL とは何の関係もないですが、図面がいつもフリー素材では味気ないので、
これからもたまに顔を出してもらう予定です。
まとめ
今回は、暗号資産の安全性を説明するために、攻撃者の役になり切って、
どうやって改ざんを行うかについて考えました。
そして、その方法を数学で説明できるモデルに落とし込むところまでお話しました。
次回は、このモデルについて解析して、どういう条件で攻撃が成功するのか考え、
その反対の条件を満たせば安全だ、というストーリーでお話します。
今回はここまで。
ご質問、ご意見等ありましたらお気軽にリプライください。