利己的マイナーからの防衛手段。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week5-5

前回までの記事はこちら

ーーーーーーーーーー

こんにちは!クレメア(@cremea_tw)です。

前回に引き続き、カリフォルニア大学バークレー校の無料講義、
「ビットコインと仮想通貨のオンライン講座」で学んだ内容をシェアしていきます。

講義そのものにおいて、

読者対象:ビットコインや仮想通貨について詳しく知りたい全ての人
前提知識:不要

という感じなので、
講義内容を読むだけでもかなり理解が深まるのではないかと思います。

 

文章のスタイルとしては、
翻訳ではなく、個人的解釈バリバリの超訳をしていきます。

荒削りですがスピード重視で、
クレメア的な解釈も交えてお伝えするので、
間違いや意見などあればコメントいただければと思います。

 

また、太字や文字色などの文章の装飾は極力していません。

学びの本質はそこではない、時間がもったいない、あとでできる、
ということで、今回は泣く泣くカットしました。

見辛いかもしれませんが、予めご了承ください。

 

ということで、
講義の内容に沿って進めます。

今回の記事は、
利己的マイナーからの防衛手段についてお伝えします。

それでは、本題に入っていきましょう。

イントロ:防衛

悪意のあるマイナーは、
潜在的な利益を高めてネットワークを攻撃したり、
破壊しようとしたりすることでインセンティブが与えられます。

正直な人は、
こうした行動を防ぐためにインセンティブを与えられます。

ビットコインを完全に破壊するようなことを防ぐため、
ビットコインエコシステムにパッチを当てようとする絶え間ない闘争があります。

この次のセクションでは、
私たちが利己的なマイニングに対抗しなければならない、
いくつかの防衛手段について見ていきます。

私たちは最初に、
より単純な防衛手段のいくつかを見て、
そこから改善できるものを見ていきます。

 

ブロック検証

利己的なマイニングを解決するために以前提案された解決策の1つは、
メタデータを保持するダミーブロックを使用してブロックを検証することでした。

この手法は、2015年にシュルツが提案し、
その後2016年にソラットとポトプ・ブチュカルによって提案されました。

アイデアは、規則的なブロックを持つことに加えて、
そのブロックの署名を含む追加の(ダミーの)ブロックも作成するということです。

したがって、任意のブロックに対して、
対応するダミーブロックを見て、
そのブロックで何人のユーザーが見て、
サインオフしたかを検証するのは簡単です。

 

利己的に採掘されたブロックは、
ブロックを保留している人だけが見ることができ、
そのブロックには十分なシグネチャはありません。

これは正直なブロックがネットワークによって目撃されることを証明し、
マイナーがそれに取り組む前に競合するブロックが存在しないことを証明します。

したがって、ブロックを保留している悪意のあるアクターが、
最終的にチェーンを公開すると、
最初のブロックが十分な署名を持たないため、
最初のブロック以外のすべてが自動的に拒否されます。

 

この方法では、利己的なマイナーは、
期待された報酬を上回ることはできず、
これは1ブロック分の報酬だけしか得ることができません。

これは彼らが見つけた最初のブロックから、
チェーンを構築するために費やした多くの作業を無効にします。

したがって、このダミーブロック署名方式を使用したブロック検証は、
利己的なマイニングを阻害します。

 

私たちが見ることができる即時の欠陥の1つは、
この手法がシビル攻撃に対して脆弱であることです。

ブロック上の署名がすべて異なるユーザーからのものであることを、
保証する方法はありません。

そして、利己的なマイナーは、
控除されたブロックが有効であるように見えるように、
必要なだけ多くの偽の署名を生成することができます。

以前からわかっているように、
ビットコインで新しいアイデンティティを生成するのは簡単です。

さらに、ブロックが有効であることを示すために、
どれだけ多くの署名があるかを判断する実際の方法はありません。

 

例えば…

シグネチャの閾値数はどの程度のオーダーですか?

また、ネットワーク内のユーザー数の変化に応じて、
変更する必要がありますか?

これらの質問はすべて答えにくいですが、
このスキームの実装にとって重要です。

