blockchain

マイナーのジレンマ(The Miner’s Dilemma)

投稿日:10月 13, 2018 更新日:

 

コーネル大学の学生(現在は助教っぽい)が書いた論文

The Miner’s Dilemma

を読みました。

面白い結論が導かれていますが、現状はその結論通りにはなっていないようなので自分の意見も含めて説明していきます。

 

「マイナーのジレンマ」の内容を一言でいうと

マイニングプールは他のマイニングプールを攻撃することが一番都合がいいので、

互いに攻撃しあうことで全員の利益を減らし、

マイニングプールは無くなるだろう

 

 

巨大マイニングプールによるマイニングの寡占が問題視されている中、この分析は仮想通貨にとっては嬉しい予測です。

 

以下でもっと詳しく見ていきます。

 

前提知識(知ってたら飛ばしてください)

マイニングプールとは

コンピューターを使って計算を行い、仮想通貨の維持に貢献することで報酬を得るのがマイニングです。

この計算というのは,正しい答えを見つける計算競争です。

最近は参加する人が増え、計算用コンピューターの性能も上がってきて個人でマイニングに成功することは難しくなってきました。

1位になれる確率がとても低いということです。

 

そこで、

「皆の力を合わせてマイニングして報酬を山分けしよう」

という考えが生まれました。

グループの中の誰かが1位になればいいので報酬を受け取りやすくなります。

得られた報酬を提供された計算能力に応じて分配します。

 

ここで注意したいのは得られる報酬の期待値は変わらない(むしろ減る)ということです。

1人でやってるとマイニングに成功する蓋然性が小さすぎるので、それよりは安定して報酬が得られる方が良い、ということです。

 

このグループがマイニングプールで、マイニングプールは基本的に手数料で儲けています(むしろ減る、の理由)。

 

囚人のジレンマとは

みんな大好きゲーム理論の有名なヤツ。

 

共犯で別々の牢屋に入れられた(互いに連絡は出来ない)2人の囚人がいます。

余罪がありそうですが証拠が不十分で、今は懲役2年との判決を受けています。

彼らは別々に

「自白してくれたらお前だけは釈放してやろう。

相方は懲役10年だ。

ただし、二人とも自白したら正当な罰を下す。

2人とも懲役5年だ。」

と取引を持ちかけられます。

もちろん黙秘すればそのまま2年の懲役です。

 

囚人はどうするのが良いのでしょうか?

状況を整理する図を見てみましょう。

 

囚人B
自白
囚人B
黙秘
囚人A
自白
(5, 5) (0, 10)
囚人A
黙秘
(10, 0) (2, 2)

 

(Aの懲役、Bの懲役)というふうに見ます。

数字が小さいほど良い、ということですね。

普通に考えたら黙秘するのが良さそうです。

相手も黙秘すれば二人とも2年で出れます。

相手も同じように考えてくれていれば黙秘してくれるはず…。

 

しかし、そう簡単にはいきません。

 

裏切ればすぐに釈放される可能性もあるからです。

 

冷静に考えてみましょう。

あなたが囚人Aだった場合、

そして相手(囚人B)が自白する場合

囚人B
自白
囚人A
自白
5
囚人A
黙秘
10

自分(囚人A)の懲役は

  • 自白すれば5年
  • 黙秘すれば10年

となるので自白するほうがお得です。

 

相手が黙秘した場合はどうでしょう?

囚人B
黙秘
囚人A
自白
0
囚人A
黙秘
2

自分の懲役は

  • 自白すれば0年
  • 黙秘すれば2年

となるので自白するほうがお得です。

 

このように、自分の得だけを考えると相手がどちらを選択しようが、自白を選んだ方が良いのです。

 

そして、相手(囚人B)も同じように考えることで2人とも自白してしまい、

(5年、5年)の懲役を受けることになってしまうのです。

そうなってしまうなら(2年、2年)のほうが全然ましですよね。

 

これが「囚人のジレンマ」です。

合理的な選択をするとみんなにとって不幸せになる、というジレンマです。

 

(無限)繰り返し囚人のジレンマとは

上の例では自白するか黙秘するか、選択は一回でした。

今度はすこし設定を変えてみましょう。

 

二人の囚人は無期懲役の判決を受けています。

同じ数字を使いますが、今度は

  • 毎日一回、選択を迫られる
  • 数字は懲役ではなくシバかれる回数

としてみましょう。

 

二人とも黙秘すればその日は2回シバかれる。

次の日に二人とも自白すればその日は5回シバかれる。

という具合です。

 

繰り返しの場合、重要なのは

前日の相手の選択が分かる

ということです。

 

例えば前日に自分は黙秘したのに10回シバかれたとしましょう。

相手が裏切って自白したのが分かります。

そうしたらもはや自分が黙秘を続ける理由はありません。

自分も裏切ってやろう、と思いますよね。

 

繰り返し囚人のジレンマでは

合理的に考えても、報復を恐れて協力し合う(つまり黙秘を続ける)可能性が出てきます

(繰り返さない場合は合理的に考えると裏切りしかありませんでした)

 

Block Withholding ブロックの出し渋り

block withholding attack または selfish mining の元となる行動です。

 

マイニングに成功してもその情報をみんなに伝えないことです。

 

selfish miningはそのブロックに自分だけでシコシコとブロックをつなげていき、一気に全体に放出することで一番長いチェーンが変わってしまいそれまでの取引記録が無かったことになってしまう。というような攻撃です。

 

 

必要な前提知識は以上です。

いよいよ本題、マイナーのジレンマに入っていきましょう。

 

