北京大学のコース学習ノート「ブロックチェーン技術と応用」シリーズのシャオ・ジェン教師 [17] イーサリアム-GHOSTプロトコル

目次

1. イーサリアムのブロック生成時間と考えられる問題

        1. イーサリアムのブロック時間

        2. イーサリアムシステムとビットコインシステムの平均ブロック時間の比較

        3. 引き起こされる問題

2. ゴースト契約

        1. GHOSTプロトコルの核となる考え方

        2. GHOSTプロトコルの欠陥

        3. GHOSTプロトコルの改善

        4. 改良されたGHOSTプロトコルでも解決できない問題

3. イーサリアムでの報酬

4. 思考

5. イーサリアムの実際の状況

1. イーサリアムのブロック生成時間と考えられる問題

1. イーサリアムのブロック時間

        イーサリアムはブロック生成時間を 10 秒以上に短縮しシステムのスループットを向上させ反応時間を短縮しました。ビットコインシステムのブロック生成時間が10分であるのに比べ、イーサリアムのブロック生成速度は40倍に相当し、ブロック生成時間が大幅に短縮されるとともに、新たな問題も生じていますビットコインとイーサリアムはどちらもアプリケーション層で動作するコンセンサスプロトコルであり、最下層はP2Pオーバーレイネットワークであり、オーバーレイネットワーク自体の送信時間は比較的長い(トポロジープロトコルはフラッディング時の実際のトポロジーを考慮していない)。これは問題を引き起こします。ブロックが解放されると、そのブロックがネットワーク上の他のノードにアップロードされるまでに 10 秒以上かかる場合があるため、2 つのノード (またはそれ以上) が簿記権を取得する可能性が高くなります。同時に、一時的なフォークが発生します

2. イーサリアムシステムとビットコインシステムの平均ブロック時間の比較

ビットコイン システム        の場合、平均ブロック生成時間は 600 秒であり、新たにリリースされたブロックがネットワーク上の他のノードに拡散するには十分な時間ですが、マイニングは確率的なプロセスであるため、簿記権を取得するマイナーはまだ 2 人います。ブロックを公開すると、一時的なフォークが発生する可能性があります。イーサリアムでは、この種の一時的なフォークが標準になり、フォークの数はさらに多くなります(ブロック生成時間が10秒を超える場合、他のノードが公開されたブロックを受信して​​掘り下げる時間がなかった可能性が非常に高くなります)元のブロックチェーンに沿って、彼は解放されたブロックを受け取るまでにすでにブロックを掘っている可能性があります)、これはコンセンサスプロトコルにとっての課題です。

写真1-1

3. 引き起こされる問題

        図 1-1 に示すように、ビットコイン システムでは、最も長い正当なチェーン上のブロックのみに実際に役立つブロック報酬が含まれており、他のフォークされたチェーン上のブロック報酬は実際には無効です。例えば、図のブロックチェーンは3つの分岐に分かれており、ほぼ同時に簿記権を取得し、最後のブロックが勝ち、最も長い法的チェーンとなります。それより下のブロックは孤立ブロックまたは古いブロックと呼ばれますこのタイプのブロックを掘るマイナーはその中に鋳造トランザクションを持っており、これにより一定量のビットコインを取得できますが、最長の法的チェーン上にないため、これは実際には役に立ちません。なので、得られた出力のブロック報酬は最終的に無効になりますビットコインの場合、そのような一時的なフォークはそれほど多くないため、この規制は許容されます。

        イーサリアムの場合、フォークされたブロックに対するブロック報酬も無効になる場合、マイナーによって掘られたブロックは、特に個人のマイナーにとってはタダで掘られる可能性が高いことを意味します常識によれば、マイナーの収入は計算能力に比例するはずであり、マイニング プールの収入もマイニング プールの総計算能力に比例するはずです。ただし、大規模なマイニング プールではマイニングの集中化 (マイニングの集中化) が行われます。つまり、大規模なマイニング プールが位置する分岐点が最長の法的チェーンになる可能性が高く、他のマイナーが最長の法的チェーンに沿って掘削を続けることになります。 (他のチェーンで掘ると、無駄に掘られる可能性が非常に高いため)。これは、大規模なマイニング プールにとって悪循環につながります。マイニング プールが大きければ大きいほど、収入は増加し、集中化バイアスとも呼ばれるマイニングの集中化、つまり集中化によってもたらされる不釣り合いな利点がさらに深刻になります。イーサリアムがビットコインのコンセンサスメカニズムに従う場合、特定の問題が発生するでしょう