また、どれくらいのシグネチャが必要であっても、
悪意のあるユーザーはシビルがシステムを簡単に攻撃する可能性があります。

したがって、最終的には、
署名量の閾値を決定する良い方法がなく、
シビル攻撃の影響を受けやすいという事実によって、
防御全体が役に立たなくなります。

さらに、ダミー署名ブロックを有することのもう一つの欠点は、
それらの実装が既に確立されているブロック有効性ルールへの、
基本的変更を必要とすることにあります。

このような変更は、
ハードフォークを必要とし、これは望ましくありません。

 

フォーク・パニッシュメント

利己的なマイニングに対する防衛のもう一つのアイデアは、
2013年にリアバハックによって提案されたフォーク・パニッシュメントでした。

フォーク・パニッシュメントは、
その言葉通りの意味です。

すなわちそれは、
ブロックチェーンをフォークする誰もが罰せられるということです。

セルフまたは正直に採掘されたかどうかに関わらず、
競合するブロックにはブロック報酬はありません。

また、実際にフォークがあることを証明した最初のマイナーは、
前のブロックの高さから失われた報酬の半分を得ます。

これにより、悪意のあるユーザーは、
自分の秘密チェーンを使って、
ブロックチェーンをフォークしようとすることを阻止するとともに、
正直なマイナーに自分が見たフォークを報告するようインセンティブを与えます。

こちらの図では、フォークがあります。
上は正直なチェーン、下は不正なチェーンです。

2つのブロックは同じブロックの高さでブロードキャストされるので、
それらは競合するブロックであり、
したがってどちらにも関連するブロック報酬はない。

フォークがあることを証明し、
次のブロックにこれを含める最初のマイナーは、
前回のブロックの高さからブロック報酬の半分だけでなく、
彼らがちょうどマイニングしたブロックのブロック報酬を得ます。

ただちに欠点の1つは、
競合するすべてのブロックを処罰するため、
正直なマイナーはフォーク・パニッシュメントによる付随的な被害を被ります。

そして、正直なマイナーを罰するという事実は、
別の種類の攻撃を構成します。

フォークは、ビットコインの報酬分配ルールを、
根本的に変えなければならないという事実にも苦しんでいます。

フォークがあったブロックのコインベーストランザクションを変更するには、
何らかの方法が必要です。

これを実行し、
ブロック報酬の半分を次のブロックに転送するには、
このコースの対象外である、
トランザクション可用性という概念を活用する必要があります。

そして最後に、フォーク・パニッシュメントは、
ハードフォークを実装する必要があり、
以前と同じように、それはかなり望ましくありません。

 

ユニフォーム・タイブレーク

フォーク・パニッシュメントのように、
フォークがあるときはいつでも皆を処罰するのではない、
別の方法があるのでしょうか?

もしかしたら、ブロックの伝播競合を防ぐ代わりに、
各ブロックを各ブロックの高さで考えることもできます。

そのためには、2014年にEyalとSirerによって提案されたアイデアであった、
ユニフォーム・タイブレークを使用できます。

伝播する競争があるとき、
ネットワークの利点を持つマイナーは、
ブロックを最長のチェーンに受け入れる可能性が高くなります。

これは、ビットコインネットワークでよりよく結びついており、
より多くの人々にブロックを提供できるからです。

私たちは、
ネットワークの利点を持つ利己的なマイナーから身を守るために、
ユニフォーム・タイブレークを使用することができます。

各ブロックが公開された後は、
最初に見たブロックを有効と見なすのではなく、
よく連結された利己的なマイナーからのブロックである可能性があるため、
各マイナーはまずすべての競合するブロックについて聞くのを待ちます。

マイナーが同じブロックの高さで複数のブロックを見るタイの場合、
マイナーはどのチェーンを掘削するかをランダムに選択します。

マイニングするチェーンをランダムに選択することで、
攻撃者のネットワークレベルの支配を緩和します。

EyalとSirerは、
ネットワークで本当にうまく接続されているため、
データがネットワークを流れる方法に、
影響を与える可能性のある利己的なマイナーが存在する場合、
デフォルトのビットコインプロトコルは、
0%の利益閾値を持つことを発見しました。

