ポピュラーサイエンス: ビーコンチェーンの生成過程
編集者注: この記事は以下から引用しましたイーサリアム愛好家 (ID: ethfans)編集者注: この記事は以下から引用しました
イーサリアム愛好家 (ID: ethfans)
イーサリアム愛好家 (ID: ethfans)
、著者:Ben Edgington、翻訳および校正:Min Min & A Jian、Odailyの許可を得て転載。
大規模な分散型マルチクライアントのブロックチェーン起動イベントは一般的ではありません。昨日 (7 月 30 日) は ETH 1.0 の誕生 5 周年でした。このような大規模な誕生日イベントはさらに珍しいことがわかります。
ETH 2.0 の生成メカニズム (ブロックチェーン ブートストラップ プロセスと呼ばれるもの) は少し複雑です。詳しく解説していきます。実際の技術仕様については、「ETH 2.0 仕様ノート」で私のコメントを参照してください。
以下では、「生成」とは、ビーコン チェーンがオンラインになり、認証とブロックの処理を開始する瞬間、つまりエポック 0 のスロット 0 の始まりを指します。
(長い記事を読みたくない場合は、「シーン」セクションに直接ジャンプして読み始めることができます。)
バリデータデポジット
まず背景を少し説明します。 32 ETH のデポジットとその他のデータを ETH 1.0 コントラクトに送信することで、誰でも ETH 2.0 バリデーターになることができます。たとえば、Lanchpad ポータルを通じて Medalla テストネットのバリデーターになることができます。 Medalla テストネットでは、Goerli テストネット ETH を使用していることに注意してください。メインネット ETH をコントラクトに送信しようとしないでください。もちろん、ビーコンチェーンが正式に開始されるときは、本物のメインネットETHを使用します。
マージン契約は有効な入金、つまり 32 ETH 以上の 1 回の入金、合計 32 ETH 以上の複数の入金 (確認される追加データ、例: 暗号署名) にのみ反応します。無効なマージンまたは不十分なマージンは無視されます。
最初のレベルのタイトル
作成前のフェーズでは、ビーコン チェーン ノードのみが ETH 2.0 ネットワークに参加します。作成が完了すると、バリデーターはすぐにコンセンサス メカニズムに参加できます。ビーコン チェーン ノードはシステム状態を維持し、ピアツーピア ネットワーク上で相互に通信します。
したがって、ジェネシスの前には、ETH 1.0をリッスンし、デポジットコントラクト内の有効なデポジットを監視するビーコンチェーンノードがいくつか存在します。実際、ビーコン チェーン ノードは常に ETH 1.0 を監視する必要はありません。ETH 1.0 のブロックにはタイムスタンプが付けられているため、ノードは生成前にいつでも追いつくことができます。
ご存知のとおり、ETH 1.0 チェーンはロールバックすることができ、ブロックチェーンの変更により、すでにチェーン上にあったトランザクションも無効になる可能性があります。 ETHを取引所に送金する場合、トランザクションが確認されるまで30ブロック待つ必要があるのはこのためです。通常、ロールバックは小さく、わずか 1 ブロックまたは 2 ブロックですが、ネットワークが攻撃を受けている場合、ロールバックはさらに大きくなります。 ETH 2.0 のロールバックを回避するために、ETH 1.0 を同期する際には 14*1024 秒 (約 4 時間) の遅延を維持するよう細心の注意を払っています。私はこれをETH 1.0への「フォローディスタンス」と呼んでいます。
最初のレベルのタイトル
いつ?誰が?
創作において最も重要なのは、「いつ」と「誰が」という 2 つの質問です。具体的には、「ジェネシスはいつ発生しますか?」と「ジェネシス検証者は誰になりますか?」これら 2 つの質問によってビーコン チェーンのジェネシス状態が決定され、他の状態はジェネシス状態から派生します。
一般的なプロセスは次のとおりです。
ETH 1.0 への証拠金流入を監視します。
十分なマージンを持って十分な時間待機した後、作成状態が作成されます。
2日後、ジェネシスイベントをトリガーしてETH 2.0が起動されます。
具体的には、ステップ 2 では、(a) 十分なマージンがロックされている、(b) ブロック内のタイムスタンプが古すぎないという 2 つの条件を満たす最初の ETH 1.0 ブロックを見つけます。ジェネシス状態はこのブロックによって決定されます。
「いつ」と「誰が」に影響する 3 つの主なパラメータ設定は次のとおりです。
GENESIS_DELAY は 172800 秒、つまり約 48 時間です。これは、ジェネシス状態の作成とジェネシス イベントのトリガーの間の時間間隔です。クライアント チームは、この時間を利用して、ジェネシス状態をビーコン チェーン ノード ソフトウェアに書き込むことができます。このようにして、バリデーターノードを実行しないビーコンチェーンノードは、ETH 1.0 チェーンを監視し続ける必要がなくなります。ジェネシスストリームやパーティーを企画する時間もあります
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT は、ジェネシス状態を作成する前に ETH 1.0 マージン契約にロックする必要がある有効なデポジットの最小数を指します。 Medalla (およびメインネット) の場合、少なくとも 16384 個のバリデーターが必要です。
Medalla テストネットの立ち上げから学んだ教訓: パーティーを準備する時間はありますが、立ち上げノードが良好な状態であること、更新されたクライアント ソフトウェアに必要な情報がすべて含まれていること、および簡単に実行できることを確認するには 44 時間は少々無理があります。エンドユーザーがラッシュを使用できるようにします。メインネットの GENESIS_DELEY を増やす可能性があります。
最初のレベルのタイトル
シーン
このブロックが作成されるとき、バリデーターの数は 16384 (MIN_GENESIS_ACTIVE_VALIDATOR_COUNT) 未満であってはなりません。
タイムスタンプが早すぎません (MIN_GENESIS_TIME - GENESIS_DELAY より前ではありません)。
上記 2 つの条件が満たされる順序に従って、生成プロセスは次の 2 つの方法で完了できます。
副題
1. まず最低証拠金要件を満たす
この場合、まず条件1が満たされる。最も初期の創世期以前に、十分なマージンが得られました。
ジェネシスイベントをトリガーするために使用したETH 1.0ブロックは、この時点以降にマイニングする必要がありました。このブロックが北京時間 8 月 2 日午後 9 時 00 分 5 秒 (9 時 5 秒後) にマイニングされたとします。
マージン契約が少なくとも 16384 の実効マージン (このブロック内のすべてのマージン取引を含む) を受け取った場合、マージン契約で受け取ったすべてのマージンもジェネシス状態に含まれます。したがって、ETH 2.0 チェーンには 16,384 を超える Genesis バリデーターが存在します。 (Altona テストネットでは、MIN_GENESIS_ACTIVE_VALIDATOR_COUNT を 640 に設定しましたが、最後の Genesis バリデーターは 685 でした。)
画像の説明
要約する
注意すべき点の 1 つは、ETH 1.0 の追跡距離を考慮すると、ジェネシス状態を取得するまでに実際には 4 時間待つ必要があるということです。つまり、現在のシナリオでは、作成ステータスを取得するには、北京時間の 8 月 2 日の午後 5 時まで待たなければなりません。
要約する
最低入金額要件が最初に満たされた場合、生成イベントは最も早い生成時間から数秒後にトリガーされます。ジェネシスイベントの 48 時間前に登録したバリデーターはジェネシス状態に含まれます。
副題
2. 最低証拠金要件が満たされた後
この場合、ジェネシス イベントのトリガーに使用する ETH 1.0 ブロックには 16384 番目の有効なデポジットが含まれている必要があります。このブロックが北京時間 8 月 5 日午後 8 時 34 分 56 秒にマイニングされたとします。
これで、ビーコン チェーンの状態には、このブロック内の 16384 個のバリデーターとその他の有効なデポジットが含まれるようになります。したがって、このブロックに複数のデポジットが含まれる場合、ビーコン チェーン状態に含まれるデポジットは最小要件よりわずかに高くなります。
画像の説明
要約する
要約する
結論は
デポジットの流入が遅い場合、生成イベントは 16384 番目の有効デポジットを含む ETH 1.0 ブロックのマイニングの 48 時間後にトリガーされます。ジェネシス ステートには少なくとも 16834 個のバリデーターが含まれますが、この ETH1.0 ブロックに含まれるマージン トランザクションの数によりわずかに増加する可能性があります (バリデーターの総数は 16834 個を超えます)。
最初のレベルのタイトル
結論は
この記事では、ETH 2.0の作成メカニズムの基本的な内容を紹介しました。