2. ゴースト契約

イーサリアムでは、ビットコインのコンセンサスメカニズムに起因する問題を        解決するために、イーサリアムが発明したものではなく、イーサリアムがプロトコルに一部変更を加えただけであるGHOSTプロトコルに基づくコンセンサスメカニズムが採用されています。

1. GHOSTプロトコルの核となる考え方

        鉱山を掘ったマイナーはブロックを公開します。最終的にブロックが無効化された場合でも、彼らにはいくつかの報酬が与えられます。このとき、彼らはいくつかのブロック報酬も得ることができます。Stale Block)はアンクルブロックと呼ばれます最長の合法的チェーンの現在のブロックと比較すると、それは叔父のブロックであり、図 2-1 に示すように、最長の合法的チェーンの次のブロックは解放されるときに叔父のブロックを含むことができます。

図 2-1

         この協定の中心的な考え方は、鉱山を掘ったものの、最長の法的連鎖には至らなかった鉱山労働者に安心感を与えることです。マイニングされたブロックは最長の法的チェーン上のブロックにはなりませんが、それでもブロック報酬のほとんどを受け取ることができます。これは、システム内でフォークが発生した後のタイムリーなマージを促進するのに役立ちます。これは、最も長い正当なチェーン上のブロックから他の 2 つのフォークされたチェーンをリクルートするのと同じです。これは GHOST プロトコルのオリジナル バージョンです。

2. GHOSTプロトコルの欠陥

(1) アンクルブロックの数は2つまでです

        アンクル ブロックには 2 つしか含めることができません。下の図 2-2 に示すように、3 つ目のアンクル ブロックがある場合、GHOST の設計の目的はアンクル ブロックに少しの利益を与えてそれらをマージすることですが、2 つだけしかリクルートできません。は3番目のおじさんブロックです 3つのおじさんブロックはあり得ません。実際、アンクルブロックを 2 つだけ含めることは理にかなっています。アンクルブロックが受け取るブロック報酬の 8 分の 7 は非常に高く、制限がなければイーサリアムはあまりにも価値がありません。

図 2-2

(2) ブロックの伝播に遅延がある

        ブロック D がブロック A をアンクル ブロックとして使用するための前提条件は、ブロック D がマイニングされた時点で、ブロック A のアンクル ブロックの存在が既知であること、ブロック D が解放されていれば、アンクル ブロックが既知であることです。ブロック、この時点では手遅れでブロックおじさんは何の役にも立ちません。

(3) マイナーの主観的な影響を受ける

        マイナーが利己的な場合、商業目的で、意図的にアンクル ブロックを含めない場合があります。つまり、掘削時にアンクル ブロックを知っているにもかかわらず、それを含めません。この場合、アンクル ブロックの場合、7/8ブロック報酬が得られない 自分にとってはブロック報酬の 1/32 が得られないので、他人にとっては不利益であるように見えますが、商業的競争の観点から見ると、マイナーの損失は大きいです。アンクルブロックを掘った鉱山労働者にとっては、比較的大きいブロックです。

3. GHOSTプロトコルの改善

        改良された GHOST プロトコルを図 2-3 に示します。このルールは、競合のためにマイニング プールにアンクル ブロックが意図的に含まれていないという問題を解決しますたとえば、ブロック D には意図的にブロック A が含まれていませんが、ブロック E にはブロック A が含まれている可能性があります。ブロック A を掘った鉱山労働者が、自分が最長の法的チェーンに属していないことに気づき、ブロック D に沿ってブロック E を掘り出し、その中に自分のブロック A を含めることができるという状況さえあるかもしれません。

