DAG システムのブロック サイズとブロック生成時間の一般的な分析 II
Soteria
2020-03-07 10:36
本文约1920字,阅读全文需要约8分钟
ネットワークの送信により遅延が発生するため、ネットワークのどの部分でも聞こえる他のマイナーのブロードキャストも異なる可能性があります。ブロックダイアグラム(Blockdag)では、

皆さんこんにちは、前回はブロックサイズとブロックの生成時間と拡張の関係について説明しましたが、特にこれら 2 つの変数がブロックチェーン システムでどのように相互作用し、制限されるかを説明しました。今日は、DAG システムにおけるこれら 2 つの変数間の関係と、Soteria DAG の設計においてこの問題にどのように対処するかについて詳しく説明します。

同時親子関係

前回の記事で述べたように、BlockDAG ブロック図の背景では、勝者総取りの制限がないため、マイナーは並行してマイニングし、マイニングされたブロックをタイムリーにブロードキャストできます。ネットワークの送信により遅延が発生するため、ネットワークのどの部分でも聞こえる他のマイナーのブロードキャストも異なる可能性があります。しかし、それは問題ではありません。受け取ったブロックについては、ブロック グラフに含めるように最善を尽くします。そして、次に掘る新しいブロックは、ブロック グラフ内のすべての未参照ブロック (つまり、リーフ ノード) を参照する必要があります。 Burning Goose さん、下の写真のようないくつかのブロックを受け取ることがありますが、それらの参照は異なり、それらはすべて正直なノードによって掘られた合法的なブロックであることがわかります。何が起きてる?これは、先ほど説明したブロック サイズ、転送時間、ブロック時間が原因で発生します。

上記の状態が、下図のノード B で観測された状態であると仮定します。各受信ブロックの親リンクが異なる理由は、情報がネットワーク上を伝播するのに異なる時間がかかるためです。地理的または論理的なリンクによりネットワークが 3 つの伝播エリアに分割され、緑色のエリアがそれらの間に挟まれているとします。青の領域と青の領域の間には、緑の領域から赤または青の領域への情報の伝達に一定の遅延があり、青と赤の領域の間で送信される情報は緑の領域を通過する必要があります。 , そのため遅延が大きくなります。簡単にするために、このリージョン間のレイテンシはリージョン間のレイテンシの 2 倍であると考えます。ノード A、ノード B、およびノー​​ド C は、それぞれブロック a、ブロック b、およびブロック c を生成し (これらのブロックの親リンクについては当面説明しません)、ブロックを直ちにネットワークの全方向にブロードキャストします。赤色のエリアのノード D と青色のエリアのノード E および F は、異なる時間にこれらのブロックを受信します。ノード D およびノー​​ド E/F に対するノード ABC のネットワーク位置、帯域幅、および遅延はネットワーク上で異なるため、完全なブロック abc を受信するまでの時間も異なります。したがって、ある時点で、ノード D はブロック a とブロック b のみを受信し、ブロック c はまだ途中であり、ノード E/F はブロック b とブロック c のみを受信し、ブロック a はまだ途中です。ノード B は、ブロックを生成したノードに最も近いノードであり、自身が生成したブロック b を除いて、他のすべてのブロックも受信されています。

ノード D、E、および F が次のブロックの掘削を開始すると、「許容」の原則に従って、受信したばかりのブロック上の新しいブロックの親リンクをロックし、すぐにブロードキャストします。つまり、ノード D はブロック a とブロック b にリンクされたブロック d を生成し、ノード B はブロック a、b、c にリンクされたブロック b' を生成し、ノード E とノード F はそれぞれブロック b にリンクされたブロック e とブロック f を生成します。と c が生成されます。これは、まさに先ほど見た BlockDAG の状態です。明らかに、ブロック a、b'、e、および f 間にリンクはあり得ません。つまり、それらはすべて同じ世代であるか、すべて兄弟姉妹です。以前のブロックチェーン構造における「一人っ子」政策と比較して、ブロックダイアグラム環境では「子供が増えれば祝福も増える」状況が生まれます。ブロックサイズやブロック生成速度の調整は行わず、自動的に容量を拡張しました。兄弟の数は、拡張能力を反映しています。とりあえずKとしましょう。 K を科学的に説明するために、次の式を与えます: 任意のノードについて、時刻 t にブロック b を生成するとき、そのブロックへのネットワークの最大伝送遅延は Dmax、つまり任意の 2 つのノード間の時間標準サイズのブロックの送信を完了するために必要な時間、その後は次の間隔で送信されます。

[t-Dmax, t+Dmax]

システム全体で生成されるブロックは、ブロック B の兄弟および姉妹となる必要があります。これは非常に簡単に理解できます。時刻 t では、ネットワーク送信により、[t-Dmax,t] 期間中に生成されたすべてのブロックがこのノードに送信されていないため、これらのブロックは B が生成されるときに考慮されません。親ノードはリンクに使用されます。同様に、期間 [t, t+Dmax] 中にマイニングを開始したノードは、送信遅延によりブロック B を聞いていないため、それらのノードによって生成されたブロックは B を親ノードと見なすことができません。システムのブロック生成速度を r とすると、この期間中に生成されるブロック数の平均の上限は次のようになります。

(t+Dmax) - (t-Dmax)

——————————

r

あれは

2Dmax

———

r

そのため、容量拡張には依然としてネットワークの伝送遅延やブロック生成速度などの制限があったが、今回は従来の制限がなくなる。本当にそのような制限はないのでしょうか?もちろん違います。まず第一に、上記の説明は非常に近似的な結果です。より厳密な結果については、Phamtom の論文の第 4 章を参照してください。さらに重要なのは、厳密な結果であっても、エンジニアリングの実装環境ではより多くの制限があることです。受信したブロックの処理時間、ブロックグラフのリンク時間、ブロックの検証時間。これらの時間は、実際の動作におけるブロック グラフのリンク特性に直接影響します。そのため、実際に操作できる同時拡張パラメータは理論値よりも一桁小さい場合があります。エンジニアリングの観点から、アプリケーションのシナリオに応じて K を反転する方法を採用しました。最初に必要なスループットの範囲を決定し、次にシステム動作環境のネットワーク伝送性能の範囲に応じて Dmax を決定し、次に考慮します。 Dmax に基づいて、いくつかのソフトウェア遅延を追加し、最後にシミュレーション システムで上記のパラメーターを複数回実行して、最適化された係数を取得します。

Soteria
作者文库