Solana(ソラナ)のハイパフォーマンスなブロックチェーンは、以下の8つの主要なイノベーションによって構成されています。
- Proof of History(PoH)
- Tower Byzantine Fault Tolerance:PoHに最適化されたPBFT
- Turbine:ブロック伝搬プロトコル
- Gulfstream:Mempool-lessトランザクション転送プロトコル
- Sealevel:世界初の並列スマートコントラクトのランタイム
- Pipelining:検証用のトランザクション処理装置
- Cloudbreak:水平スケールのアカウントデータベース
- Archivers:分散型台帳ストレージ
今回は上記のうち2.Tower BFT、3.Turbineついて解説します。
ソラナはスマートコントラクトを実行できる2020年にローンチ予定の汎用ブロックチェーンです。「高速な処理ができるブロックチェーン」と表現されるプロジェクトは他にも複数存在しますが、その多くが秒間50-100トランザクションです。ソラナの場合は、レイヤー2やシャーディングを必要とせずに秒間で5万トランザクションを実行できる点でゲームチェンジャーだと期待されます。
【関連】
・Solanaとは?秒間5万トランザクションを処理できるブロックチェーン
Tower Byzantine Fault Tolerance (BFT) コンセンサスメカニズム
Tower-BFTは、ソラナのPoH(Proof of History)上で実行しています。これはPoHに最適化されたPBFTに類似したコンセンサスアルゴリズムであり、通信のオーバーヘッドとレイテンシーを削減します。
ネットワーク上のノードが特定のフォークに投票するたびに、投票はスロットと呼ばれる一定期間のハッシュに制限されます。現在のネットワークの設定では、1つのスロットに約400ミリ秒の時間が設定されています。400ミリ秒ごとにネットワークはロールバックポイントを持っていますが、それ以降の投票を行うたびに、その投票をアンロールするまでにネットワークが停止しなければならない時間が2倍になります。
例えば、各バリデータは過去12秒の間に32回投票しています。12秒前の投票では、タイムアウト時間は2³²スロット、つまり約54年ですので実質的に、この投票はネットワークによってロールバックされることはありません。一方、直近の投票は2スロット、約800msのタイムアウトとなります。新しいブロックが台帳に追加されると、古いブロックはますます確定される可能性が高くなります。なぜなら、古い投票がコミットされているスロットの数がスロットごとに、または400msごとに倍増するからです。
ソラナのメインネットは、Delegated-Proof-of-Stake (DPoS)で運営される予定で、トークン保有者はブロックの生産プロセスに参加して報酬を得ることができ、トークンをステークして自らバリデータになるか、信頼するバリデータにトークンを委任することができます。
Turbine:ブロック伝搬プロトコル
分散システムでは、ノード数を増やすと、すべてのノードにすべてのデータを伝搬するのに必要な時間が長くなることがあります。Turbineはこの問題を解決することを目的としたブロック伝搬プロトコルです。あるノードが非常に大きなメッセージを1,000人のピアに伝搬する場合、1,000回伝搬するのではなく、メッセージを小さなパケットに分割して、それぞれのパケットを異なるノードに送信します。
各バリデーターはネイバーと呼ばれるピアのグループにパケットを順番に再送します。各ネイバーは、データの一部を隣接する各ネイバーに送信する責任があり、仮に各ネイバーが200ノードで構成されている場合、ルートに1人のリーダーがいる3レベルのネットワークでは、2ホップで40,000人のバリデータをカバーすることができます。
またデータを再ブロードキャストしないことを選択する可能性のある敵対ノードを処理するために、つまり障害に対して耐性を持たせるためにバリデーターはReed-Solomon Erasure コードを使用してデータを符号化し、ある程度の障害耐性を提供することが可能になります。