図 2-3

        この場合、3番目のおじさんブロックの問題も解決されます改良された GHOST プロトコルの本質は、元のバージョンの GHOST プロトコルのいくつかの問題を改善することであるため、叔父の定義は拡張され、必ずしも現在の叔父ではなく、数世代の叔父になる可能性があります。イーサリアムでは、アンクルブロックは7/8ブロック報酬を獲得できると規定されています。1 世代進めると、おじさんブロックは 6/8 ブロックの報酬を獲得します。類推すると、図 2-4 に示すように、これら 6 つのブロックのみがアンクル ブロックであり、それ以降のブロックはアンクル ブロックではありません。アンクルブロックの定義は、現在のブロックとの共通祖先が7世代以内に存在する必要があり、7世代を超えると認められない、つまり法的な叔父は6世代しか存在しません。

図 2-4

なぜ法的な叔父は現在のブロックから 7 世代以内であり、共通の祖先を持つ必要があると設定するのですか?

(1) アンクルの年功序列を制限しない場合、それを実装するには、フルノードで多くの状態を維持する必要があり(おそらく 100 世代前のアンクル ブロックがどれかを覚えているでしょう)、新しく解放されたブロックにはアンクル領域が含まれます。ブロックの場合、他のノードも検証する必要があります。

(2) デザインは最大 7 世代に分かれており、この 7 世代内ではブロック報酬が徐々に減少するため、フォーク発生後の早期マージが促進され、フォーク時に得られるブロック報酬も減少します。が発生してすぐにマージするのが最も多く、数世代経つとブロック報酬が少なくなり、世代が多すぎるとブロック報酬が得られなくなります。

        おじさんブロックの報酬はおじさん報酬と呼ばれ、現在のブロックにおじさんブロックが含まれている場合、どの世代のおじさんが含まれていてもブロック報酬の1/32が得られます。

4. 改良されたGHOSTプロトコルでも解決できない問題

        このプロトコルは、ビットコインやイーサリアムなどのシステムに現れる一時的なフォークを解決することを主な目的として設計されており、最長法的チェーンの原則を規定する目的は改ざん防止だけでなく、一時的なフォークを解決することでもある。最長の合法的なチェーンは、一時的なフォーク ( State Fork )の後にマージするためのメカニズムを提供します。実行中のブロックチェーン プロトコルに関する意見の相違など、他の理由でフォークが発生した場合、この方法では解決できません。つまり、改良されたGHOST プロトコルでもハード フォークを解決できません

        たとえば、ビットコインのスクリプトを学習するときに、CHECKMULTISIG (マルチ署名の有効性をチェックするために使用) を学びました。このプロセスにはバグがあります。チェックすると、スタックからもう 1 つの要素がポップされます。これが機能しない場合は、 、このバグを相殺するために、最初に役に立たない余分な要素を押し込む必要があります。ここでこのバグを変更しない理由は、変更後のバージョンが異なるためです。ビットコインのシステムは集中型システムとは異なり(集中型システムは新しいバージョンをリリースしやすい)、分散型システムが変更されるとハードフォークが発生します図 2-4 の 2 つのチェーンが現状に対する意見の相違によるものではなく、お互いが相手が不正であり、相手のブロックに不正なトランザクションが含まれていると考えている場合、この方法はマージできません。マイナーにそのようなブロックが含まれている場合、他のマイナーはこのチェーンが違法であると考え、このチェーンが含まれている場合はこのチェーンに沿って掘り続けたり、他のフォークされたチェーンに沿って掘ったりしません。最長ですが、違法な取引が含まれています。

3. イーサリアムでの報酬

        ブロックチェーンとイーサリアムがブロックを公開することで得られる報酬は以下の図 3-1 に示されています. 実際には、報酬は 2 つの部分に分かれています. アンクルブロックは報酬の 7/8 を獲得し、ブロック報酬に限定されます。 , 7/8 ×3ETH。ブロックおじさんにはガス代はかかりませんが、ガス代の割合は非常に少なく、ほとんどがブロック報酬である点はビットコインの状況と似ています。

図 3-1

        イーサリアムにはブロック報酬を定期的に半分にするルールはありません ビットコインの規制は人為的に希少性を作り出すことです イーサリアムでは5エーテルが3エーテルに減ります これはマイニング難易度の調整に関係しています 2017年にはマイニング難易度が爆弾は 300 万ブロック調整され、マイニングの難易度が大幅に低下しました。公平性を維持し、イーサリアムの供給の急激な変化を防ぐために、3 エーテルに下がりました。これは 1 回限りであり、継続的なものではありません。今後も継続的に調整していくという。

        一般に、ビットコインは価値を保存するために使用されるデジタルゴールドとみなされ、イーサリアムは消費、消費、およびスマートコントラクトの実行に使用される石油と比較されます。石油が使い果たされると石油はなくなり、イーサリアムでスマートコントラクトを実行することで消費されたガスはあるアカウントから別のアカウントに転送されるだけであるため、この例えは完全に適切ではありません。このスマートコントラクトのマイナーはこのガスを入手できます。したがって、この例えは完全に適切ではありません。

