// 리서치

Bitroot 성능 벤치마크

초안입니다. 아래 수치는 한 번의 내부 스트레스 테스트에서 나온 것입니다. 하드웨어, 노드 수, 소프트웨어 버전, 트랜잭션 유형은 아직 추가해야 하므로, 이 항목이 채워질 때까지 이 페이지는 색인되지 않습니다.

이 페이지는 Bitroot가 처리량을 어떤 조건에서 어떻게 측정하는지, 그리고 그 수치를 어떻게 재현할 수 있는지 설명합니다. 설계 목표와 실제 측정 결과는 구분하여 표기하며, 모든 측정값에는 해당 수치가 나온 실행(run)을 명시합니다.

1. 목표와 측정 결과

지표설계 목표최근 측정값실행
처리량(TPS)100,000+36,430.68 tx/s, 첫 번째 트랜잭션부터 마지막으로 반영된 트랜잭션까지 전체 실행 구간의 평균30,000,000건 트랜잭션 스트레스 테스트, 4절
최종성 도달 시간TBDTBD이번 실행에서는 측정하지 않음
블록 시간TBDTBD이번 실행에서는 측정하지 않음

측정된 처리량은 설계 목표보다 낮습니다. 목표는 아키텍처가 도달하도록 설계된 수준을 나타내고, 측정값은 한 번의 실행이 만들어낸 결과를 나타냅니다.

2. 정의

여기서 TPS는 체인 측 처리율입니다. 즉, 블록에 반영된 트랜잭션 수를 첫 번째 트랜잭션부터 마지막으로 반영된 트랜잭션까지 걸린 시간으로 나눈 값입니다. 부하 생성기가 트랜잭션을 전송한 속도가 아닙니다. 일반적인 용어는 성능 지표 용어집을 참고하세요.

TODO(engineering): 합의 및 네트워크 오버헤드가 포함되는지, 그리고 실패한 트랜잭션을 어떻게 집계할지 명시합니다. 이번 실행에서는 실패한 트랜잭션이 없었습니다.

3. 테스트 환경

항목값
실행 모드mempool
Nonce 모드local
서명자 수500
Mempool TXs100,000
팁5,000,000,000 wei (5 gwei)
네트워크TBD (테스트넷, 데브넷 또는 격리된 클러스터)
노드 수 및 역할TBD
노드당 하드웨어(CPU, 메모리, 디스크, 네트워크)TBD
지리적 분포 및 지연 시간TBD
소프트웨어 버전 및 커밋TBD
실행 날짜TBD

부하 도구는 blocks 설정값 300과 chunk size 0 KB도 함께 보고합니다. TODO(engineering): 이 두 값이 무엇을 의미하는지 설명한 뒤에 테스트 조건으로 공개합니다.

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)
==================================================

도구는 처리량을 두 가지로 출력합니다. 이 페이지는 체인 기준 값인 "Real Chain TPS"(36,430.68 tx/s, 첫 트랜잭션부터 마지막 트랜잭션까지)를 사용합니다. "Average RPS"와 "Average TPS"(46,425.94)는 사용하지 않습니다. 30,000,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. 알려진 한계

  • 한 번의 실행은 지속적인 프로덕션 부하가 아닙니다. 이 설정에서 네트워크가 약 13분 동안 보여준 성능일 뿐입니다.
  • 부하는 단일 워크로드입니다. 높은 경합 상황, 예를 들어 많은 트랜잭션이 같은 컨트랙트를 건드리는 경우의 처리량은 다루지 않습니다.
  • 이 결과는 위 환경이 채워진 이후 그 환경에만 적용되며, 다른 환경에는 적용되지 않습니다.

7. 독립 검증

TODO(product): 제3자 측정 또는 감사 보고서가 있다면 기관, 범위, 날짜와 함께 링크합니다. 아직 없다면 이곳에 그렇게 명시합니다.

8. 변경 이력

날짜변경 사항
TBD최초 공개: 30,000,000건 트랜잭션 스트레스 테스트