Solanaを最初のWebスケールブロックチェーンにする7つのイノベーション

Solanaの50,000 TPSブロックチェーンネットワークを可能にする技術革新を理解する
Solanaは、2017年に創業者のアナトリー・ヤコヴェンコが、ノードの分散ネットワークが単一ノードのパフォーマンスに一致する方法を模索したときに考案されました。 主要なブロックチェーンのどれも、この特性を達成することに及びもしません。 これを達成するのがSolanaのミッションです。
BitcoinやEthereumなどのProof of Workシステムは、約10トランザクション/秒(TPS)をサポートしています。 Tendermintのような実用的ビザンチンフォールトトレランスベース(PBFT)のProof of Stake(PoS)システムは、100〜200ノードで約1,000 TPSをサポートします。 PBFTのようなPoSブロックチェーンであるSolanaは、現在のtestnetの反復で200以上のノードで50,000 TPS以上をサポートし、最もパフォーマンスの高いブロックチェーンであり、世界初のWebスケール分散ネットワークになります。
設立以来、Solanaチームは、Qualcomm、Intel、Netscape、およびGoogleの先駆的な技術者で構成され、これらの画期的なパフォーマンス標準で機能するためにSolanaに必要な技術の構築に注力してきました。
単一ノードのパフォーマンスに一致する、分散型の管理者の承認を必要としないネットワークを作成するために、Solanaチームは7つの主要な技術を開発しました。
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
このエッセイでは、上記のそれぞれについて簡単に説明します。 それぞれについて詳しく知りたい場合は、上記のリンクをクリックしてアクセスできる詳細な説明も作成しました。
Proof of History
ブロックチェーンネットワーク全体が単一ノードのパフォーマンスに一致する場合、帯域幅はボトルネックではなく、計算になります。 これを実現するには、まずネットワーク内のノードの通信方法を最適化する必要があります。
ワイヤレス携帯電話ネットワークは、ブロックチェーンベースのネットワークと多くの類似点があり、ネットワーク通信の最適化に長い間焦点を当ててきました。 大規模な場合、単一の無線塔には各携帯電話に独自の無線周波数を送信するのに十分な帯域幅がないため、通信会社は同じ周波数で複数の電話を詰め込むために「マルチアクセス技術」が必要でした。
時間分割多重アクセス(TDMA)は、携帯電話ネットワークで大規模なスケール化を実現した主要な技術の1つです。 TDMAは、タワーが各無線周波数をタイムスロットに分割し、これらのタイムスロットを各通話に割り当てることを指定します。 この方法で、セルタワーはネットワークにグローバルに利用可能な時計を提供します。 これにより、各周波数が複数の同時データチャネルをサポートできるようになり、同時に同じ周波数でブロードキャストする複数の電話からの干渉が減少するため、限られた帯域幅のスケール化が大幅に向上します。
現在のブロックチェーンベースのネットワークにはクロ時計の問題があります。 これの時計は、新しいブロックが生成されるたびに「カチカチ」音を立てます。 Ethereumの場合、これは15秒に1回行われ、1つのブロックに収まる情報には限りがあります。ブロックチェーンベースのネットワークでTDMAに相当するものは、すべての検証ノードが同意する1秒未満の精度の時計であるため、トランザクションをより効率的に処理できます。
Solanaのコアイノベーションは、Proof of History(POH)です。これは、コンセンサスの前に機能する、ネットワーク内でグローバルに利用可能な管理者の承認を必要としない時間ソースです。 POHはコンセンサスプロトコルまたは反シビルメカニズムではありません。 むしろ、POHは時計の問題の解決策です。
他のブロックチェーンでは、時間が経過するごとに同意するためにバリデーターー同士が対話する必要がありますが、各Solanaのバリデーターーは、単純なSHA-256、シークエンシャルハッシュ検証可能遅延機能(VDF)で時間の経過をエンコードすることにより、独自の時計を維持します。 Solanaは、ランダム性のためにVDFを使用しません。 代わりに、各バリデーターーーはVDFを使用して独自の時計を維持します。 各バリデーターーーは独自の時計を保持しているため、エポック全体でリーダーの選択が事前にスケジュールされます。 テンダーミントのように、エポックのスケジュールは数千ブロック続きます。 ただし、Tendermintとは異なり、ネットワークは障害のあるノードを待機しません。 各バリデーターーはVDFを実行して、ブロックとバリデーターーを送信するためのスロットを取得したことを証明します。 ブロックのプロデューサーはブロックを作成したことに対する報酬を受け取るため、各バリデーターーは補償されます。
Proof of Historyにより、リーダーは交代を続け、ネットワークの状態に関係なくネットワーク全体が進歩します。 これは、ネットワークが停止しないことを意味します。 ネットワークは、バリデーターーが互いに対話することなく、バリデーターーを交代させる決定を行うことができます。 これは細かいことですが、大きな変化です。 他のブロックチェーンに匹敵するメカニズムはありません。 他のすべてのチェーンでは、バリデーターーは意思決定を行うために通信する必要があります。 Solanaでは、リーダー交代の決定は非同期的に行われます。
この主要なイノベーションにより、設計スペースが積み上げられました。 タイムスタンプに使用できる時計を提供することに加えて、POHはSolanaがブロック時間(800ミリ秒)、ブロック伝播(log200(n))、スループット(50K-80 = K TPS))、およびネットワークで利用可能な台帳保管(ペタバイト)を最適化できるようにします )。
Tower BFT
Solanaは、Proof of Historyに加えて、同期時計を活用するために特別に設計されたPBFTに似たコンセンサスアルゴリズムであるタワーコンセンサスを実行します。 PBFTとは異なり、タワーコンセンサスは一貫性よりも、最新の状態であることを好みます。 PBFTと同様に、ノードはタイムアウトが指数関数的に増加して合意に達しますが、台帳は信頼できない時間のソースでもあるため、ノードはネットワーク内の他のすべてのバリデーターーのタイムアウトを監視および検査できます。 理解を深めるために、例を考えてみましょう:
あなたが島にいて、USBドライブが中に入ったボトルが浮かんでいると想像してください。 ドライブの中には、Solana台帳があります。 台帳そのものを見ると、各ノードが存在するバリデーターーの数、各バリデーターーの状態、そして重要なことに各バリデーターーがネットワーク内のブロックにコミットしたタイムアウトを計算できることがわかります。 データ構造のみに基づいて、ピア間ののメッセージなしで、バリデーターーが投票の決定を下すことができ、ネットワークが合意に達することができます。
Turbine
Solanaコンセンサスレイヤーはピア間のメッセージに依存しないため、Solanaはコンセンサスとは無関係にブロックがネットワークを介して送信される方法を最適化できます。 Solanaのブロック伝播手法であるTurbineは、BitTorrentから多大に借用しています。 ブロックがストリーミングされると、ブロックは消去コードとともに小さなパケットに分割されランダムなピアの大規模なセット全体に広がります。 200のファンアウトにより、ネットワークの2番目のレイヤーは40,000のバリデーターーをカバーできます。 したがって、バリデーターーは、ファイナリティにlog200(n)の影響でブロックを伝播できます。 すべての実用的な目的で、各接続が100ミリ秒の場合、複製は400ミリ秒で完了し、40,000ノードネットワークのファイナリティは500ミリ秒で完了します。
ファンアウトメカニズムは、障害に耐える必要があります。 そのため、バリデーターはリードソロモン消去コードを使用してデータをエンコードし、ある程度の耐障害性を提供します。
Gulf Stream
高性能ネットワークでは、mempool管理は他のチェーンが実際に対処する必要のない新しい分野の問題です。 ガルフストリームは、トランザクションのキャッシュを押して、ネットワークの端まで転送することにより機能します。 すべてのバリデーターはSolanaアーキテクチャの今後のリーダーの順序を知っているため、クライアントとバリデーターはトランザクションを事前に予想されるリーダーに転送します。 これにより、バリデーターは事前にトランザクションを実行し、確認時間を短縮し、リーダーを迅速に切り替え、未確認のトランザクションプールからのバリデーターに対するメモリプレッシャーを軽減できます。
ウォレットなどのクライアントは、特定のブロックハッシュを参照するトランザクションに署名します。 クライアントは、ネットワークによって完全に確認された最近のブロックハッシュを選択します。 ブロックは約800ミリ秒ごとに提案され、ブロックを追加するたびに展開するにはタイムアウトが指数関数的に増加する必要があります。 既存のタイムアウト曲線を使用すると、完全に確認されたブロックハッシュは、最悪の場合、32ブロック古くなっています。 ブロック時間を800ミリ秒とすると、25.6秒に相当します。
トランザクションがバリデーターに転送されると、バリデーターは次のリーダーのいずれかに転送します。 クライアントは、バリデーターからのトランザクション確認に署名できます。 クライアントは、ブロックハッシュが有限時間内に期限切れになるか、トランザクションがネットワークによって確認されることを知っています。 これにより、クライアントは、実行または失敗が保証されているトランザクションに署名できます。 ネットワークがロールバックポイントを超えてトランザクション参照のブロックハッシュの有効期限が切れると、クライアントはトランザクションが無効になり、チェーンで実行されないことを保証します。
Sealevel
Solanaの高性能ネットワークを活用するために、GPUとSSDを水平に拡張するように設計されたハイパー並列トランザクション処理エンジンであるSealevelを構築しました。 他のすべてのブロックチェーンはシングルスレッドコンピューターであることに注意してください。 Solanaは、単一のシャードで(トランザクション検証だけでなく)並列トランザクション実行をサポートする唯一のチェーンです。
この問題の解決策は、スキャッターギャザーと呼ばれるオペレーティングシステムドライバー技術から多大に借用しています。 トランザクションは、実行中にどの状態を読み書きするかを事前に指定します。 ランタイムは、ブロックで発生するすべての重複しない状態遷移関数を検出し、それらを並列で実行(いわゆる並列実行)し、RAID 0 SSDのアレイ全体で状態への読み取りおよび書き込みのスケジュール方法を最適化できます。
Sealevel自体はトランザクションをスケジュールするVMですが、Sealevelは実際にはVMでトランザクションを実行しません。 代わりに、Sealevelは、高性能パケットフィルター用に設計されたBerkeley Packet Filter(BPF)と呼ばれる業界で実績のあるバイトコードを使用して、ハードウェアでネイティブに実行されるトランザクションを手渡します。 このバイトコードは90年代前半から最適化されており、単一のスイッチで40ギガビットネットワークで毎秒6,000万パケットを処理するために、世界中の数百万台のスイッチで実稼働に導入されています。
Nvidiaが使用可能なSIMDレーンの数を2倍にするたびに、我々のネットワークの計算能力が2倍になります。 設計上はシングルスレッドコンピューターである他のすべてのブロックチェーンは、このようには拡張することはできません。
WASMをターゲットとする同じコンパイラであるLLVMを使用して、GPUでコントラクトを実行するC / C ++言語およびRustで高性能のスマートコントラクトを作成するための優れたツールセットを開発者に提供します。 SolanaはWASMを使用していませんが、開発者は最小限の変更でSolanaコンパイラでWASMコンパイラ用に記述されたCおよびRustコードを再コンパイルできます。 したがって、開発者はDfinity、EOS、Polkadot、Ethereum 2.0などの他の主要なWASMチェーンからアプリケーションを簡単に移行できます。
Ethereumには、ソフトウェアアーキテクチャに起因するバグの歴史があります。 関連する2つの例:
Delegate Callを通しての複数のパリティハッキング
「Call」による「DAO賃貸バグ」
メモリ保護なしでC言語で複雑なソフトウェアを作成できるように、安全なSolidityコードを作成することは間違いなく可能です。 ただし、安全でない動作を簡単に追加でて、検出するのが難しい限り、複雑なソフトウェアの動作を検証することは幾何学的に難しくなります。 SolanaとLibraチームの両方がこの問題を早期に認識し、異なるモジュール間で状態を厳密に分離するアーキテクチャを開発しました。
Move言語では、高度な概念としてリソースとスクリプトが導入されました。 どちらもSolana Sealevel ランタイムに自然に適合し、ネイティブプログラムの設計方法にも適合しています。 私たちの目標は、リソースがネイティブSolanaプログラムとして動作し、Moveまたはパフォーマンスやセキュリティを損なうことなく独自のネイティブRust ABIを通じて開発および構成できるように、Moveを第1レベル言語としてサポートすることです。
Cloudbreak — 水平スケール化されたメモリー
単純に計算をスケール化するだけでは十分ではありません。 アカウントの追跡に使用されるメモリは、すぐにサイズとアクセス速度の両方のボトルネックになります。 たとえば、多くの現代のチェーンが使用するローカルデータベースエンジンであるLevelDBは、約5,000 TPSを超えるとサポートできないと一般に理解されています。
素朴な解決策は、RAMのグローバル状態を維持することです。 ただし、消費者グレードのマシンにグローバル状態を保存するのに十分なRAMを期待するのは合理的ではありません。 Solana向けに、SSDのRAID 0構成にまたがる同時読み取りと書き込みに最適化された状態アーキテクチャであるCloudbreakを設計しました。 ディスクを追加するたびに、オンチェーンプログラムで使用できるストレージ容量が追加され、実行時にプログラムが実行できる同時読み取りおよび書き込みの数が増加します。
トランザクション設計と相まって、このアーキテクチャはトランザクションのAOT(Ahead Of Time)実行をサポートします。 バリデーターがトランザクションを検知するとすぐに、Sealevelはすべてのアカウントをディスクからプリフェッチし、ランタイムの実行準備を開始できます。 バリデーターとブロックプロデューサーは、ブロックにエンコードされる前にトランザクションの実行を開始することもできます。これにより、ブロック時間と確認待ち時間をさらに最適化できます。
Replicators
1GBPSの場合、ブロックチェーンネットワークは台帳用に年間4ペタバイトのデータを生成します。 データを保存することは、すぐに主要な集中化ベクトルになり、プロセスでのブロックチェーン実装の目的そのものを無効にします。
Solanaでは、データストレージはバリデーターからレプリケーターと呼ばれるノードのネットワークに領域解放されます。 レプリケーターはコンセンサスに参加しません。 状態の履歴は多くの断片に分割され、消去がコーディングされます。 レプリケーターは、状態の小さな断片を保存します。 ネットワークは、レプリケーターに、想定されているデータを保存していることを証明するよう依頼することがよくあります。 Solanaは、Filecoinから大きく借用しているProofs of Replication(PoRep)を活用しています。
PoRepが同作成されるかを最適化するために、コンセンサス前の時計であるProof of Historyを使用できます。 コンセンサスに参加していないレプリケーターノードは、PoHを使用して台帳の一部を複製する軽量なプルーフを生成し、バリデーターはそれらをGPU全体で非常に大きなバッチで検証できます。
レプリケーターは、軽量ノード(ラップトップなど)でも大丈夫です。 消失コードと冗長性により、レプリケーターのネットワークは、AWSまたはGCEが提供したいと希望しているものを超えるデータ可用性の保証を提供できます。
まとめ
これらの7つの主要な革新のおかげで、Solanaネットワークは、常に継続的な高速分散台帳テクノロジーです。 コンセンサスによって速度が低下することはありません。 さらに、システムはデータの伝播を最適化し、トランザクション処理のために並列GPUを大規模に活用し、大量の保存されたチェーン履歴でバリデーターを圧迫しません。
Solanaのソフトウェアは、邪魔にならないように設計されており、ハードウェアが最大限に機能するようにします。 そのため、Solanaは帯域幅、SSD、GPUコアに応じて自然にスケール化します。 それが可能な唯一のブロックチェーンであり、Solanaが世界中の200の物理的に異なるノードのネットワークで50,000 TPSを達成する方法です。
Solanaネットワークを可能にする7つのイノベーションの詳細については、以下のブログ投稿を参照してください。
Proof of History (POH)— コンセンサス以前の時計;
Tower BFT — PoH最適化したPBFT;
Turbine — ブロック伝播プロトコル;
Gulf Stream — Mempoolなしのトランザクションフォワーディングプロトコル;
Sealevel — スマートコントラクト並行実行時間;
Cloudbreak — 水平スケール化されたアカウントデータベース;と
Replicators — 分散台帳保管
ネットワークの状態
Solanaのtestnetは今時点で利用可能です。 testnet.solana.comで見ることができます。 コストの観点から、ほんの少数のノードのみを実行しています。 ただし、AWS、GCE、Azureの23のデータセンターにまたがる物理的に別個の200以上のノード(共有ハードウェア上ではない)にベンチマークのためにスピンアップしました。
ランタイムは現在機能しており、開発者は今すぐtestnowにコードを展開できます。 開発者は現在C言語でスマートコントラクトを構築でき、私たちはRustツールチェーンに積極的に取り組んでいます。 RustはSolanaスマートコントラクト開発の主要言語になります。Rustツールチェーンは、Solana Javascript SDKの一部として公開されており、Software Development Kitをさらに反復しています。
Solanaはまもなく、パブリックベータインセンティブバリデーターを開始して、トークンを獲得しながらSolanaネットワークの限界のテストを一般の人に挑戦する「Tour de SOL」(CosmosのGame of Stakesに類似)を介してノードを実行するよう奨励します。
<- CLOUDBREAK — SOLANAの水平スケール化された状況アーキテクチャー SOLANAはMULTICOIN主導で200万米ドル調達完了->
SOLANA.COMでより詳しく
SOLANAブログをフォローする
ニュースレターに登録
TELEGRAMで議論する
DISCORDでつながる
TWITTERで連絡する