ご存知のとおり、ブロックチェーンでは、ほとんどの人が利益(マイニング報酬など)に動かされ、誠実に行動した場合にのみ、ブロックチェーン全体が正常に動作します。しかし、正直な行動の利益が不正行為の利益よりも低い場合、リスクを冒す人もいます。リスクを取る人が大多数を占める場合、ブロックチェーン全体にさまざまな問題が発生しますが、最も典型的なのは 51% コンピューティング パワー攻撃です。 少し前に、Ethereum Classic (ETC) ブロックチェーンが 51% の計算能力攻撃を受け、私は深く考えさせられました。 理論的には、51% のコンピューティング パワー攻撃はブロックチェーン ネットワークの設計上の欠陥ではないと思いますが、これらの 51% のコンピューティング パワー攻撃の攻撃者により高い代償を払わせる方法はあるのでしょうか? ブロックチェーン ノード クライアントは、複数のブロックチェーンが同時に存在することを検出した場合、どのブロックチェーンを選択するかを決定する必要があります。このとき、ノードクライアントは各ブロックチェーンのスコア chainScore を個別に計算し、スコアが最も高いブロックチェーンを選択します。 PoW コンセンサス ブロックチェーンでは、ブロックチェーンを選択するためのルールは「最長チェーン ルール」と呼ばれることが多く、ブロックチェーンのスコアである chainScore は、そのブロックチェーンで行われた作業の合計に等しくなります。評価に基づいてブロックチェーンを選択するこの方法の利点は、完全に客観的であることです。 主観的なスコアリングの一例としては、ブロックチェーン ノード クライアントが、そのブロックチェーンで行われた作業の量だけでなく、そのブロックチェーンに切り替えた場合にローカルで管理されているブロックチェーンから削除されるブロックの数も考慮してブロックチェーンにスコアを付ける場合が挙げられます。つまり、ローカルで管理されているブロックチェーンを変更する必要がある可能性のあるブロックチェーンに偏っています。 ローカルで管理されているブロックチェーンから削除されるブロックの数に基づいた主観的なブロックチェーンスコア 主観的なチェーン選択ルールのもう 1 つの例は、通常どおりにチェーンスコアを計算しますが、切り替えによってローカル チェーンから 20 個以下のブロックを削除する必要がある場合にのみ、より高いスコアのチェーンに切り替えることです (このルールは、最大再編成カバー、最大再編成キャップと呼ばれることがよくあります)。 このルールは、「新しいノードの問題」を引き起こすだけでなく (上図を参照)、すべてのノードが同じバージョンのクライアント プログラムを実行している場合でも、ハード フォークを引き起こす可能性があります。 したがって、ブロックチェーンを主観的にスコア付けすることは避けたいと考えています。そうすると、ブロックチェーンの選択ロジックの説明が難しくなり、すべてのクライアントノードが同じルールに従っている場合でもハードフォークにつながる可能性があるためです。 ブロックチェーンの選択ルール Ethereum Classic で使用されるブロックチェーン選択ルールは、最も完了した作業を持つブロックチェーンを選択することです。 Bob という名前の Ethereum Classic クライアントが初めて Ethereum Classic ネットワークに接続するとします。ボブは複数のブロックチェーンの中から選択する必要がありますが、これは問題ではありません。彼がしなければならないことは、各ブロックチェーンでどれだけの作業が行われたかを計算し、最も多くの作業が完了したブロックチェーンを選択することだけです。 Bob のような新しい Ethereum Classic クライアントがいくつあっても、各ブロックチェーンに対してまったく同じスコア chainScore を計算します。 ブロックチェーン システム内に完全なグラフを形成する N 個のノード (各ノードは他のすべてのノードに接続されている) がある場合、ブロックチェーンの選択ルールには次のプロパティが必要です。 すべてのノードは、同じブロックチェーンを最良の選択肢として検討する必要があります。 ブロックチェーンの選択ルールは、どの時点、どの高さ H でも、ブロックチェーン C に対して同じスコア chainScore を提供する必要があります。つまり、スコア chainScore は、評価しているブロックチェーン上のデータにのみ依存することになります。 これらの特性により、ボブと長寿命ノードがどのブロックチェーンに従うかについて合意し、時間の経過とともに徐々に同じブロックチェーンに収束することが保証されます。 上で述べたように、Ethereum Classic で最大の chainScore を持つブロックチェーンは、最も多くの作業を完了したブロックチェーンであることに注意することが重要です。 ブロックチェーンマイニング ソロマイナーの場合、相当量のハッシュパワーを制御しない限り、ブロックをマイニングする可能性は低くなります。 この問題を解決するためにマイニングプールが発明されました。マイニング プールは、「多くの人が手を出せば仕事は楽になる」という考えに基づいています。もともと一人で採掘していた大勢の鉱夫たちが集まり、お互いを暖め合いながら一緒に採掘し、利益を分け合うのです。したがって、一部のマイナーがブロックをマイニングしなかったとしても、彼らは常に自分の仕事に対して安定した収益を得ることができます。 ブロックチェーン ネットワークに複数のマイニング プールがあり、それらが合わさってネットワーク内のハッシュ パワーの大部分を占めているとします。 各ブロックには、coinbase / etherbase と呼ばれる値が含まれており、これはブロックをマイニングしたマイナーを参照するために使用され、マイニング報酬を受け取るべきアドレスを示します。 ほとんどのブロックはマイニング プールによってマイニングされ、各プールは通常、マイニング報酬を受け取るためのアドレスを指定します。 以下は、Ethereum Classic ブロックチェーンで高さ 7283680 から高さ 7283695 まで採掘された 16 個の連続ブロックと、採掘報酬を受け取ったマイナーのアドレスです。 イーサリアムクラシックブロックチェーンの高さ7283680から高さ7283695までのブロックと、マイニング報酬を受け取ったマイナーのアドレス 予想通り、ブロックの大部分は Ethereum Classic ネットワークで稼働しているマイニング プールによってマイニングされ、Ethermine は 5 ブロック、MiningPoolHub は 4 ブロック、NanoPool は 3 ブロックをマイニングしました。 灰色のブロックでは、マイニング報酬が所有者がわからないアドレスに送られますが、そのアドレスもおそらくマイニング プールです。 これは私たちにインスピレーションを与えているようです... マイニングプールを使用して 51% 攻撃を削減しますか?本物! 新しいブロックを継続的にマイニングできるマイニング プールがあると仮定すると、ブロック出力を頻繁に確認できるはずです。攻撃者が 51% のコンピューティング パワー攻撃を実行する場合、通常はオフラインで N ブロックを継続的にマイニングし、現在のコンセンサス チェーンよりも長いブロックチェーンを公開して、現在のコンセンサス チェーンを再編成します。 攻撃者によってマイニングされたブロックは、通常、過去に観測されたマイニング プールのアドレスを使用しません。 マイニングプールに不一致のペナルティを課すと、コンセンサスルールをほぼ同じに保ちながら攻撃コストを大幅に増加させることができ、 51%攻撃から保護されます。 ここでは、まず 51% のコンピューティング パワー攻撃がどのように発生するかを明確にする必要があります。
マイニングプールの一貫性インデックス ブロックチェーンの選択ルールでは、完了した作業量だけでなく、マイニング プールの一貫性も考慮されます。 chainScore の定義を次の式に変更することで、マイニング プールの影響を含めることができます。 チェーンスコア = 親チェーン.スコア + (ブロック.PoW_score * PCI ) ここで、parentChain.score は前のブロックチェーンのスコア、block.PoW_score はブロックチェーンによって行われた作業量、PCI (プールの一貫性インデックス) は 0 から 1 までの値です。 ここでの PCI は、マイニング プールの一貫性を指します。マイニング プールの情報を使用してブロックチェーンの「健全性」を評価する実装を見てみましょう。 最後の 3000 ブロックにわたってスライディング ウィンドウを使用して作業の一貫性を測定する例。 chainScore 関数のコード実装は次のとおりです。 スライディングウィンドウマイニングプールの一貫した増分のリファレンス実装 ネットワーク内に複数のブロックチェーンが共存する場合、コンセンサスチェーンになる可能性が最も高いブロックチェーンは、マイナーが継続的にマイニングを行っているブロックチェーンになると考えています。これは 100% 正しいわけではありませんが、ハッシュ パワーの 51% 以上を制御するマイニング プールによる反乱がない限り、ほとんどの場合に当てはまります。 このアプローチは、マイニングプールからの情報と組み合わせることで、ブロックチェーンの将来がどうなるかを予測し、これまでは不可能だった方法で悪意のある行為者を罰することができます。マイニング プールの不一致に対して非常に高いペナルティを設定すると、次の 2 つのことが起こる可能性があります。
では、この方法は、前述の 51% のコンピューティング パワー攻撃に対してどれほど効果があるのでしょうか? コンピューティングパワーレンタルサービス(NiceHashなど)を使用して攻撃を実行する 他のマイニングプールは彼のブロックチェーン上でマイニングを継続しないため、攻撃者は時間の経過とともにマイニングプールの不一致によってペナルティを受けることになります。 ネットワークのハッシュレートの60%を共同でコントロールする2つのマイニングプールが共同で攻撃を実行した。 この問題を解決するには、マイニングプールのハッシュパワーだけでなく、ブロックチェーン上でマイニングを行うマイニングプールの数も考慮する必要があります。ほぼ同じハッシュパワーを持つマイニングプールが 10 個以上ある場合、この問題ははるかに簡単に解決できます。 両方の組み合わせ たとえば、ネットワーク全体のハッシュパワーの 40% を制御するマイニングプールは、攻撃を実行するためにネットワーク全体のハッシュパワーの 30% を借ります。 時間が経つにつれて、攻撃者はマイニングプールから不一致のペナルティを受けることになります。攻撃者が、ブロックをマイニングするためにハッシュパワーを借りているマイナーのアドレスを元のマイニングプールのアドレスに設定したとしても、マイニングされたブロックの過去のデータを見ることになるので役に立たないことに注意してください。 特定用途向け集積回路(ASIC)を使用した攻撃 これは長期的な 51% 攻撃のように見えます。攻撃者は時間の経過とともにプールの不一致によってペナルティを受けることになりますが、それを継続できれば、私たちが言う「過去のプール」になる可能性があります。この場合、マイニングプールが反乱を起こしたらどうなるかが問題になります。 このアプローチは 51% 攻撃を解決するものではありませんが、攻撃者は長期間 (多くのブロック時間) にわたって罰を受け続けるため、攻撃者にとって攻撃コストが高くなります。 複数のマイニングプールが突然マイニングを停止した場合、監視システムはこれを検出し、コミュニティは、自分自身でマイニングを開始する(ただし、ペナルティメカニズムがあるため注意が必要です)など、対応する時間を持つか、またはこれが発生した場合に後続のブロックが確認されるのを待つだけです。 これらの状況に基づいて、私たちはまず次のような仮定を立てました。
次に、この仮説を検証するためにゲーム理論の手法を使用する必要があります。 PoW 値を調整するのではなく、PoW の一貫性を保つために PCI を追加の値として使用することを検討できることに注意してください。 スライディングウィンドウマイニングプールの一貫性増分テストの結果 一連の連続ブロックにわたるマイニング プールの一貫性というアイデアをテストするために、理想的なブロックチェーンをシミュレートしました。 結果は、スライディングウィンドウマイニングプールの一貫した増分を使用する場合、最長のブロックチェーンメカニズム(現在ほとんどのブロックチェーンで採用されている)と比較して、51%のコンピューティングパワー攻撃のコストがより高価であることを示していますが、テストプロセスの欠陥、コードのエラー、またはシミュレートされた環境が理想的すぎる/単純すぎる/間違っているなどの理由で、このような結論は問題がある可能性があり、ブロックチェーンでの実際の使用にはまだ遠い可能性があることに注意する必要があります。 この実験では、約 5500 個のブロックを作成しました (プロセスは 5500 * 14 秒続きました)。攻撃者はブロックの高さ 4850 でフォークしました。デフォルトでは、ブロック間隔は約 14 秒です。コードには多くの簡略化を施しましたが、現在のブロックチェーンで使用されているロジックに完全には準拠していません(たとえば、ブロック時間の計算方法が異なり、アンクルブロックはありません)。 違いはあるものの、この実験は私たちのアイデアをテストするのに十分だと思います。実験結果は以下の通りです。結果の比率は、ブロック高 4850 で攻撃者によって生成されたメインチェーンとフォークチェーン間のブロックチェーンスコア chainScore の比率を表します。この比率が 1.0 未満の場合、メインチェーンのブロックチェーンスコア chainScore の合計が、攻撃者のフォークチェーンの合計よりも低いことを意味します。 グラフからは、2 つのブロックチェーンが到達した高さも確認できます。 実験結果 図から、従来の最長チェーン方式と比較して、スライディング ウィンドウ マイニング プールの一貫性のある増分方式の方がメイン チェーンを選択するのが簡単であることがわかります。ただし、この方法は多くの点で優れていますが、実際のブロックチェーン環境でのこの方法の有効性はまだテストされていません。 上記の結果表から、すべてのケースで、フォークされたチェーンは最終的により多くのブロックをマイニングしましたが、スライディング ウィンドウ スコアリング方式では、フォークされたチェーンのスコア chainScore がメイン チェーンを超えることはありませんでした (最初はスコアが高くなる可能性があるため、これは完全に正しいわけではありませんが、このテストでは、フォークされたチェーンはメイン チェーンより少なくとも 30 ブロック進んでおり、スコアが高くなりました)。 攻撃者が十分長く存続できれば、その攻撃者は「プール履歴」の一部となり、時間の経過とともに、フォークされたチェーンの chainScore がメインチェーンのそれを超えることになります。 もちろん、今回のコードは私以外の誰にもチェックされていません。コードにバグが見つかった場合は、私に報告してください。 既知の攻撃ベクトル 51%ハッシュ攻撃 それでも、攻撃にかかるコストははるかに高額になる可能性があります。 マイニングプールのなりすまし攻撃 攻撃者はより長いブロックチェーンをマイニングし、他のマイニングプールのマイナーのアドレスをそこに挿入することで、攻撃者がブロックをマイニングするマイニングプールの分布を、攻撃前とほぼ同じ分布になるように調整することができます。 これを防ぐために、鉱夫には何らかの身分証明書が必要です。これは、ブロックヘッダーに minerSig (マイナー署名) と呼ばれる認証情報を追加することで解決できます。 minerSig は、前のブロックの parentHash のハッシュ値と、マイナーの秘密鍵で署名されたブロックの乱数 nonce です。ブロックを有効にするには、この検証を確認する必要があります。 攻撃者がメインネットワークに参加 攻撃者はメインネットワークに参加し、数ブロックをマイニングすることで、後で突然のマイニングの急増として特定されるのを避けることができます。この状況は、マイニングプールが反乱を起こしたと言えるでしょう。 改善: マイニングプールの仮定を排除する プロトコル レベルでマイニング プール メカニズムを実装すると、マイニング プールが存在することが保証されます。しかし、マイニングプールがない場合でも、この状況に応じてプロトコルを最適化することができます。 たとえば、マイナーが集まって一定数のマイニングプールを形成するように促すことができます。具体的な方法は、各マイニングプールのハッシュ計算能力に応じてマイニング報酬を与え、合計 N 個のマイニングプールを集めることです。約 20 個のマイニング プールが必要な場合、ネットワーク全体のハッシュ パワーの 5% を占めるマイニング プールのマイニング報酬は最高 (4 ETC) になります。 マイニング プールのハッシュ パワーがこの値より多い/少ない場合、そのマイニング プールはより低い報酬を受け取り、残りの報酬はハッシュ パワーに基づいて他のマイニング プール間で分配されます。最終的には各ブロックに対して同じ量のマイニング報酬(この場合は 4)を作成するため、金融政策で定義されている流通通貨の合計は変更されません。マイナーが望む通りに集まるように、インセンティブを適切に行う必要があります。 ここで開発者が思い出すべきことは、たとえ 1 人の人物が 5 つのマイニング プールを所有し、それぞれがネットワーク全体のハッシュ パワーの 5% を制御していたとしても、マイニング プールの一貫性が向上し、セキュリティが強化されるため、問題にはならないということです。 現在の Ethereum Classic の場合のように、マイニング プールがすでに存在する場合は、必要に応じて後の段階で実装することもできます。 プールの一貫性の他の定義 プールの一貫性の式は次のように実行できます。
プロトコルレベルのマイニングプールの一貫性の例 各マイニング プールがネットワーク全体のハッシュ パワーの 1% に収束するようにインセンティブが組み込まれたブロックチェーンがあり、合計で約 100 のマイニング プールが存在するとします。 マイニング プールがプール一貫性インデックスに貢献するには、過去 3,000 ブロックにわたってハッシュ パワーの約 1% で一貫してマイニングを行っている必要があります。プールの一貫性インデックスは、この標準に合格したプールの比率になります。 たとえば、最後の 100 ブロックが 50 の異なるマイニング プールによってマイニングされた場合、プールの一貫性インデックスは 0.5 になり、難易度は 0.5 になります。 この場合、攻撃者が攻撃を実行したい場合、メインチェーンと同じプール一貫性インデックスを取得するには、最後の 3000 ブロックの 50% を異なるマイナー アドレスでマイニングする必要があります。さらに、マイニングプールに「スピード違反切符」を発行することもできます。 同じハッシュパワーを持つマイニングプールが 100 個あると仮定すると、統計分析も実行できます。すべてのマイニング プールが「選択される」確率は同じです。つまり、最後の 100 個のブロック状態がランダムに選択されたと仮定して、その可能性を計算し、結果が起こりそうにないイベントにペナルティを課すことができます。 最後に そうは言っても、私は人々がコンセンサス アルゴリズムを変更すべきだと言っているのではありません。しかし、コンセンサス アルゴリズムの改善を進めるには十分な理由があるはずであり、変更を検討する前に代替案を十分に調査する必要があります。 これらは、コンセンサス アルゴリズムの改善に関する私の考えのほんの一部です。私のアイデアにより、ネットワーク上で 51% の計算能力攻撃が発生する可能性を減らすことができます。 いずれにせよ、マイニング プールはブロックチェーン ネットワークの一部となるため、その潜在能力を最大限に活用してブロックチェーンのセキュリティを強化してみてはいかがでしょうか。 このアプローチは依然として最長チェーン メカニズムとして考えることができますが、違いはブロックチェーンの長さを測定する方法が変更されることです。最大ブロックチェーン スコア ルールなど、より一般的な説明を使用することをお勧めします。 この記事がお役に立てれば幸いです。マイニングプールを使用して51%攻撃を削減する試みについて、どう思いますか?大隊長にメッセージを残してください〜 著者 |フィロ — トマズ・カリズ 翻訳者 |グオシ 制作 |ブロックチェーンキャンプ (blockchain_camp) |
<<: MiracleMooreマイニングソフトウェアの使い方
>>: ネットワークエンジニア: アンチASICマイニングは間違っているかもしれない、将来のIPプロトコルのアップグレードは大規模なブロック拡張に有益となるだろう
米国下院は2021年11月5日、インフラ投資・雇用法案を228対206の投票で可決した。バイデン大統...
IPFS フォースゾーンコンパイル IPFS + Filecoinの最新の進捗状況 IPFS につい...
「はい、ビットコインでの支払いを受け付けています。」午後5時頃、遼寧省の赤ワイン販売業者が王旺に関す...
昨日、私はQQグループで、マイニングにAntminer U3を使用していると言ったところ、Li Ku...
英国政府は、記録管理を改善し透明性と正確性を高めるためにブロックチェーン技術の利用を検討している。政...
暗号通貨トレーダーはかつて、MT GOXと呼ばれる大規模な取引所で取引を行っていた。すでに倒産してお...
イベント12月7日、Bitmainは成都で開催された顧客感謝会議で最新のマイニングマシン販売モデルを...
暗号通貨業界のリーダーたちは、業界の不確実性を減らすために規制の明確化を頻繁に求めてきた。しかし、米...
現在、決済分野はイノベーションの段階にあります。しかし、どんなに斬新なアイデアであっても、将来の発展...
「肉切り包丁を置く」と主張し、誰にも馬鹿なことをさせないと主張していたジェームズ王は怒っていた。 ...
原題:「仮想通貨の剣を抜け!各地の規制当局が行動を起こし、バイナンスとトロンの公式アカウントがブロッ...
患者の医療記録がブロックチェーン上に保存される予定であるため、UAEの電子健康記録(EHR)の保管は...
メーデーの祝日は終わったが仕事は止まらない半減期が到来し、新型Z15が発売され、マイニングには明るい...
時価総額が100億ドル未満のアルトコインは、2024年初頭にビットコインが新たな高値を記録して以来、...
クレイジーな解説:市場におけるブロックチェーン技術の実装を完全に理解する前に、ブロックチェーン関連の...