ドラフト。以下の数値は、社内で実施した1回のストレステストに基づいています。ハードウェア、ノード数、ソフトウェアバージョン、トランザクションの種類はまだ追記されていないため、追記されるまで本ページは検索インデックスの対象外とします。
本ページでは、Bitroot がスループットをどのように、どのような条件で計測するか、そして数値をどのように再現できるかを示します。設計目標と実測結果は分けて記載します。実測値にはすべて、その出典となる実行を明記します。
1. 目標と実測
| 指標 | 設計目標 | 最新の実測値 | 実行 |
|---|---|---|---|
| スループット(TPS) | 100,000+ | 36,430.68 tx/s(最初から最後にブロックへ取り込まれたトランザクションまでの、実行全体の平均) | 3,000万トランザクションのストレステスト(セクション4) |
| ファイナリティまでの時間 | TBD | TBD | 今回の実行では対象外 |
| ブロック時間 | TBD | TBD | 今回の実行では対象外 |
実測のスループットは設計目標を下回っています。目標は、アーキテクチャが到達するよう設計されている水準を示します。実測値は、1回の実行で得られた結果を示します。
2. 定義
ここでの TPS はチェーン側のレートです。つまり、ブロックに取り込まれたトランザクション数を、最初から最後に取り込まれたトランザクションまでの時間で割った値です。負荷生成ツールがトランザクションを送信した速度ではありません。一般的な用語については パフォーマンス指標用語集 を参照してください。
TODO(engineering): コンセンサスとネットワークのオーバーヘッドが含まれるかどうか、また失敗したトランザクションをどのように数えるかを明記する。今回の実行では失敗したトランザクションはなかった。
3. テスト環境
| 項目 | 値 |
|---|---|
| 実行モード | mempool |
| Nonce モード | local |
| 署名者数 | 500 |
| Mempool TXs | 100,000 |
| チップ | 5,000,000,000 wei(5 gwei) |
| ネットワーク | TBD(テストネット、devnet、または独立クラスター) |
| ノード数と役割 | TBD |
| ノードあたりのハードウェア(CPU、メモリ、ディスク、ネットワーク) | TBD |
| 地理的分布とレイテンシ | TBD |
| ソフトウェアバージョンとコミット | TBD |
| 実行日 | TBD |
負荷ツールは、blocks 設定が 300、チャンクサイズが 0 KB であることも報告しています。TODO(engineering): この2つの意味を、実行条件として公開する前に説明する。
4. ワークロードと結果
| 項目 | 値 |
|---|---|
| 計画したトランザクション数 | 30,000,000 |
| 送信したトランザクション数 | 30,000,000 |
| 取り込まれたトランザクション数 | 30,000,000 |
| 送信失敗数 | 0 |
| リトライ回数 | 0 |
| 成功率 | 100.00% |
| 送信時間 | 805.19 s |
| チェーン側スループット | 36,430.68 tx/s |
TODO(engineering): トランザクションの種類を明記する。レポートでは受信者が "default" と記載されており、この実行がネイティブ転送、トークン転送、コントラクト呼び出しのいずれだったかは示されていない。転送のみの数値は実際のアプリケーションにとっての上限値であるため、結果の隣に必ず明記する必要がある。コンフリクトがスループットをどのように変えるかについては、並列 EVM ワークロードにおけるホットスポット も参照。
生の出力
負荷試験ツールのレポートです。編集していません。
==================================================
🔥 Stress Test Report
==================================================
Total Planned: 30000000
Successfully Sent: 30000000
Duplicate Sent: 0 (already known, not counted above)
Failed to Send: 0
Landed Transactions: 30000000
Success Rate: 100.00%
Retry Attempts: 0
Signing Time: 79499764 ms (all sign_batch_txs)
Total Pause Time: 79499764 ms (incl. recharge & signing)
--------------------------------------------------
Send Duration: 805.19s
Total Duration: 805.19s (incl. waiting)
Average RPS: 46425.94 req/s (send speed)
Average TPS: 46425.94 tx/s (inclusion speed)
--------------------------------------------------
Run Mode: mempool
Nonce Mode: local
Signer Count: 500
Blocks: 300
Chunk Size: 0 KB
Tip Wei: 5000000000
Mempool TXs: 100000
To: default
Real Chain TPS: 36430.68 tx/s (first to last landed)
==================================================
ツールはスループットを 2 種類出力します。このページで使うのはチェーン側の値 "Real Chain TPS"(36,430.68 tx/s、最初から最後にオンチェーンへ入ったトランザクションまで)です。"Average RPS" と "Average TPS"(46,425.94)は使いません。3,000 万件を 805.19 s で割ると約 37,257 tx/s となり、一致しないためです。
TODO(engineering): ツールが "Average TPS" をどう計算するか、また "Signing Time" と "Total Pause Time"(どちらも 79,499,764 ms)が何を測っているかを説明し、読者がレポートを突き合わせられるようにします。
5. 結果の再現
TODO(engineering): ストレステストツール、正確なコミット、コマンドラインと設定、生の出力へのリンクを記載する。
6. 既知の制約
- 1回の実行は、継続的な本番負荷と同じではありません。この構成のもとで、ネットワークが約13分間に示した挙動を表しているにすぎません。
- 負荷は単一のワークロードです。競合が激しい状況(たとえば、多数のトランザクションが同一のコントラクトに触れる場合)でのスループットは対象外です。
- 結果が当てはまるのは、上記の環境(記入後)に限られ、他の環境には当てはまりません。
7. 第三者による検証
TODO(product): 第三者による計測または監査レポートがあれば、組織名、範囲、日付とともにリンクする。まだ存在しない場合は、その旨をここに記載する。
8. 変更履歴
| 日付 | 変更内容 |
|---|---|
| TBD | 初回公開: 3,000万トランザクションのストレステスト |