カテゴリー
カテゴリーなし

Replicators -  ペタバイトのブロックチェーンのデータ保管に対するSolanaのソリューション

Solanaを世界で最もパフォーマンスの高いブロックチェーンにする7つの主要技術の1つを理解する
Solanaは、世界で最もパフォーマンスの高い、管理者の承認を必要としないブロックチェーンです。Solana Testnetの現在の反復では、200の物理的に異なるノードのネットワークが、GPUで実行している場合、1秒あたり50,000トランザクションを超える持続スループットをサポートします。 これを実現するには、いくつかの最適化と新しいテクノロジーを実装する必要があり、その結果、ネットワーク容量が飛躍的に向上し、ブロックチェーン開発の新しい段階が始まります。
これらがSolanaのネットワークを可能にしている7つのイノベーションです:
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
このブログ投稿では、ペタバイト単位のブロックチェーンデータ保管用のSolanaの分散型元帳保管であるReplicatorsについて説明します。 2017年にFilecoinによってProof of Replicationが導入されました。2018年に、VDFを使用してSolana用我々のバージョンのPoRep構築し、バッチ検証用に最適化しました。
Solanaネットワークは、フルキャパシティで、1ギガバイト/秒* 365日= 4ペタバイトのデータを毎年生成します。 ネットワーク内のすべてのノードがそのすべてのデータを保存する必要がある場合、その種類のストレージ容量を維持する集中型の少数にネットワークメンバーシップを制限します。 我々のProof of Historyテクノロジーは、Proof of Replicationの検証を迅速に実装し、世界中の数百万のレプリケーターノード全体に急流のように台帳を配布できるようにすることで、この問題を軽減するために活用できます。 Replicatorsはコンセンサス参加者ではなく、ハードウェア要件が非常に低くなっています。
高レベルでは、Solana Replicatorネットワークは次のように機能します。Replicatorは、データを保存するために利用可能なXバイトのスペースがあることをネットワークに通知する必要があります。 ある頻度では、ネットワークは台帳履歴を断片に分割して、Replicator IDの数と利用可能なReplicatorのストレージの合計に基づいて、レプリケーションレート(現在は100倍前後のターゲットレートを期待しています)とフォールトトレランス(消去コーディングで達成)をターゲットにします。データの割り当てが行われると、各Replicatorはコンセンサスバリデーターからそれぞれのデータをダウンロードします。 ある頻度で、Replicatorはデータを保存していることを証明することが求められますが、その時点でproof of replication(PoRep)を完了する必要があります。 Replicatorは、その努力に対して約3%のインフレ率を受け取ります。
Proof of Replicationをさらに詳しく
Proof of Replicationの基本的な考え方は、CBC暗号化を使用して公開対称キーでデータセットを暗号化し、暗号化されたデータセットをハッシュすることです。 この方法の詳細については、FilecoinのProof of Replicationテクニカルレポートをご覧ください。 残念ながら、このアプローチの問題は、攻撃に対して脆弱であることです。
たとえば、不正なストレージノードは暗号化をストリーミングし、ハッシュされたときに削除できます。 単純な解決策は、暗号化の逆に、またはおそらくランダムな順序でハッシュを強制的に実行することです。 これにより、証明の生成中にすべてのデータが存在することが保証されます。また、すべてのIDのすべての証明を検証するために、バリデーターに暗号化されたデータ全体が存在する必要があります。 検証に必要なスペースは(CBCキーの数)(データサイズ)になります。 暗号化の速度よりも速いペースで暗号化されたブロックをランダムにサンプリングすることでこのアプローチを改善し、それらのサンプルのハッシュをPoH台帳に記録します。 したがって、ブロックはすべてのPoRepでまったく同じ順序のままであり、検証によりデータをストリーミングし、1つのバッチですべての証明を検証できます。 このようにして、それぞれが独自のCUDAコアにある複数の証明を同時に検証できます。 現在の世代のグラフィックカードでは、SolanaネットワークはGPUカードごとに最大1500個のレプリケーションIDまたは対称キーをサポートできます。 検証に必要な合計スペースは(2 CBCブロック)(CBCキーの数)であり、コア数は(CBCキーの数)と等しくなります。 CBCブロックのサイズは1MBと予想されます。
次に、バリデーターとReplicatorの間でゲームを構築し、Replicatorが証明を生成し、バリデーターが実際にPoRepを検証していることを確認する必要があります。
台帳のPoRepの作成を開始するために、Replicatorクライアントは次のことを行います。
1.クライアントは定期的にPoHハッシュに署名します
2.署名は、台帳の特定のスライスを選択するランダム性のソースとして使用されます
3.署名を使用して対称CBCキーを作成し、クライアントは台帳のスライスをキーでエンコードします。
各クライアントは同じPoHハッシュを使用しているため、署名はすべてのクライアント間でランダムに配布されます。 その後、クライアントは暗号化されたサンプルを継続的にサンプリングします:
1.クライアントは定期的にPoHハッシュに署名します
2.署名は、スライスの1MBごとに1バイトをサンプリングするランダム性のソースとして使用されます。
3.サンプルはSHA256でハッシュされます
すべてのクライアントは、署名と同じPoHハッシュ値の使用を強制されます。 署名はPoHに関連付けられているため、結果として発生するサンプルのハッシュは、その時間と特定の複製に関して固有です。
バリデーターは、クライアントの証明を順番に確認します。

  1. バリデーターは、GPUコアの数に基づいて、検証できるPoRepの数を宣言します
    2.定期的にバリデーターがPoHハッシュに署名します
    3.署名を使用して、検証する台帳のスライスを選択し、マスクを使用してバリデーターの容量まで検証するサンプルを選択します
    4.バリデーターは、検証に失敗した証明をアップロードします
    クライアントは、怠惰なバリデーターを探して、検証に失敗したバリデーターに挑戦できます。 グラインド攻撃を防ぐために、クライアントは同じキーペアIDを継続的に使用する必要があります。 スパムを防ぐために、プロトコル内のすべてのメッセージには送信料がかかります。 Replicatorは、正常に送信されたプルーフの数に基づいて報酬を獲得します。 バリデーターは証拠を検証するためにステーク加重報酬を獲得し、fishermenは偽の証拠の証拠を公開するときにバリデーターが切り取ったコインを取ることで報酬を獲得します。
    SolanaのReplicatorの活用と、Proof of History、Sealevel、Gulf Streamなどの革新が組み合わさって、世界で最もパフォーマンスの高いブロックチェーンを作成します。 Solanaのtestnetは本日公開されます。 それはhttps://explorer.blog.solana.comで見ることができます。 コストの観点から、ほんの少数のノードのみを実行しています。 ただし、ベンチマークのために、AWS、GCE、Azureの23のデータセンターにある(共有ハードウェアではなく)200を超える物理的に異なるノードに多くのインスタンスでスピンアップしました。
    ランタイムは現在機能しており、開発者は今すぐtestnowにコードを展開できます。 開発者は現在C言語でスマートコントラクトを構築でき、私たちはRustツールチェーンに積極的に取り組んでいます。 RustはSolanaスマートコントラクト開発の主要言語になります。 Rustツールチェーンは、Solana Javascript SDKの一部として公開されており、Software Development Kitをさらに反復適応しています。
    Solanaはまもなく、パブリックベータインセンティブバリデーターを起動して、Cosmosのゲームオブステークスに似たTour de SOLを介してノードを実行し、トークンを稼ぎながらSolanaネットワークの限界を試すよう大衆に働きかけます。
