// リサーチ

Bitroot パフォーマンスベンチマーク

ドラフト。以下の数値は、社内で実施した1回のストレステストに基づいています。ハードウェア、ノード数、ソフトウェアバージョン、トランザクションの種類はまだ追記されていないため、追記されるまで本ページは検索インデックスの対象外とします。

本ページでは、Bitroot がスループットをどのように、どのような条件で計測するか、そして数値をどのように再現できるかを示します。設計目標と実測結果は分けて記載します。実測値にはすべて、その出典となる実行を明記します。

1. 目標と実測

指標設計目標最新の実測値実行
スループット(TPS)100,000+36,430.68 tx/s(最初から最後にブロックへ取り込まれたトランザクションまでの、実行全体の平均)3,000万トランザクションのストレステスト(セクション4)
ファイナリティまでの時間TBDTBD今回の実行では対象外
ブロック時間TBDTBD今回の実行では対象外

実測のスループットは設計目標を下回っています。目標は、アーキテクチャが到達するよう設計されている水準を示します。実測値は、1回の実行で得られた結果を示します。

2. 定義

ここでの TPS はチェーン側のレートです。つまり、ブロックに取り込まれたトランザクション数を、最初から最後に取り込まれたトランザクションまでの時間で割った値です。負荷生成ツールがトランザクションを送信した速度ではありません。一般的な用語については パフォーマンス指標用語集 を参照してください。

TODO(engineering): コンセンサスとネットワークのオーバーヘッドが含まれるかどうか、また失敗したトランザクションをどのように数えるかを明記する。今回の実行では失敗したトランザクションはなかった。

3. テスト環境

項目値
実行モードmempool
Nonce モードlocal
署名者数500
Mempool TXs100,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万トランザクションのストレステスト