マイナーのジレンマの詳細

前提知識をつかって説明

2つのマイニングプールA,Bがあります。

 

あるマイニングプールAは他のマイニングプールBにスパイを送り込みます。

そのスパイは計算能力をプールBに供与し、プールBからの報酬を受け取りますが、自分がマイニングに成功した場合はBlock Withholdingします。

 

そうすることでスパイを送らなかったときに比べ、プールBの利益は下がり、Aの利益は上がります。

 

双方のマイニングプールがスパイを送るという選択をすることで結果的にどちらもスパイを送らなかった場合に比べ両プールとも利益が減ります。

 

これ、囚人のジレンマですよね。

 

マイニングプールの数が2個→n個になっても同じことが言えます。

この状況になるともはや良く知らんやつとマイニングプールを形成するメリットは無くなり、巨大マイニングプールは解体され、プライベートマイニングプール(知り合い同士・スパイでないと信頼しあえるもの同士のマイニングプール)だけが残るだろう、

 

という予測をしています。

 

また、現状そうなっていないのは

マイニングプールのシェアhttps://www.blockchain.com/ja/pools

繰り返し囚人のジレンマの状況だからであり、この状態はいずれ崩れる、

と言っています。

 

経済学的なモデル

1個のブロックが生成される間にマイニングプールiが報酬を得る確率$$R_i$$は
\(R_i=\frac{(プールiに忠実なマイナーマイナー)-(他からのプールiへのスパイ)}{(全マイナー)-(全スパイ)}\)

 

これはハッシュレートと同じような考え方です。

一人一人のハッシュパワーは同じであると仮定しているのだと思います。

いくつか足し合わせることで他よりも強いハッシュパワーを表現できるのでこの仮定は妥当であると思われます。

 

ブロック生成報酬を1とすれば1ブロックが生成される間の報酬の期待値も同じくR_iになります。

 

また、1個のブロックが生成されたときのプールiの一人当たりの報酬(の期待値)$$r_i$$は

\(r_i=\frac{R_i+(他のプールへのスパイが他のプールで受け取る報酬)}{(プールiに忠実なマイナー)-(他からのスパイ)}\)

こんな感じで定式化してスパイの人数をいろいろと変えることで報酬の増減を分析できます。

 

思ったこと

疑問1

まず、スパイってどうやらせるんだろうってことです。

個人でしょうか?

それとも会社で組織的にやるんでしょうか?

 

まず、個人だったらスパイさせるほどに特定のマイニングプールに帰属意識をもたせることなんてできないんじゃないでしょうか?

スパイ先のプールからの報酬をきっちり送らせて、block withdrawingもきっちり行わせるほどの価値を示すことはできるのでしょうか。

やましさが勝ってしまわないでしょうか。やましさに見合う報酬でしょうか。

スパイしてないやつらと報酬は同額なのでしょうか。

 

会社だったら破滅すると分かっているシステムを作るでしょうか?

相手から報復をうけて利益が減るまでにどれだけ稼げるかで変わるんでしょうか。

会社でやったらさすがに攻撃者として特定され、排除されてしまうのではないでしょうか。

 

疑問2

次に最終的な結果を考慮していたらどうなるのか、とうことです。

攻撃を仕掛けあった結果、いつの日かマイニングプールが存続できなくなる、ということをプールが考慮していることをモデルに含めることはできないのでしょうか。

含めていたら攻撃しないのではないかと思います。

 

まとめ

以上のような理由(疑問?)からblock withholdingがマイニングプール間で一般的になることはなく、そのせいで巨大マイニングプールが解体されることはないんじゃないかと思います。

 

自分でモデル作ってシミュレーションして結果出せればいいんですけど、

そこまでの気力はありません!

-blockchain
-

執筆者:


  1. 素人 より:

    マイニングに成功してもその情報をみんなに伝えないってどういうことですか?
    そんなことができるならプールの参加者はみんな伝えないんじゃないですか?

    • daiki より:

      みんなに伝えない、と言うのはブロックチェーン上で次のブロックを生み出さない、ということです。
      マイニング報酬ももらえないので、普通の人はマイニングに成功したら皆に伝えます。

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Segwitによって解決されたトランザクション展性(マリアビリティ攻撃)とは?

ビットコインについて調べていると「segwit」という言葉をよく目にします。 その目的として以下の2つが挙げられています。 スケーラビリティ問題の解決(改善) トランザクション展性(マリアビリティ攻撃 …

ブロックチェーンってなに?~①簡単な特徴(長所)~

  ブロックチェーンを布教していると すぐにある難題に直面します。   「ブロックチェーンってなに??」   この純粋無垢な質問に僕はタジタジになってしまうのです。 &n …

【図解】公開鍵暗号方式をわかりやすく直観的に!

わかりそうでわからない「公開鍵暗号方式」 ビットコインとかブロックチェーンについて調べてると 「秘密鍵」 という言葉によく出会います。   秘密鍵って何?って感じで調べると、 秘密鍵、公開鍵 …

WindowsでGethをインストールしてマイニングを体験![初心者向け]

Geth(Go Ethereum)をインストールしてイーサリアムで遊んでみたい! けど自分windowsだし、パソコン詳しくないし難しそう…ってな方向けに ・Windows10で ・gethをインスト …

ブロックチェーンって何?~②簡単な仕組み~

前回の記事では ブロックチェーンとは改ざん・コピーできないデータベースである ということをお伝えしました。   今回は 何でそういう性質があるのか?という疑問に答えるために ブロックチェーン …