これは、ビットコインが完全に安全であるためには、
ネットワークの100%が正直でなければならないことを意味します。

彼らの論文では、
提案されたユニフォーム・タイブレークで、
彼らは利己的なマイニングの利益の閾値を25%に引き上げたと主張しました。

しかし、2015年後半に、
Sapirshteinが発行した別の論文では、
より最適な利己的なマイニング戦略が提案され、
利益水準を23.2%にまで下げました。

 

偽造不可能なタイムスタンプ

ユニフォーム・タイブレークを使用した25%の利益のしきい値は、
あなたがマイニングパワーの33%を持っているときに、
利己的なマイニングが常に利益を上げることを考えると、かなり悪いです。

さらに衝撃的なのは、
これをビットコインの元のデザインと比較すると、
これは最大50%の悪意のあるマイナーに寛容であると考えられていました。

私たちはどのようにして25%を改善しますか?

2014年、Ethan Heilmanは、
タイムスタンプを使用した利己的なマイニングの防衛を提案しました。

アイデアは、タイムスタンプが、
信頼できる当事者によって発行され、
マイナーによってすべてのブロックに組み込まれるということです。

タイムスタンプは、
ビットコインネットワーク全体でグローバルであり、
60秒ごとに定期的に発行されます。

私たちは暗号の署名を使用するため、
公にアクセスできますが、偽造はできません。

ブロックが競合しているとみなされるのは、
おおよそ同じ時間枠、たとえば120秒以内に受け取られ、
ブロック間で競合が発生した場合に、
マイナーはタイムスタンプがより新鮮なブロックを選択するだけです。 

この論文では、
この偽造不可能なタイムスタンプの方法を使用している、
利己的なマイナーの利益の閾値は32%に上昇し、
ユニフォーム・タイブレークで見た25%からの堅実な改善と言います。

 

すでにわかっているように、
利己的なマイナーはこの防衛を簡単に破ることができます。

タイブレークルールは、
ブロックの伝播競争がある場合にのみ適用され、
利己的なマイニングチェーンがパブリックチェーンより長い場合には適用されません。

それが判明したように、
攻撃者の計算能力が40%を超えると、
利己的なマイニングに対する、
これらのタイブレーク防衛は、
本質的に価値がないことが示されています。

利己的なマイナーは、
彼らが最も長いチェーンを持っているなら、
正直なチェーンを無効にすることができます。

マイナーは最​​も長い作業をしているので、
最長のチェーンを選ぶでしょう。

これは、正直なチェーンのブロックが「新鮮」であるか、
より最近のブロックであるという事実よりも重くなります。

そして、あなたが気付いたかもしれないもう一つのことは、
この防衛は、タイムスタンプを誰にでも配布するために、
信頼できる第三者が必要であるということです。

ここでの欠点は、
ビットコインが可能な限り分散化を図っていることです。

これは他のシステムでも機能しますが、
集中化はビットコインの哲学と混同されません。

だから今はこれをスキップします。

 

Publish or Perish

今私たちは、
最近の利己的マイニング防衛の発展の1つに入っています。

これはPublish or Perishと呼ばれ、
2017年にZhang and Preneelによって出版されました。

私たちが見てきた以前の防御には、
フォーク・パニッシュメントなどのハードフォークが必要なことや、
偽造不可能なタイムスタンプのように、
利己的なマイナーが長いチェーンを持っているときに、
利己的マイニングを廃止できないなど、多くの欠点がありました。

Publish or Perishは、利己的マイニングの最善の策だと主張し、
これまでのすべての問題に取り組んでいます。

それはハードフォークを必要としません。

これは古いチェーンと後方互換性があることを意味し、
利己的なマイナーがより長いチェーンを持っていても、
利己的なマイニングを阻害します。

利己的なマイニングのアイデアは、
悪意を持って秘密のブロックを作り、
それをチェーンに公開するというものです。

Publish or Perishの主な目標は、
秘密のブロックが利己的なマイナーに、
全く役立たないことを確認することでした。

これを行うために、
Publish or Perishのアプローチは、
ビットコインのFork Resolving Policy(フォークの解決方針)、
またはFRPの修正に重点を置いています。

