Previewnet — 業界のマイルストーンの再構築
Aptosの各コンテンツや、学習材料へはこちらからアクセスできます!
![](https://cdn-images-1.medium.com/max/1600/0*YRgW1ys7-Ft3glM4.png)
Previewnetとは?
Aptos Labsのチームはコミュニティとの協力のもと、Aptos Networkのスケーラビリティ、パフォーマンス、堅牢性の継続的な向上に努めています。全ての改良は大規模なマルチリージョンクラスターで徹底的にテストされていますが、グローバルに分散化されたプラットフォームの微妙なニュアンスを再現するには、さらに多くのことが必要です。
異種ハードウェア、可変ノード構成、不均一なネットワーク特性、ノード操作に関わる人間の特異性によって、Aptosメインネットはユニークな環境となっています。
そのため、Aptosのプロトコルを変更する際には、数カ月後にAptosメインネットがどのような状態になるかを忠実に再現した環境でテストを行う必要があります。これには、対応するメインネットノードのすべての特性を備えた同じノードオペレータによってノードがデプロイされることも含まれます。っこれは、各変更を徹底的に検証して、新しい動作がスケーラブルで、パフォーマンスが高く、安全で、信頼できることを保証するために必要なことであり、このテスト環境を「Previewnet」と呼んでいます。
大規模なネットワークの変更が蓄積されると、Aptosのノードオペレーターはプレビューネットを立ち上げて、極度の負荷テスト、高負荷のワークロード、長時間の持続的なアクティビティでネットワークのストレステストを実行できます。
この記事では、2023年11月に実施したPreviewnetについてまとめます。
セットアップとタイムライン
以下は、最近のPreviewnetに関する主な統計とタイムラインです:
- バリデータノード数: 125 (メインネットより5%多い)
- 国の数: 26 (メインネットと同じ)
- ナカモト係数: 33 (メインネットの17に対して)
- ステークの分布
- EU: 40
- アジア:25
- アメリカ大陸:26
- アフリカ、中東、オーストラリア 9% - 設定開始:2023年10月30日
- テスト開始:2023年11月6日
- テスト終了:2023年11月21日
- トランザクション処理総額:>90億ドル以上(~2週間以上)
Previewnetのセットアップは、地域分布、ノード数、地域別のステーク分布、ユニークなノードオペレーターの数においてメインネットを反映しています。各オペレーターは、Previewnet用に構築された特定のシングルノードベンチマークを満たすサーバーをデプロイしました。(ベンチマークの実行はこちらの手順に従ってください)
Previewnetのナカモト係数は33であったのに対し、メインネットではノードあたりのステーク分布が低いため17でした。つまり、メインネットはこのテスト結果と同等かそれ以上のパフォーマンスを持つ計算となります。新しいバリデータがメインネットに追加されるにつれて、ネットワークはさらに分散化されます。目標はメインネットで30以上のナカモト係数を達成することで、これがプレビューネットが将来的にメインネットのステーク配分を反映する形で設定された理由です。
以下は、私たちが実施したテストの詳細です:
パフォーマンスとピークTPS(秒間トランザクション数)
これまでの道のり:今年初め、私たちは完全に再現可能な初のパフォーマンス・ベンチマークを発表し「Transactions per second (TPS)」のようなパフォーマンス・メトリクスの定義に関する業界全体共通の議論を開始しました。
私たちのソフトウェア・スタックは、グローバルに地理的に分散された100ノードのネットワークで〜20k TPSを達成できることを実証しています。簡単にまとめると、Aptosがベンチマークで高いスループットを達成するのに役立った主なイノベーションは以下の通りです:
- Quorum Storeによる水平スケーラブルなコンセンサス: Aptosは、Quorum Storeに基づく新しいコンセンサス・メカニズムを使用して、コンセンサスをスケーリングします。Quorum Storeの背後にある考え方は、データとメタデータを切り離すことで、コンセンサスのクリティカル・パスの外側でデータの普及を実現することです。
- BlockSTMによる並列実行エンジン:実行レイヤーを拡張するために、BlockSTMという並列実行エンジンを設計しました。このエンジンは、楽観的並行性制御を備えたソフトウェア・トランザクション・メモリ(STM)を使用してトランザクションを並列実行します。私たちのベンチマークによれば、毎秒16万トランザクションを実行可能です。
- 高度に最適化されたバッチストレージ: Aptosのストレージアプローチは、キャッシュと並列化のためにBlockSTMと連携するように特別に調整された、永続化されたインメモリ、ロックフリーのスパースMerkleツリーを組み合わせています。
- ステージのパイプライン処理によるリソース効率: トランザクション処理の全ステージがパイプライン化されてリソースをフル活用し、スループットは最も遅いステージの分だけ遅くなります。パイプライン化により、ノードがすべてのリソースを同時に利用できるようになり、スループットが大幅に向上します。
- より高いピークTPSの達成:再現可能なベンチマークを使用して、ストレージレイヤーがボトルネックになっていることを確認しました。RocksDBのインスタンスを1つ使用していましたが、1秒間に~2万トランザクションを超えるデータをDBに書き込むことができませんでした。この問題に対処するため、私たちは新しいシャード・ストレージ設計を導入しました。これはステート・ストレージを複数のRocksDBインスタンスに分割して、コミットを並列化できるようにするものです。これに加えて、実行エンジン、状態同期アルゴリズム、ネットワークスタックにもいくつかの改良を加え、より高いスループットを実現しました。
こうした改良の結果、プレビューネットで30k TPSを超える新たなピークを達成することができました。
![](https://cdn-images-1.medium.com/max/1600/0*OMtvh8XTPyunHRwO.png)
今後、Aptosはスケーラビリティをさらに強化して、100万TPSを超える次のマイルストーンとして10万TPS超を目標としています。この目標は、何十億ものユーザーにサービスを提供できるネットワークを構築して、Web3テクノロジーの普及に次の波をもたらすというAptosのミッションと一致するものです。より高いTPSを達成することは、Web3エコシステムにおけるグローバルなユーザーベースの多様で増大する需要に対応するために極めて重要です。
ピークスループットの維持 — 業界の新たなマイルストーン!
ピークTPSは、Aptosにおけるスループット全体のほんの一部に過ぎません。何十億ものユーザーを対象に構築されたネットワークは、高いスループットを長期間維持しなければなりません。このことを念頭に置いて、ネットワークを積極的にプッシュして~25kのTPSを24時間以上持続させました。この間、ネットワークは24時間以内に前例のない21億件(B付き)のピアツーピア決済トランザクションを一度も停止することなく処理することに成功しています。ちなみに、Visanetは1日あたり1億5000万件のトランザクションを処理しています。
以下のグラフは、この負荷の持続的なTPSとプレビューネットのタイムスタンプを示しています:
![](https://cdn-images-1.medium.com/max/1200/0*HB7IUBxbGksejyCU.png)
![](https://cdn-images-1.medium.com/max/1600/0*YhdsdCG8V7DFYNhy.png)
シーケンシャルワークロードの並列化
高スループットの議論に関しては、業界のほとんどがピアツーピアの転送に焦点を当てています。決済や送金が暗号通貨のユースケースであったため、これは過去には理にかなっていました。しかし、これらのユースケースは、今日のブロックチェーンで見られるワークロードの種類を完全に代表するものではなくなりました。
具体的には、並列化が容易な送金ワークロードとは異なり、既存のワークロードの多くはシーケンシャルな特性を示しています。これらの作業負荷は逐次実行を必要とし、実行コア間で些細な並列化ができないため、スループットを大幅に低下させます。
その一例が、供給量に限りがあり、逐次的に命名されるNon Fungible Tokens(NFT)のミントです。例えば、100 万 NFT しか作成できない NFT コレクションでは、各 NFT に順次名前が付けられます(つまり、各トークンにはミントされた順番に基 づく固有のインデックスが付けられ、そのインデックスがトークン名に含まれます。) これはNFTの一般的です。
供給量の制限と逐次的な命名の両方が逐次的な実行を必要とするため、トランザクションのスループットが大幅に低下します。これを克服するため、Aptosではアグリゲータと呼ばれる競合のないカウンターを開発しました。アグリゲータを使用することで、クリティカルな実行パスから逐次計算を削除し、逐次ワークロードの必要な特性を維持したまま、並列化された実行を実現することができます。この技術の詳細については、今後の一連のブログ記事で取り上げる予定です。現時点では、アグリゲータを使用することで、逐次的に実行されるワークロードを並列化できます。
Previewnetでアグリゲータを使用したところ、100万NFTのNFTコレクション全体を約90秒、500万NFTのコレクションを約8分でミントすることができ、持続的なスループットは1秒当たり1万NFT以上となりました。これは、逐次実行(アグリゲータを利用しない場合)と比較すると、10倍の改善となっています。このようなワークロードをシームレスに並列化できることは、現在のところ業界では他に類を見ません。
90秒で100万の限定コレクションNFTをミントすることで、大規模な実世界イベントをサポートする新たなNFTユースケースを開拓できます。
以前にもお伝えしたように、Aptosの目標は、時間をかけて、異なるネットワーク間でパフォーマンスを比較する公平で包括的な方法として、TPCベンチマークに相当するブロックチェーンを進化させるために仲間と協力することにあります。ブロックチェーン・ベンチマークは、現実世界の性能に換算される代表的なワークロードのセットを持ち、アプリケーション・ビルダーやユーザーに価値ある情報を提供する必要があります。
私たちは、ベンチマーク・スイートにもう1つのマイルストーン「シーケンシャルNFTミント/秒」を追加するよう業界に呼びかけます。
復旧(DR)訓練
ネットワークは、信頼性、安全性、耐障害性を高めるために一から設計されていますが、最悪のケースを想定して、強力な運用方法を確立することは重要です。インシデントが発生した場合、できるだけ早くネットワークを完全な状態に復旧させる必要があります。
実際にネットワークにフォールトを注入するために、私たちは実験的な機能を実行しました。そして、ノード・オペレーター・コミュニティとともに、ネットワークを迅速にオンラインに戻すスクリプトを特定し、実行することができました。
主な教訓
- 現実はより複雑:Previewnetは、どんなプロトコル変更も、極端かつ持続的な作業負荷が広範囲に及ぶ現実の環境下で認証されなければならないというテーゼを再確認するものとなりました。私たちは大規模なマルチリージョンクラスターで変更をテストしていますが、Aptosメインネットはユニークで、テストできるよりも多くの特性、変数、異質性を持っています。その結果、他の方法では見逃されていたであろう、微妙なパフォーマンスと信頼性の問題を発見することができました。これらは、オペレーティング・システム、ハードウェア、デプロイメント・アーキテクチャ、ストレージ・テクノロジー、ネットワーク・インフラ、オペレーターのベスト・プラクティスにおける異質性から生じたものです。テスト環境は変更を検証するために必要ではあるが、実世界と比較すると常に不十分です。
- 読み取りパスも同様に重要:ブロックチェーンのパフォーマンスに関する話題のほとんどは、書き込みパスのレイテンシーとスループットを中心に展開されます。しかし、読み取りパス、例えばフルノード、APIサービス、インデクサ間の読み取りレプリケーションのスループットや遅延についてはほとんど言及されていません。ブロックチェーンのユーザーは今日、ブロックチェーンの状態の読み取りや検証をこれらのサービスに依存しているため、これは大きな問題となります。その結果、読み取りパスが同等に高いパフォーマンスを維持できなければ、書き込みパスがどれだけ高速にトランザクションを処理しようとしても、ユーザーエクスペリエンスは低下します。私たちはPreviewnetでにこれを目撃し、読み取りパスを軽視できないことを思い知らされました。
- 高品質のツールは非常に貴重: Previewnetは、自動化された高品質なツーリングが非常に重要であることを思い知る機会も提供します。異種のデプロイメントで大規模な実験を行う場合、考慮すべき変数の数に圧倒されることがあります。複雑な相互作用や予期せぬ振る舞いをデバッグする場合は特にそうだ。ツールは、この複雑さを管理し、目の前の問題を効果的に特定する唯一の方法です。例えば、テスト中にノードがCPUやディスクのボトルネックになるケースがいくつかありましたが、根本的な原因を特定するために、自動フレームグラフ生成とメトリック分析に頼りました。同様に、プレビュー・ネットのプロビジョニング・プロセスでは、シングル・ノード・ベンチマークを活用して、オペレータがハードウェア選択のパフォーマンスと正しさを迅速に検証できるようにして、ネットワークが本稼働するまでの時間を節約しました。最後に、一貫性のない設定が存在し、ネットワークの初期設定に予想以上の時間がかかり、観測可能性と展開に関するより良いツールの必要性が明らかになりました。ツールは重要な時に時間を節約できます。
コミュニティへのエール
Previewnetは、Aptosネットワークとオペレーターにとって貴重な訓練となりました。ノードオペレーターの素晴らしいコミュニティには、改めて感謝しています。厳しいスケジュールに耐え、アップグレードを依頼し、積極的にネットワークを監視してくれました。仲間意識と熱意が、Previewnetを通して、より大きく、より良い実験へと私たちを後押ししてくれました。
以下は、ノードオペレーター・コミュニティからの引用です:
「AptosのPreviewnetのプロセスは、ハードウェアとソフトウェアの両方の観点から、チームが技術的な限界を押し広げるのに役立っています。Aptos Previewnetのプロセスは厳しいものですが、毎回進歩が見られるとその価値は十分に実感することができます。Aptosチームは熟練度とプロ意識でこの分野をリードし続けています!」 — リパブリック・クリプト
「Previewnet 2で学んだ最も重要なことの1つは、バリデータとVFN間のレイテンシが非常に重要だということです。同様に、状態同期の性能は、本当にネットワークをまとめる接着剤のような役割を果たします。状態同期の改善によってパフォーマンスが大幅に向上したのを目の当たりにして、とても興奮しました。30kTPSは完全に実現可能です!」 — ラベンダー・ファイブ
「セットアップ、コンフィギュレーション、マイグレーション、アップグレードの全過程において、本当に良い経験になりました。いくつかのアップグレードはうまくいきました。うまくいかなかったアップグレードもありましたが、うまくいかなかった時の方が多くのことを学べるので、常にポジティブな面があります。」— アーティファクト
「DRや一貫した高負荷のような、一般的でない複数のシナリオを実行できたのは素晴らしい経験となりました。さらに、チームによる改善点(同期など)をテストできたのもよかったです。こうした取り組みによって、将来的にメインネットのデプロイは大幅に堅牢になるでしょう。」 — エンボイ・ラボ
「Aptosチームは、DAGコンセンサスのアップグレードのテストに熱心に取り組み、同時にネットワークの限界に挑戦しました。Aptosネットワークの回復力はこのプレビューネットで証明され、複数の有名なノードオペレータがAptosの明るい未来への道を開くハードウェア要件を最適化するために集まることができました。」 — ルガノード
結論
この経験は、Previewnetのアプローチに対する我々のコミットメントを確認するものとなりました。そして、2024年の早い時期に開催される次回のPreviewnetを楽しみにしています。皆さん、またお会いしましょう!
Aptos LabsはMo ShaikhとAvery Chingによって共同設立され、分散化のメリットを世界にもたらすために、より優れたネットワークツーリングとシームレスなユーザビリティの実現に取り組んでいます。
Aptosの各コンテンツや、学習材料へはこちらからアクセスできます!
今後もウェビナーや新しいコンテンツを、技術者および非技術者向けに日本語で提供していきます。Aptos Japanの活動にご協力ください🤝
![](https://cdn-images-1.medium.com/max/1600/0*4YYtYuOPyOFp3-Gr.png)