4. 思考

1. アンクルブロックが含まれている場合、アンクルブロック内のトランザクションは実行されるべきですか? イーサリアムはトランザクション駆動型のステートマシンであり、ビットコインも同様であるため、最長の法的チェーンで新しいブロックが解放されるたびに、現在の状態が次の状態に転送されます。それを実行したいですか? アンクルブロック内のトランザクションはどうですか?

        実行すべきでない場合、最長の法的チェーン上の親ブロックとその叔父ブロックに含まれるトランザクションは競合する可能性があり、異なるトランザクションが含まれる場合、異なるトランザクションは実行されない可能性があります。ビットコイン システムの場合、トランザクションが競合する場合、ビットコインは二重支払い攻撃かどうかを検出するために二重支払い攻撃を実行する必要があります。イーサリアムでは、二重支出攻撃のコストは 2 マイナス 2 ですが、1 つのトランザクションが支出された後、もう 1 つのトランザクションが支出できなくなる可能性があります。そのため、アンクルブロック内のトランザクションの一部が不正なトランザクションとなる可能性があり、アンクルブロック自体は必ずしも違法ではありませんが、親ブロックでトランザクションを実行した後、アンクルブロックでのトランザクションの実行が不正になる可能性があります。

        イーサリアムでは、最も長い法的チェーン上のトランザクションのみが実行され、これらのアンクルブロックのトランザクションは現在のブロックでは実行されません。そして、アンクルブロック取引の合法性は全くチェックせず、アンクルブロックが合法的にリリースされたブロックかどうか、つまりブロックがマイニングの難易度を満たしているかどうか、つまり簿記の権利を取得しているかどうかだけをチェックします。 。

2.おじさんブロックは一般化できるのか?

        アンクルブロックはフォークの後の最初のブロックです。図 4-1 に示すように、フォークの後に文字列が続く場合、これらはアンクル ブロックとみなされません。これらのブロックがアンクル ブロックとみなされると仮定すると、フォーク攻撃のコストが低すぎるという結果が生じます。通常の意味でのフォーク攻撃は、成功したとみなされるためには、フォークされたチェーンの長さを元の最長の正当なチェーンの長さよりも大きくする必要があります。そうしないと、フォーク攻撃に使用されたブロックが無効になり、元のブロックの報酬も無効になります。失われます。フォークチェーン上のブロックがアンクルブロックであるとみなされる場合、フォーク攻撃は失敗し、アンクルブロックとして使用して報酬を得ることができます。したがって、イーサリアムでは、フォーク後の最初のブロックのみがUncle Rewardを獲得でき、残りは獲得できないと規定されています。

写真4-1

5. イーサリアムの実際の状況

        Etherscan.io は、イーサリアムの現在のステータスをリアルタイムで表示できます。右側の曲線は過去 2 週間のトランザクション履歴を示し、図 5-1 に示すように、最新のマイニングされたブロックと最新のトランザクションも下に含まれています。下。

図5-1

        下の図 5-2 は、おじさんブロックのいくつかの状況を示しています。ここの各行は、おじさんブロックに対応しています。最初の列のブロックの高さは、ブロックのシリアル番号、つまりブロック番号であり、異なる世代のおじさんとは異なります表中の「おじさんごほうび」の獲得数に相当します。

図5-2

        下の図 5-3 は 2 つのブロックの具体的な例です。左側のブロックにはおじさんブロックが含まれています。最後から 2 行目のおじさんの報酬は 2.25 で、これは距離 2 のおじさんになるはずです。最後から 2 番目の行にあるこのブロックの報酬は、3ETH ブロック報酬、ガス料金、およびアンクル ブロックを含むブロック報酬の 1/32 の 3 つの部分で構成されます。

おすすめ

転載: blog.csdn.net/YSL_Lsy_/article/details/126443249