デフォルトでは、
マイナーが有効な最長のチェーンを選択することがわかっているので、
ビットコインでは長さがFRPです。

Publish or Perishの洞察は、
Fork Resolving Policyの発見的方法として、
長さから重さに切り替えることでした。

チェーンの長さを数えるだけではなく、
ブロックがネットワークにどれくらい暴露されているかを、
大まかに表した重みを考慮し、
ブロックを保留することは不利になります。

多くの用語と形式的な定義があるので、
最初にそこから説明していきましょう。

 

定義

ビットコインネットワークを介して、
ブロックを伝搬するのにかかる時間について、
想定される上限としてTauを定義します。

そして、時間の用語は、有効な受信ブロックに対して、
(1)その高さ値がローカルヘッドの値よりも大きいか、
(2)その高さ値がローカルヘッドの値と同じであることを意味するタウ時間内に伝播します

次の図は、
ブロックが時間内にあるための2つの可能な要件を示しています。

こちらの図では、タウ時間内にブロックが受信されるため、
ブロックは現在のヘッドと競合しています。

 

一方こちらの図では、
受信したブロックの高さの値がローカルヘッドの値より1大きいため、
ブロックチェーンに追加します。

 

Uncleという用語は、
ブロックのParentと競合するインタイム・ブロックを指します。
Parentは、現在のブロックの前のブロックです。

正式化するために、
ブロックBのUncleはBの高さよりも1つ少ないです。

BのUncleは、
BのParentと同じ高さになければならないので意味をなしません。

そして、BのUncleが時間通りになるためには、
BのParentのtau時間内でなければならない。

この図は、Uncleのブロックの定義をうまくまとめています。

私たちは私たちのChildブロックBを持っており、
その前に私たちはParentAを持っています。

Aと同じブロックの高さに、
ブロックCとDがあります。

ブロックCは、
BのParentのタウ時間内にある一方、
ブロックDはBのUncleではありません。

Bの高さが1つ低い正しいブロック高さを持っていますが、
それはBのParentAのタウ時間には見られないからです。

だからUncleではありません。

 

マイナーの観点から見たチェーンの重量は、
その時点での数です

インタイムブロックとインタイムUncleブロックの数を加えたものです。

そして、私たちがインタイムブロックと、
インタイムUncleブロックで有効であることを確かめるために、
マイナーはブロックのハッシュをブロックの重みに埋め込むようにします。

そうすれば、他人がブロックの重量を簡単に検証できます。

また、ブロックが時間内にあるかどうかは、
マイニングの現地の視点から評価されるため、
すべてがマイナーの視点から来ているとも言います。

競合するチェーンは常に共有ルートを持つので、
ルートの後のブロックから始まるチェーンの重みを計算します。

たとえば、図では、
これらのチェーンの3つすべてが、
すべてルートブロックRにルートされています。

重量を定義しておけば、
マイナーが保留ブロックから、
どのように消極的になっているかをちょっと知ることができます。

あなたがブロックを保留していれば、
あなたのブロックは時間通りではないので、
より軽いものになります。

 

重み付きフォークの解決方針

これらすべての定義で、
重み付きフォーク解決方針を指定できるようになりました。

それには3つの主要なルールがあります。

あるチェーンが他のチェーンより、
kかそれ以上大きいブロックの高さよりも長い場合、
マイナーはこのチェーンを掘り起こします。

チェーンが他のチェーンよりもkブロック長い場合は、
おそらくそれが有効なチェーンであると信じることができます。

この種のものは、デフォルトのビットコイン長FRPから、
正直な多数の概念を継承しています。

チェーンが他のチェーンよりもkブロック長く、
悪意のある場合、私たちはより大きな問題を抱えています。

すべてが壊れているので、
ビットコインの使用をやめるべきです。

おそらく誰かが、
ネットワークのハッシュ・パワーの大半を所有しているからです。

すべてのチェーンがkブロック以内の高さにある場合、
マイナーは最も大きな重量のチェーンをマイニングすることを選択します。

最大の重みが複数のチェーンによって同時に達成される場合、
マイナーはそれらのうちの1つをランダムに選択します。