カテゴリー
カテゴリーなし

Cloudbreak — 水平スケール化されたステートアーキテクチャー

Solanaは、世界で最もパフォーマンスの高い、管理者の承認を必要としないブロックチェーンです。Solana Testnetの現在の反復では、200の物理的に異なるノードのネットワークが、GPUで実行している場合、1秒あたり50,000トランザクションを超える持続スループットをサポートします。 これを実現するには、いくつかの最適化と新しいテクノロジーを実装する必要があり、その結果、ネットワーク容量が飛躍的に向上し、ブロックチェーン開発の新しい段階が始まります。
これらがSolanaのネットワークを可能にしている7つのイノベーションです:
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
このブログ投稿では、Solanaの水平スケール化された状態アーキテクチャであるCloudbreakについて説明します。
概要: RAM、SSDsとスレッド
シャーディングなしでブロックチェーンをスケール化する場合、計算のみをスケーリングするだけでは十分ではありません。 アカウントの追跡に使用されるメモリは、すぐにサイズとアクセス速度の両方のボトルネックになります。 たとえば、最近のチェーンの多くが使用しているローカルデータベースエンジンであるLevelDBは、1台のマシンで約5,000 TPS以上をサポートできないことが一般的に知られています。 これは、仮想マシンがデータベース抽象化を介してアカウント状態への同時読み取りおよび書き込みアクセスを利用できないためです。
素朴な解決策は、RAMのグローバル状態を維持することです。 ただし、消費者グレードのマシンにグローバルステートを保存するのに十分なRAMがあると期待するのは合理的ではありません。 次のオプションはSSDの使用です。 SSDはバイトあたりのコストを30倍以上削減しますが、RAMよりも1000倍遅いです。 以下は、市場で最速のSSDの1つである最新のサムソンSSDのデータシートです。
サムソンSSDデータシート
シングル支出トランザクションは、2つのアカウントを読み取り、一つに書き込む必要があります。アカウントキーは暗号化された公開キーであり、完全にランダムであり、ローカルに実際のデータは存在しません。 ユーザーのウォレットには多くのアカウントアドレスがあり、各アドレスのビットは他のアドレスとはまったく関係ありません。 アカウント間に局所性がないため、それらを互いに近くにあるようにメモリに配置することは不可能です。
1秒あたり最大15,000の一意の読み取りで、単一のSSDを使用するアカウントデータベースの単純なシングルスレッド実装は、1秒あたり最大7,500トランザクションをサポートします。 最新のSSDは32の同時スレッドをサポートするため、1秒あたり370,000の読み取り、または1秒あたり約185,000のトランザクションをサポートできます。
Cloudbreak
Solanaの設計原則は、ハードウェアの邪魔にならないソフトウェアを設計して、100%の使用率を実現することです。
32個のスレッド間で同時読み取りおよび書き込みが可能になるようにアカウントのデータベースを編成することは困難です。 LevelDBのような普通のオープンソースデータベースは、ブロックチェーン設定におけるこの特定の課題に対して最適化されないため、ボトルネックを引き起こします。 Solanaは、これらの問題を解決するために従来のデータベースを使用しません。 代わりに、オペレーティングシステムで使用されるいくつかのメカニズムを使用します。
まず、メモリマップファイルを活用します。 メモリマップファイルは、バイトがプロセスの仮想アドレス空間にマップされるファイルです。 ファイルがマップされると、他のメモリと同じように動作します。 カーネルはRAMにキャッシュされたメモリの一部を保持することも、まったく保持しないこともありますが、物理メモリの量はRAMではなくディスクのサイズによって制限されます。 読み取りと書き込みは、ディスクのパフォーマンスによって明らかに制限されます。
2番目に重要な設計上の考慮事項は、順次操作がランダム操作よりもはるかに高速であることです。 これはSSDだけでなく、仮想メモリスタック全体にも当てはまります。 CPUは、連続してアクセスされるメモリの先取りに優れており、オペレーティングシステムは連続ページ障害の処理に優れています。 この動作を利用するために、おおよそ次のようにアカウントのデータ構造を分割します:
1.アカウントとフォークのインデックスはRAMに保存されます。
2.アカウントは、最大4MBまではメモリマップファイルに保存されます。
3.各メモリマップには、提案された単一のフォークからのアカウントのみが保存されます。
4.マップは、利用可能な限り多くのSSDにランダムに分散されます。
5.コピーオンライト言語論が使用されます。
6.同じフォークのランダムメモリマップに書き込みが追加されます。
7.各書き込みが完了すると、インデックスが更新されます。
アカウントの更新はコピーオンライトであり、ランダムなSSDに追加されるため、Solanaは、並行トランザクションのために、多数のSSDで順次書き込みと書き込みの水平スケーリングの利点を受け取ります。 読み取りは依然としてランダムアクセスですが、特定のフォーク状態の更新は多くのSSDに分散されるため、読み取りも最終的に水平方向にスケール化されます。
Cloudbreakは、ガベージコレクションの形式も実行します。 ロールバックを超えてフォークがファイナライズされ、アカウントが更新されると、古い無効なアカウントがガベージコレクションされ、メモリが解放されます。
このアーキテクチャには、少なくとも1つの大きな利点があります:特定のフォークの状態更新のマークルルートの計算は、SSDで水平方向にスケーリングされる順次読み取りで実行できます。 このアプローチの欠点は、データの一般性が失われることです。 これはカスタムレイアウトを備えたカスタムデータ構造であるため、データのクエリと操作に汎用のデータベース抽象化を使用することはできません。 すべてをゼロから構築する必要がありました。 幸いなことに、それは今完成しました。
Cloudbreakのベンチマーク
アカウントデータベースはRAMにありますが、使用可能なコアの数に応じてスケーリングしながら、RAMアクセス時間に一致するスループットが見られます。 アカウントが1,000万個になると、データベースはRAMに収まりません。 ただし、単一のSSDで1秒あたりの読み取りまたは書き込みで1m近くのパフォーマンスが見られます。
Solanaのインセンティブ付きtestnetイベントTour de SOLの詳細をご覧ください。
SolanaのCloudbreakの活用と、Proof of History、Sealevel、Tower BFTなどの革新が組み合わさって、世界初のWebスケールブロックチェーンが作成されます。 Solanaのtestnetは本日公開されます。 それはhttps://testnet.blog.solana.comで見ることができます。 コストの観点から、ほんの少数のノードのみを実行しています。 ただし、ベンチマークのために、AWS、GCE、Azureの23のデータセンターにある(共有ハードウェアではなく)200を超える物理的に異なるノードに多くのインスタンスでスピンアップしました。
ランタイムは現在機能しており、開発者は今すぐtestnowにコードを展開できます。 開発者は現在C言語でスマートコントラクトを構築でき、私たちはRustツールチェーンに積極的に取り組んでいます。 RustはSolanaスマートコントラクト開発の主要言語になります。 Rustツールチェーンは、Solana Javascript SDKの一部として公開されており、Software Development Kitをさらに反復適応しています。
Solanaはまもなく、パブリックベータインセンティブバリデーターを起動して、Cosmosのゲームオブステークスに似たTour de SOLを介してノードを実行し、トークンを稼ぎながらSolanaネットワークの限界を試すよう大衆に働きかけます。

