Block Chain

ビットコインの論文の中に、悪意あるノードと善意のノードがプロックチェーンの伸ばし合いの競争をしたとき、善意のノードが僅かでも多ければブロックチェーンを乗っ取れる確率がかなり低い、ということを説明したコードがありますが、これを実際に実行して試してみました。

ビットコイン論文
http://bitcoin.peryaudo.org/vendor/bitcoin.pdf

実行結果
bitcoin1

論文より
p = probability an honest node finds the next block
q = probability the attacker finds the next block
qz = probability the attacker will ever catch up from z blocks behind
実行結果にあるqは q=1-p の関係で、AttackerSuccessProbabilityはqz、zは縦軸の先行されているブロック数に相当します。

論文の説明にある

P < 0.001 q=0.10 z=5 q=0.15 z=8 q=0.20 z=11 q=0.25 z=15 q=0.30 z=24 q=0.35 z=41 q=0.40 z=89 q=0.45 z=340

の一番最初は、悪意あるノードが10%のとき、5ブロック後から追いつく確率が0.001(0.1%)以下という意味になります。実行結果は0.000914であっていることが確認できます。
もっと違うケースを見てみると実行結果から、悪意あるノードが50%の場合は、100%乗っ取られることがわかります。そんなことはまず想定しなくてもいいということなのでしょう。
30%のときは、5ブロックビハインドで18%くらいまで一気に下がります。またビハインドがゼロのときは悪意のノードがたとえ10%でも100%乗っ取れる計算になりますが、これはありえないということなのでしょう。

About

Categories: 未分類