1つの注意点は、
最初のルールではkを無限に設定すると、
ネットワークパーティションの許容量をゲージする、
フェールセーフパラメータであり、ルールは適用されません。

 

われわれは今、
これらすべての用語と手続きを定義してきたので、
実際にPublish or Perishが、
いかに利己的なマイニングを阻害しているかを見てみましょう。

ここでは一般的なシナリオを示します。

利己的なマイナーがすでに、
秘密に1ブロックをマイニングしたとします。

彼らが第2の秘密ブロックをマイニングする前に、
正直なネットワークが競合ブロックを公開しています。

今ブロックの伝播競争があります。

現時点では、利己的なマイナーには2つの選択肢があります。

オプション1、公開する
またはオプション2、公開しないことです。

利己的なマイナーが彼らのブロックを公表すると、
次の正直なブロックは、そのUncleを見た証拠を埋め込むことができるので、
より高い重みを得るでしょう。

一方で、ブロックを公開することは、
それが時間的なので、利己的なチェーンの重要性に、
貢献することを確実にするでしょう。

したがって、利己的なマイナーのブロックは、
1の重みを得ますが、正直なチェーンの重量にも寄与します。

一方、利己的なマイナーがブロック秘密を保持し、
時間内にあるための時間枠を逃した場合、
秘密ブロックは自身のチェーンの重量に寄与しません。

したがって、利己的なマイナーのブロックは、
0の重みを持ちますが、
正直なネットワークはこの秘密のブロックを見たことがないので、
正直なチェーンの重みには寄与しません。

重要なことは、
利己的なマイナーが最終的にどの選択肢を選んでも、
正直なチェーンにも与えられていない、
利己的なチェーンには重みを与えないということです。

 

Publish or Perish:分析

もう少し明確にするために、
前のシナリオの分析にもっと厳密なアプローチを取ってみましょう。

こちらの図では、
黒丸は利己的なマイナーによって発見されたブロックを表し、
黒い三角は正直なマイナーによって発見されたブロックを表しています。

円と三角形のアウトラインは、
それぞれ利己的で正直なチェーンの重みのカウントを表し、
いつものように、ブロックは左から右にマイニングされます。

今の時点では、以前と同じように、
利己的なマイナーは1ブロックしか持っていませんが、
それをSと呼びましょう。

正直なネットワークがSに競争相手を公開しました。

オプション1では、利己的なマイナーが、
Sを公表することを選択します。

正当な競争相手のタウ時間内にSが発行されるので、
Sは利己的なチェーンの重みに数えられます。

しかし、
Sは次の正直なブロックのUncleにもなるので、
正直なチェーンの重みも考慮します。

だから、Sは正直なチェーンと、
利己的なチェーンの重さに数えられます。

私たちが時間を早送りすると、
正直なブロックと2つの利己的なマイニングブロックがあるにもかかわらず、
正直なチェーンも利己的なチェーンも3の重みを持っています

 

オプション2では、
利己的なマイナーはSを公表せず、
代わりに待つことを選択し、
後で利己的なチェーンの一部として公表します。

Sはtau時間内と同様に遅れて出版されるので、
利己的なチェーンの重さに寄与しないでしょう。

また、それは次の正直なブロックのUncleではないので、
Sは正直なチェーンの重さにも寄与しません。

だからオプション2では、
Sは正直なチェーンでも利己的なチェーンでもありません。

正直なチェーンも利己的なチェーンも、
2つの重みを持っています。

利己的なマイナーは、
3つの利己的なマイニングブロックを持っていても、
2つの正直に採掘されたブロック分の重みしか持っていません。

その結果、利己的なマイナーがどのオプションを選択しても、
Sは利己的なチェーンの重みだけに寄与しません。

これは、最初にSを持つ利点を完全に無効にします。

 

 

Publish or Perishが起こったときの、
利己的なマイナーの期待収益に関する2つのグラフがあります。

左側には、一定の防衛策があるとして、
利己的なマイナーの利益のグラフがあります。

特に注目すべきは、ユニフォーム・タイ・ブレイクと比較した、
Publish or Perishのパフォーマンスです。