カテゴリー
カテゴリーなし

Sealevel  –  数千のスマートコントラクトの並行実行

Solanaは、世界で最もパフォーマンスの高い、管理者の承認を必要としないブロックチェーンです。Solana Testnetの現在の反復では、200の物理的に異なるノードのネットワークが、GPUで実行している場合、1秒あたり50,000トランザクションを超える持続スループットをサポートします。 これを実現するには、いくつかの最適化と新しいテクノロジーを実装する必要があり、その結果、ネットワーク容量が飛躍的に向上し、ブロックチェーン開発の新しい段階が始まります。
これらがSolanaのネットワークを可能にしている7つのイノベーションです:
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
このブログ投稿では、Solanaの並列スマートコントラクトランタイムであるSealevelについて説明します。 開始する前に、EVMとEOSのWASMベースのランタイムはすべてシングルスレッドであるということを考慮する必要があります。 つまり、一度に1つのコントラクトがブロックチェーンの状態を変更します。 Solanaで構築したのは、バリデーターで使用可能なコアを使用して、数万のコントラクトを並行して処理できるランタイムです。
Solanaがトランザクションを並行して処理できる理由は、Solanaトランザクションが、トランザクションの実行中に読み取りまたは書き込みを行うすべての状態を記述するためです。 これにより、重複のないトランザクションを同時に実行できるだけでなく、同じ状態を読み取っているだけのトランザクションも同時に実行できます。
プログラムとアカウント
アカウントデータベースであるCloudbreakは、公開キーとアカウントのマッピングです。 アカウントは残高とデータを保持します。データはバイトのベクトルです。 アカウントには「所有者」フィールドがあります。 所有者は、アカウントの状態遷移を管理するプログラムの公開キーです。 プログラムはコードであり、状態はありません。 状態遷移のために割り当てられたアカウントのデータベクトルに依存します。
1.プログラムは、所有するアカウントのデータのみを変更できます。
2.プログラムは、所有するアカウントのみを借方記入できます。
3.どのプログラムでも、任意のアカウントに入金できます。
4.どのプログラムでも、任意のアカウントを読み取ることができます。
デフォルトでは、すべてのアカウントはシステムプログラムが所有するものとして開始されます。
1.システムプログラムは、アカウントの所有権を割り当てることができる唯一のプログラムです。
2.システムプログラムは、ゼロで初期化されたデータを割り当てることができる唯一のプログラムです。
3.アカウント所有権の割り当ては、アカウントの存続期間中に1回のみ実行できます。
ユーザー定義プログラムは、ローダープログラムによってロードされます。 ローダープログラムは、アカウント内のデータを実行可能としてマークできます。 ユーザーは次のトランザクションを実行して、カスタムプログラムをロードします。
1.新しい公開キーを作成します。
2.コインをキーに転送します。
3.システムプログラムにメモリを割り当てるように指示します。
4.システムプログラムに、アカウントをローダーに割り当てるように指示します。
5.バイトコードを分割してメモリにアップロードします。
6.ローダープログラムに、メモリを実行可能としてマークするように指示します。
この時点で、ローダーはバイトコードを検証し、バイトコードがロードされるアカウントを実行可能プログラムとして使用できます。 新しいアカウントは、ユーザー定義プログラムが所有しているとマークすることもできます。
ここで重要な洞察は、プログラムはコードであり、キーと値のストア内には、プログラムとそのプログラムのみが書き込みアクセスできるキーのサブセットが存在するということです。
トランザクション
トランザクションは、命令ベクトルを指定します。 各命令には、プログラム、プログラム命令、およびトランザクションが読み書きするアカウントのリストが含まれています。 このインターフェイスは、デバイスへの低レベルのオペレーティングシステムインターフェイスに触発されています。
size_t
readv(int d, const struct iovec iov, int iovcnt);
struct iovec {
char iov_base; / Base address. /
size_t iov_len; / Length. /
};
readvやwritevなどのインターフェースは、ユーザーが読み書きしたいすべてのメモリを事前にカーネルに伝えます。 これにより、OSがプリフェッチし、デバイスを準備し、デバイスで許可されている場合は同時に操作を実行できます。
Solanaでは、各命令はVMに事前に読み書きするアカウントを指示します。 これが、VMに対する最適化のルートです。
1.数百万の保留中のトランザクションをソートします。
2.すべての重複しないトランザクションを並行してスケジュールします。
さらに、CPUおよびGPUハードウェアの設計方法を活用できるということです。
Solana、スケール化のためのブロックチェーン
SIMD命令を使用すると、単一のコードで複数のデータストリームを実行できます。 これは、SealevelがSolana設計に固有の追加の最適化を実行できることを意味します:
1.すべての命令をプログラムIDでソートします。
2.すべてのアカウントで同じプログラムを同時に実行します。
なぜこれが非常に強力な最適化であるかを理解するには、CUDA開発者ガイドをご覧ください。
「CUDAアーキテクチャは、スケーラブルなマルチスレッドストリーミングマルチプロセッサ(SM)の配列を中心に構築されています。 ホストCPU上のCUDAプログラムがカーネルグリッドを呼び出すと、グリッドのブロックが列挙され、利用可能な実行容量を持つマルチプロセッサに配布されます。」
最新のNvidia GPUには4000個のCUDAコアがありますが、約50個のマルチプロセッサがあります。 マルチプロセッサは一度に1つのプログラム命令のみを実行できますが、80の異なる入力で並列にその命令を実行できます。 したがって、Sealevelによって読み込まれた着信トランザクションがすべてCryptoKitties :: BreedCatsなどの同じプログラム命令を呼び出す場合、Solanaは利用可能なすべてのCUDAコアですべてのトランザクションを同時に実行できます。
パフォーマンスに無料のランチがないため、SIMD最適化を実行可能にするには、実行される命令に少数のブランチを含める必要があり、すべて同じブランチを使用する必要があります。 マルチプロセッサは、バッチで実行される最も遅いパスに拘束されます。 このことを考慮しても、Sealevelを介した並列処理は、シングルスレッドランタイムと比較してブロックチェーンネットワークが機能する方法の基礎的な開発を示し、非常に高いスループットと使いやすさを実現します。
Solana、スケール化のためのブロックチェーン
SolanaのSealevelの実装と、Proof of History、Proof of Replication、Gulf Streamなどのイノベーションが組み合わさって、世界で最もパフォーマンスの高いブロックチェーンを作成します。 Solanaのtestnetは本日公開されます。 https://testnet.https://blog.solana.com/で見ることができます。 コストの観点から、ほんの少数のノードのみを実行しています。 ただし、ベンチマークのために、AWS、GCE、Azureの23のデータセンターにある(共有ハードウェアではなく)200を超える物理的に異なるノードに多くのインスタンスでスピンアップしました。
ランタイムは現在機能しており、開発者は今すぐtestnowにコードを展開できます。 開発者は現在C言語でスマートコントラクトを構築でき、私たちはRustツールチェーンに積極的に取り組んでいます。 RustはSolanaスマートコントラクト開発の主要言語になります。 Rustツールチェーンは、Solana Javascript SDKの一部として公開されており、Software Development Kitをさらに反復適応しています。
Solanaはまもなく、パブリックベータインセンティブバリデーターを起動して、Cosmosのゲームオブステークスに似たTour de SOLを介してノードを実行し、トークンを稼ぎながらSolanaネットワークの限界を試すよう大衆に働きかけます。

