Tower BFT: SolananのPBFTの高パフォーマンス導入

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 — 分散台帳保管
このブログポストでは、一貫性よりも活気を優先するPBFTのSolanaのカスタム実装であるTower BFTについて説明します。 Tower BFTはSolanaのPoHをコンセンサス前の時計として活用し、メッセージングのオーバーヘッドと待ち時間を削減します。
「ライブ性を提供するために、レプリカは要求を実行できない場合、新しいビューに移動する必要があります。 ただし、少なくとも2f + 1個の非障害レプリカが同じビューにある場合は、期間を最大化し、要求された操作が実行されるまでこの期間が指数関数的に増加することを保証することが重要です。」 (実用的ビザンチンフォールトトレランスベース、ミゲル・カストロとバーバラ・リスコフ)
SolanaはPBFTの派生を実装していますが、根本的な違いが1つあります。 Proof of History(PoH)は、コンセンサスの前に世界的な時間のソースを提供します。 PBFTの実装では、PoHを時間のネットワーク時計として使用し、レプリカがPBFTで使用する指数関数的に増加するタイムアウトを計算し、PoH自体で適用できます。
PoHは、順次ハッシュ関数として実装された検証可能な遅延機能です。 検証には(計算時間)/(コアの数)が必要なため、VDFの緩やかな定義を使用します。 PoHの仕組みの基本原則は次のとおりです。
1.各出力が次の入力となるように、Sha256は可能な限り高速でループします。
2.ループがサンプリングされ、反復回数と状態が記録されます。
記録されたサンプルは、検証可能なデータ構造としてエンコードされた時間の経過を表しています。 さらに、このループを使用してイベントを記録できます。
1.サンプルのいずれかを参照するメッセージは、サンプルの後に作成されたことが保証されます。
2.メッセージをループに挿入し、状態とともにハッシュできます。 これにより、次の挿入の前にメッセージが作成されたことが保証されます。
このデータ構造は、内部に埋め込まれたイベントの時間と順序の両方を保証します。この中核にあるアイデアは、Solanaのすべての主要な技術的最適化の基礎です。
別の言い方をすれば、あなたが島にいて、中にUSBドライブが入ったボトルが浮かんでいると想像してください。 そのドライブはSolana PoH台帳です。 PoH台帳のみを使用して、ネットワーク内のすべてのノードの状態を計算できます。 たとえば、台帳への投票が最後のXハッシュに記録されていない場合、ノードは失敗したと見なされます。 最後のXハッシュで検証メッセージに署名したネットワークの大部分をハッシュする場合、台帳は有効であると考えることができます。
1.このデータ構造を検査するすべてのノードは、ピア間の通信を必要とせずに、まったく同じ結果を計算します。

  1. PoHハッシュは、台帳のその分岐を一意に識別します。 そして
    3.検証投票メッセージは、投票したPoHハッシュが台帳に存在する場合にのみ有効です。
    これにより、投票とPBFTが行われます。 台帳自体が信頼できるネットワーク時計として機能するため、台帳自体にPBFTタイムアウトをエンコードできます。
    1.投票は、N個のハッシュのタイムアウトから始まります。
    バリデータ―は、PoHハッシュへの投票が行われると、その投票の複製ではないPoHハッシュに少なくともNハッシュは投票しないことを(スラッシュ付きで)保証します。
    2.すべての先行投票のタイムアウトが2倍になります。
    操作をより管理しやすくするために、投票は固定期間のハッシュに制限されています。これをスロットと呼びます。 スロットの目標は、約400ミリ秒くらいのハッシュの数です。 ネットワークには400ミリ秒ごとに潜在的なロールバックポイントがありますが、その後の投票ごとに、その投票を展開する前にネットワークが停止する必要があるリアルタイムの量が2倍になります。
    各バリデーターが過去12秒間に32回投票したと想像してください。 12秒前の投票のタイムアウトは2³²スロット、つまり約54年です。 事実上、この投票はネットワークによって決してロールバックされません。 一方、最新の投票のタイムアウトは2スロット、つまり約800ミリ秒です。 台帳に新しいブロックが追加されると、古い票がコミットされるスロットの数がスロットごと、つまり400ミリ秒ごとに2倍になるため、古いブロックが確認される可能性が高くなります。
    これは、作業の証明における確率的ファイナリティのように聞こえますが、そうではありません。 バリデーターの⅔が何らかのPoHハッシュに投票すると、そのPoHハッシュは標準化され、ロールバックできません。 これは、標準化の概念がない作業証明とは異なります。
    ネットワークの残りの部分からロックアウトされるのを防ぐため、各バリデーターは、同じ台帳でネットワークの過半数が投票している場合にのみ投票するようにします。 各バリデーターは、以前の投票のタイムアウトが事前に定義された閾値(5〜10分など)を超えるとモニターし、その投票を含む分岐でネットワークの大多数が投票したことを確認します。 実際には、バリデーターは:
  2. 10分のタイムアウトを確約するスロットに過半数が投票したかどうかを確認します
  3. もしなければ、投票しません
    それでは、パーティションの間にタイムアウトが実際に期限切れになり始めたとき、ネットワークには何が起こりますか?
  4. 期限切れになった投票は消去されます
    2.生成物のタイムアウトが等しい場合にのみ、先以前のタイムアウトは2倍になります
    たとえば、現在のタイムアウトが次のようなシナリオを考えてみましょう:
    64, 32, 16, 8, 4, 2
    バリデーターが17スロットの投票を停止して再度投票した場合、バリデーターのタイムアウトは次のようになります。
    64, 32, 2
    以前のタイムアウトが全て二倍になるなるまでに、さらに4回連続して投票する必要があります。
    64, 32, 4, 2
    64, 32, 8, 4, 2
    64, 32, 16, 4, 2
    最後に、4回目の投票ですべてのタイムアウトが2倍になります
    128, 64, 32, 16, 8, 4, 2
    このアプローチにより、ネットワークは、大多数が同じ台帳を見つけるまで、台帳を停止せずにブロックを継続的にストリーミングできます。 もう1つの注目すべき側面は、ネットワークのすべての参加者が、P2P通信なしで他のすべての参加者のタイムアウトを計算できることです。 これがTower BFTを非同期にする理由です。
    すぐに廃棄される多くのマイクロフォークがあると予想されます。 バリデーターが複数のフォークを検出すると、正直なバリデーターはすべてのフォークの有効なステーク加重タイムアウトを計算し、最も重いものを選択します。 バリデーターの報酬は、2³²のタイムアウトに達する投票に対してのみ生成されます。 したがって、最大のステーク加重タイムアウトを持つフォークはネットワークに最大の報酬を生成するため、バリデーターが最も重いフォークに投票するインセンティブ互換性があります。
    Solanaバリデーターとコミュニティ:Tour de SOLに参加してトークンを獲得!Solanaバリデーターとコミュニティ:Tour de SOLに参加してトークンを獲得!
    SolanaのTower BFTの実装と、Proof of History、Proof of Replication、Gulf Streamなどの革新が組み合わさって、世界で最もパフォーマンスの高いブロックチェーンになります。 Solanaのtestnetは本日公開されます。 https://explorer.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ネットワークの限界を試すよう大衆に働きかけます。