ユニフォーム・タイ・ブレイクは理論的に最適な防御であり、
100%の精度でタイがあるときはいつでも勝手にブロックを拒否します。

この理論上のユニフォーム・タイ・ブレイクを、
上回っていることに注意してください。

右側には、マイナーが自動的に、
そのマイニングすることを選択するために、
チェーンを先行させる必要があるブロックの閾値数である、
kの異なる値が与えられた収益があります。

それが判明したように、
kの値が高いほど、利己的なマイナーの収益は少なくなります。

収入は、kを無限に設定すると最も低くなります。

その時点で、マイナーは常に、
最も重要なチェーンでマイニングをします。

1つの重要な点は、理想的な期待利益と、
それが有するマイニングパワーの量において線形であることと、
k =無限大と、最も低い収入のPublish or Perishとの間には、
依然として大きなギャップがあることです。

だから、Publish or Perishが良いと言っても、
ハッシュ・パワーをマイニング報酬に正比例させるという、
ビットコインの意図に達していません

それが立証しているように、利己的なマイニングは、
あなたがかなりの量のハッシュ・パワーを持っていることを考えると、
より多くの利益を得るための効果的な方法で、
Publish or Perish で対処するのも難しいです。

 

Publish or Perishには実際には多くの制限があります。

最初に、それは同期を仮定していますが、
ビットコインは非同期です。

特定のブロックの高さにある、
すべてのブロックが配信されたかどうかを、
決して確かめることができないため、
ブロック伝播時間の上限を定義することは有用ではありません。

これは、ビットコインのような、
大規模な分散システムに固有のものです。

たとえば、フェールセーフパラメータk> 1の場合、
攻撃者は手遅れになる前にブロックをブロードキャストできます。

これは正直なマイナーの間で、
矛盾した見解を引き起こすでしょう。

時間の経過とともに、
ブロックを見る人もいるかもしれませんし、
ネットワークを越えてブロックが伝播するのにかかった時間によっては、
遅く見える人もいます。

それは単にPublish or Perishだけではありません。

ビットコインが同期していることを前提とした、
すべての防御またはアップグレードまたは提案については、
すべてがうまくいかないでしょう。

なぜなら、特にビットコインは、
オープンで誰にでも公開されているため、
ネットワークに関するこれらの前提を現実的に行うことはできないからです。

ビットコインのデフォルト長FRPから、
加重されたFRPへの移行期間中、
攻撃者は状況を利用して、
混乱したユーザーに対して二重支払い攻撃を開始する可能性があります。

Publish or Perishのもう一つの限界は、
それが実際のいくつかの要因を無視していることです。

ネットワークの待ち時間のために、
自然にフォークが発生することがよくありますが、
このモデルでは考慮されていません。

ブロック報酬の上に、
追加のインセンティブとして、
取引手数料を載せることを考慮していません。

また、複数の利己的なマイナーがいつ存在し、
どのように相互に、そしてネットワークの他のものと、
相互作用するかは考慮されていません。

結局のところ、Publish or Perishでも、
インセンティブの互換性は得られません。

しかし、Publish or Perishなどの分析は、
ビットコインの防御策を設計する上で非常に良いスタートです。

多分、非同期モデルへのPublish or Perishは、
私たちの利己的マイナーに対する防衛へのアプローチには良い方向です。

 

Quick Check 1

利己的なマイニング防衛の欠点として提示されたのはどれですか?

  • Reliance on a trusted central entity to distribute timestamps
  • Putting all burden of computation on a central node
  • Assumptions of network synchrony
  • Requirement of hard fork to implement strict protocol changes
  • Ease of naive Sybil attack
  • Vulnerability to network attacks

 

ビットコインネットワーク

個々の防衛の分析から一歩前進して、
実際のビットコインネットワーク自体を理解することが重要です。

結局のところ、
理論的には本当に素晴らしいと思われるPublish or Perishを見てもわかるように、
ビットコインネットワークに関する特定の特性、
特に同期の性質に関する仮定のため、
最終的には実際には動作しません。

最初に、ビットコインネットワークはピアツーピアであり、
私たちのためにメッセージを送受信する中央エンティティはありません。

 