カテゴリー
カテゴリーなし

:SolanaのMempoolなしのトランザクションフォワーディングプロトコル

Solanaの50,000 TPS ブロックチェーンネットワークを可能にする7つの主要技術の1つを理解する
Solanaは、世界で最もパフォーマンスの高い、管理者の承認を必要としないブロックチェーンです。Solana Testnetの現在の反復では、200の物理的に異なるノードのネットワークが、GPUで実行している場合、1秒あたり50,000トランザクションを超える持続スループットをサポートします。
これらがSolanaのネットワークを可能にしている7つのイノベーションです:
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
このブログ投稿では、パフォーマンスの高い敵対ネットワーク向けのSolanaのmempool管理ソリューションであるガルフストリームについて説明します。 今後のブログ投稿では、これらの主要な革新の7つすべてを紹介します。
Mempoolの説明
mempoolは、送信済みでネットワークによってまだ処理されていないトランザクションのセットです。 現在、 BitcoinとEthereumのMempoolがライブで表示されています。
バイト単位で測定した30日間のBitcoin mempoolバイト単位で測定した30日間のBitcoin mempool
トランザクションで測定される30日間のEthereum mempoolトランザクションで測定される30日間のEthereum mempool
BitcoinとEthereumの場合、未確認のトランザクションの数は通常、上記のように20K〜100Kのレベルです。mempoolのサイズ(ほとんどの場合、未確認のトランザクションの数として測定されます)は、ブロックスペースの需要と供給に依存します。 ブロックチェーン時代の初期の頃でさえ、mempoolが上昇するとネットワーク全体に重大なボトルネック効果が生じます。
だから、Solanaはどのように良くなりますか? ネットワークスループットを増加させることなく、Solanaバリデーターは100,000のmempoolサイズを管理できます。 つまり、50,000 TPSのネットワークスループットでは、100,000トランザクションmempoolが数秒で実行されます。 それが、Solanaを世界で最もパフォーマンスの高い許可のないブロックチェーンにしている理由です。
すごいですよね? しかし、この単純な分析では多くの重要な要素を無視しています…
EthereumおよびBitcoinのMempoolは、ゴシッププロトコルを使用してピアツーピア方式でランダムノード間で伝播されます。 ネットワーク内のノードは、ローカルmempoolを表すブルームフィルターを定期的に構築し、そのフィルターに一致しないトランザクション(最低料金などの他のいくつかのトランザクションとともに)をネットワーク上の他のノードに要求します。 単一のトランザクションをネットワークの残りの部分に伝播するには、少なくともlog(N)ステップかかり、帯域幅、メモリ、およびフィルタリングに必要な計算リソースを消費します。
ベンチマーククライアントが1秒あたり100,000トランザクションを生成し始めると、ゴシッププロトコルはすぐに能力の限界に達します。 すべてのトランザクションをメモリに保持しながら、フィルターを計算し、マシン間でフィルターを適用するコストは非常に高くなります。 リーダー(ブロックプロデューサー)も同じトランザクションをブロック内で再送信する必要があります。つまり、すべてのトランザクションがネットワークを介して少なくとも2回伝播されます。 それは効率的でも機能的でもありません。
Gulf Streamの紹介
Solanaネットワーク上のこの問題の解決策は、トランザクションのキャッシュと転送をネットワークの限界まで追い込むことです。 ガルフストリームと呼びます。 すべてのバリデーターが今後のリーダーの順序を知っているため、クライアントとバリデーターはトランザクションを事前に予想されるリーダーに転送します。 これにより、バリデーターは事前にトランザクションを実行し、確認時間を短縮し、リーダーを迅速に切り替え、未確認のトランザクションプールからのバリデーターに対するメモリプレッシャーを軽減できます。 この解決策は、非決定論的なリーダーを持つネットワークでは不可能です。
それでは、どのように機能しますか? ウォレットなどのクライアントは、特定のブロックハッシュを参照するトランザクションに署名します。 クライアントは、ネットワークによって完全に確認されたかなり最近のブロックハッシュを選択します。 ブロックは約800ミリ秒ごとに提案され、ブロックを追加するたびに展開するにはタイムアウトが指数関数的に増加する必要があります。 デフォルトのタイムアウト曲線を使用すると、完全に確認されたブロックハッシュは、最悪の場合、32ブロック古くなっています。 トランザクションは、参照されるブロックの産物でのみ有効であり、Xブロックでのみ有効です。 Xはまだ確定していませんが、ブロックハッシュのTTL(有効期間)は約32ブロックであると予想されます。 ブロック時間を800ミリ秒とすると、これは24秒に相当します。
トランザクションがバリデーターに転送されると、バリデーターは次のリーダーのいずれかに転送します。 クライアントは、バリデーターからのトランザクション確認に署名できます。 クライアントは、ブロックハッシュが有限時間内に期限切れになるか、トランザクションがネットワークによって確認されることを知っています。 これにより、クライアントは、実行または失敗が保証されているトランザクションに署名できます。 ネットワークがロールバックポイントを超えてトランザクション参照のブロックハッシュの有効期限が切れると、クライアントはトランザクションが無効になり、チェーンで実行されないことを保証します。
Off the Chain:アナトリー・ヤコヴェンコ、CEO兼Solanaの共同設立者:「シャーディング」は実際に何を意味するのか…
アナトリーヤコヴェンコは、SolanaのCEO兼共同創立者です。 この会話では、アナトリーとアンソニー・ポンプリアノが議論します…podcasts.apple.com
このアーキテクチャには多くの肯定的な副作用があります。 まず、ロードバリデーターは事前にトランザクションを実行し、失敗したものを消去できます。 第二に、リーダーは、トランザクションを転送したバリデーターのステークの重みに基づいて、トランザクションの処理に優先順位を付けることができます。 これにより、大規模なサービス拒否中にネットワークを適切に低下させることができます。
今では、ブロックチェーンネットワークがそのmempoolが最小であるのと同じくらいしか機能していないことが明らかになりました。 トランザクションスループットが制限されているネットワークは、成長を続けるmempoolに対処するためにまったく新しいスケーリングテクノロジーを改良しようとする高貴な努力を引き受けますが、Solanaは、Proof of History、Gulf Stream、Pipeline VMなどの最適化で初期のブロックチェーンネットワークの問題を解決し、大きなトランザクションスループットを実現します。 これは、最初から世界規模での飛躍的なスピードであり、世界中のビジネス、経済、人々のための高機能な分散型インフラストラクチャを作成するための基本的な開発です。