メッセージがネットワークを経由して送信される方法は、
氾濫とも呼ばれるゴシッププロトコルによるものです。

基本的に私がトランザクションを送信したいのであれば、
私たちが隣人と呼んでいる、接続されているすべてのノードに、
このことを伝えなければなりません。

私の隣人はすべて自分の隣人に話し、
隣人はそのまた隣人に伝えます。

たとえば、ネットワークが実際にこのように見える場合、
私はニックにメッセージを送りたいと思っています。
私は隣人のデリックとグローリアに伝えます。

デリックとグローリアは隣人に話しかけ、
デリックはニックとつながっているので、
ニックは私のメッセージを受け取ります。

また、ビットコインの仕組みモジュールで議論したように、
私のメッセージはデジタル署名されています。

最初にビットコインネットワークに接続して参加する方法は、
再帰的な手順によるものです。

ビットコインコアソフトウェアにハードコードされているのは、
最初に接続するシードピアのリストです。

これらのシード・ノードに隣人を尋ね、
いくつかを選び、これらのノードに隣人を尋ね、
かなりランダムな接続があると思うまでこれを繰り返します。

ビットコインでは、各ノードに、
最大125の接続を設定できます。

通常、8つのアウトバウンド接続と、
117のインバウンド接続があります。

ビットコインネットワークを介して、
情報がどのように伝播するかをさらに理解するためには、
ネットワークトポロジーとレイテンシーを理解する必要があります。

 

ネットワークトポロジーとは、
ビットコインネットワークを、
ノード間の接続のためのサークル(個々のノードとライン)と同様に、
グラフ化する方法です。

ビットコインでは、偶数のトポロジーが必要です。

私たちは、各ノードがおおよそ同じ重量、
私たちの場合のマイニングパワー、
ランダムな接続を持ち、かなり均一に見えるようにします。

しかし、これは事実ではありません。

われわれが知っているように、
ノード間のマイニング・パワーには大きな違いがあります。

これは、一部のノードが、
他のノードよりも影響力があることを意味します。

私たちが思ったように、
ビットコインネットワークは本当に分散され、分散していますか?

実はそうではありません。

デリックが信じられないほど高い、
ハッシュレートを持っているとしましょう。

彼はマイニングファームや、
マイニングプールを運営している可能性があります。

マイニングファームやプールは、
時に秘密にして人々がそれらを攻撃しないようにするため、
実際にはわかりません。

デリックはおそらく、
ネットワーク内の他のノードよりも影響力があります。

ネットワークでハングアウトしているSPVノード、
または単なるソロマイナーであるノードとハッシュパワーを比較してください。

デリックのプールには、
これらのどれよりも多くのハッシュ・パワーがあります。

また、ネットワークトポロジーを、
簡単に判断する方法はありません。

デリックがマイニングプールを運営している場合、
彼のマイナーはビットコインネットワークに直接接続する必要はありません。

彼らはちょうど軽量プロトコルを介して、
デリックのノードに直接接続することができます。

だから、デリックのマイナーは、
すべて本質的に秘密のサブグラフを形成します。

この隠れたグラフトポロジーと、
デリックがネットワーク上の複数のノードであり、
複数のプールを実行している可能性があるという事実により、
デリックはネットワークハッシュ能力の、
50%以上を持つ可能性が隠されている可能性があります。

しかし、デリックは、
ネットワークのハッシュ・パワーの50%も必要としません。

これまでの攻撃と防御で見たように、
ビットコインは、特に利己的マイニングの場合には、
いくつかのインセンティブアライメントの問題を抱えています。

その結果、デリックのプールが、
ネットワークのハッシュレートの33%を持つ場合、
ビットコインネットワークが危険にさらされる可能性があります。

または25%…または23.2%…または32%….

おそらく、まだ発見されていない攻撃、
または利己的なマイニング計画があり、
利益の閾値をさらに低くする可能性があります。

 

ネットワークトポロジーに加えて、
ネットワークレイテンシーについても心配する必要があります。

私たちがPublish or Perishで見たように、
利己的なマイナーは、それが手遅れになる直前に、
彼の秘密のブロックを公開することができました。

いくつかのノードは、
時間通りにそれを見るでしょうし、
他のノードは遅くそれを見るでしょう。

これは、ここでネットワークの待ち時間が、
どのように問題になっているかを示す良い例です。

 

また、2人のマイナーが、
同時に有効なブロックを見つけた場合を考えてみましょう。

以前と同じように伝播する競争があり、
ネットワークでよりよく接続され、
より早い伝搬時間を持つマイナーが最終的に勝つでしょう。

これはマイナー利益の不均衡につながります。

ネットワークに接続しているマイナーは、
物事をより速く見て、メッセージやブロックを素早く送信することができます。

一方、接続不良のマイナーが、
今度はブロックを見つけるのに時間を費やす可能性があります。

最終的にブロックを見つけても、
その時間内はネットワークレイテンシーのために、
伝搬時間が非常に遅くなる可能性があり、
別のマイナーがすでにネットワークの大部分に、
競合ブロックを見つけて提出していることでしょう。

最初のモジュール、
シビル攻撃について議論したところで、
より多くのアイデンティティを持つことが、
有益ではないことを考えてみましょう。

これは、
実証実験では計算能力を制限要因にするからです。

もし私たちが十分に巧みな人であれば、シビル攻撃は、
ネットワークのトポロジーとレイテンシを超えて、別の方法で立ち上げることができます。

デリックがノードをネットワークにあふれさせる能力を、
持っているとしましょう。

これは彼のマイナーかもしれませんし、
彼が十分に賢い人であれば、
犠牲者のコンピュータを0パワーノードのように動作させる、
マルウェアも書くことができます。

各ノードはビットコインネットワークに耳を傾け、
情報をデリックに中継します。

彼らはセンサーのように行動するでしょう。

デリックはネットワークレベルの支配力を活用して、
正直なマイナーを攻撃することができます。

デリックもまた利己的なマイニングであり、
すでにいくつかの秘密ブロックを持っていて、
彼のすべての0パワーノードに配布されているとしましょう。

デリックノードが次の正直なブロックXについて聞くと、
デリックはXを無視して秘密ブロックPを公開することができます。

ブロックPがブロックXの前にマイナーに達すると、
デフォルトではマイナーはブロックPにマイニングします。

この攻撃では、
デリックはネットワークの待ち時間とトポロジーの両方を活用します。

デリックは接続されており、
レイテンシーが少なく、
彼の秘密ブロックPを、
彼がただ1つのノードの制御しか持たない場合、
より速く伝播することができます。

彼はまた、
ネットワークトポロジーの独自の所有権も持っています。

なぜなら、彼はネットワークの周りに多くのノードを所有しており、
ネットワークマイニング力の大部分を占めているからです。

したがって、終わりのメモとして、
私たちがこのモジュールで提示したものの外に、
潜在的なネットワークレイテンシーや、
トポロジーなどを考慮した日食攻撃や頑強なマイニングなど、
より多くの攻撃と防御があることを知っています。

 

あとがき

ということで、
いかがでしたでしょうか?

利己的なマイナーから、
正当なマイナーを守る方法は、
まだ見つかってないってことですかね。

色々な防衛手段が考えられてるようですが、
まだ実現までには至ってないようです。

 

今はとにかく、
ハッシュパワーの51%以上を、
誰にも所有されないことを願うばかりです。

 

ってことで、
今回はこの辺で失礼します。

このブログを書く僕の目的は、
「ファンを作ること・仲間を増やすこと」です。

趣味が合う、気が合う、考え方が合う。
なんかええなーと思ったら、気軽にメッセージください。喜びます。

終わり。

 

次の記事
Week5まとめ。カリフォルニア大学バークレー校 ビットコインと仮想通貨の無料講義超訳|Week5-6

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

ABOUTこの記事をかいた人

物語の引き金を引く男 / 「てめえの人生に火をつける」 / プロ火付け役 / 腐れニートからの再始動 / 見知らぬ人にMacBook Proを買った人 / 32日で100記事達成 / ただの足跡を伝説に変えていく男 / Youtubeで #クレメアラジオ 不定期配信 / サロン「裏世界」オーナー 参加希望者はDMまで