Dragonfly Capital:블록체인의 성능을 어떻게 측정할까요?
원저자: GM과 Haseeb Qureshi, Dragonfly Capital
원제목: 《The AMM Test: A No BS Look at L1 Performance》
편집: DeFi之道
다중 체인은 이제 현실이 되었습니다. 이더리움의 확장성 부족으로 인해 새로운 세대의 L1으로 대규모 이동이 발생했습니다. 이러한 L1 중 대부분은 EVM(이더리움 가상 머신)을 사용하여 이더리움 지갑 및 개발 도구와 호환됩니다.
하지만 솔라나는 처음부터 스택을 완전히 재구성했습니다. 솔라나는 현재 가장 빠른 블록체인이라고 주장합니다. 그래서 질문이 제기됩니다: 솔라나는 EVM 체인보다 얼마나 빠를까요?
L1 블록체인의 TVL 성장, 이미지 출처: The Block
먼저 성능을 측정하는 방법에 대해 합의해야 합니다. 오래전부터 새로운 블록체인은 이더리움보다 성능이 얼마나 높은지 주장해왔습니다. 이는 진부한 이야기입니다. 자가 보고된 TPS(초당 거래 수)를 비교하는 많은 숫자와 급하게 조합된 차트를 보게 될 것입니다. 불행히도 이러한 TPS 숫자는 종종 그들의 마케팅 자료에서 나오며, 이러한 자료는 거의 대부분 허튼소리입니다.
L1 자체에서 발표한 대부분의 벤치마크는 단순한 가치 이전의 TPS를 측정합니다. 즉, 한 계정에서 다른 계정으로 코인을 전송하는 것입니다. 간단한 송금은 매우 저렴하여 거대한 숫자를 생성하며, 모든 사람이 이러한 거대한 숫자를 좋아합니다. 그러나 실제로 어떤 블록체인도 이러한 전송에서 병목 현상을 겪지 않으며, 이러한 활동은 현실 세계의 사용 패턴을 반영하지 않습니다.
또한, 이러한 숫자 중 많은 수는 메인넷이 아닌 개발 네트워크나 테스트 네트워크에서 생성된 것입니다. 우리는 누군가의 소프트웨어가 추상적으로 무엇을 할 수 있는지에 관심이 없습니다: 우리는 현재 메인넷에서의 가능성에 관심이 있습니다.
실제로 TPS를 벤치마킹하는 통일된 방법은 없습니다. 벤치마킹에서 종종 이러한 일이 발생합니다. 이는 혼란스럽고 우려스러운 분야로, 오해의 소지가 있는 마케팅, 과적합/"시험 준비" 및 사기가 가득합니다.
좋습니다. 그렇다면 L1 성능을 실제로 어떻게 측정해야 할까요?
이는 까다로운 문제입니다. 성능은 여러 차원이 있기 때문입니다.
첫째, 성능은 항상 분산화에 대한 타협입니다. 메인넷 환경과 비교할 때, 고도로 중앙집중화된 테스트넷과 개발넷은 믿을 수 없는 숫자를 생성할 수 있습니다. 많은 메인넷이 분산화에서 타협하여 추가 성능을 압축합니다.
하지만 분산화를 무시하고 성능에만 집중한다고 가정해 봅시다. 음, 블록체인 성능을 벤치마킹하는 것은 매우 어렵다는 것은 잘 알려져 있습니다. 대부분의 새로운 체인은 데이터 가시성이 좋지 않습니다.
7년 동안 이더리움의 성능은 높은 연구와 좋은 이해를 얻었습니다. 그러나 새로운 체인을 탐색하기 시작하면, 그들 중 대부분은 도구가 훨씬 적고, 가시성이 떨어지며, 계속 발전하고 있습니다. 이 글을 읽을 때, 이러한 벤치마크는 이미 구식일 수 있습니다.
또한, 벤치마킹은 항상 임의적이며 함정이 가득합니다. 당신이 할 수 있는 최선은 가치 있는 것을 측정하는 벤치마크를 선택하고, 결과를 가능한 한 신중하게 결정하는 것입니다. 이것이 우리가 여기서 시도하려는 것입니다.
그렇다면 우리가 말하는 성능이란 무엇일까요? 성능에는 두 가지 측면이 있습니다: 처리량과 지연.
블록체인 성능을 파이프를 통해 흐르는 물로 시각화할 수 있습니다. 거래는 물입니다. 즉, 많은 거래가 동시에 파이프를 통해 흐르기를 원합니다. 그러나 파이프의 길이는 지연을 결정합니다. 즉, 거래가 확인되는 데 오랜 시간이 걸린다면, 많은 거래가 한 번에 확인될 수 있더라도 이상적이지 않습니다.
지연은 블록 시간(블록 간격의 시간)과 최종 확정 시간(블록이 롤백되지 않을 시간)으로 세분화될 수 있습니다. 블록 생성 시간과 완료 시간은 측정하기 쉽습니다.
하지만 실제로 처리량을 측정하려면 표준 측정 단위가 필요합니다. 무엇의 처리량일까요?
우리는 토큰 전송을 사용하지 않고, 이더리움에서 가장 가스를 많이 소모하는 제품 중 하나인 Uniswap V2를 살펴보았고, 이를 매우 간단한 벤치마크로 변환했습니다. Uniswap V2 스타일의 거래로 블록을 가득 채우면, 초당 몇 건의 거래가 청산될 수 있을까요?
우리가 이 벤치마크를 선택한 이유는 1) 간단하고 측정하기 쉽기 때문이며, 2) 모든 블록체인에는 생산 중인 Uniswap V2 스타일의 AMM이 있기 때문이고, 3) 이는 일반적인 스마트 계약 사용 패턴의 전형이기 때문입니다.
가스 모델을 가진 대부분의 블록체인에 대해 이 대략적인 연습은 간단해야 합니다. 먼저 블록 가스 제한과 블록 생성 시간을 찾아 체인의 가스/초 처리량을 유도합니다. 다음으로 Uniswap v2 스타일의 AMM을 찾아 SwapETHforTokens와 같은 동등한 거래를 선택합니다. 마지막으로 첫 번째 숫자를 두 번째 숫자로 나누어, 만약 블록이 동일한 AMM 거래로 가득 차 있다면 얼마나 많은 tx/초에 도달할 수 있는지를 계산합니다.
주의: 이것은 완벽한 벤치마크가 아닙니다! 이는 특수하며, 병렬 거래를 고려하지 않으며(왜냐하면 Uniswap에서 동일한 풀의 거래는 선형화되어야 하므로), 모든 사용 패턴을 대표할 수 없습니다. 그러나 스마트 계약의 사용은 항상 파워 법칙 분포를 따르며, 가장 많이 사용되는 Dapp은 종종 AMM이므로, 일련의 벤치마크에서 이는 성능에 대한 포괄적인 이해에 도움이 된다고 생각합니다.
그러므로, 지체하지 말고 목록을 살펴보겠습니다.
Uniswap v2 초당 거래 수: 평균 9.19, 최대 18.38 (EIP-1559로 인해)
평균 블록 시간: 13.2초 (PoW, 따라서 블록은 포아송 과정에서 무작위로 채굴됨)
최종 확정 시간: 66초 (대략, ETH 블록은 실제로 최종 확정이 아님)
가정 및 방법: 1500만 가스 목표에서, 즉 이더리움이 EIP-1559와 균형을 이룰 때, 이더리움은 초당 9.19번의 거래를 수행할 수 있습니다; 3000만 가스 제한에서, 초당 18.38번의 거래를 수행할 수 있습니다(하지만 여기에서 유지하면 수수료가 기하급수적으로 증가합니다). 우리는 이 swapExactETHForTokens 거래를 대표적인 체인상의 점프 거래로 사용합니다. 블록 생성자가 Uniswap 거래로 1500만 가스 제한 블록을 완벽하게 채울 수 있다고 가정하면, 각 거래는 123,658 가스를 소모하므로, 우리는 15M/123,658 = ~121.3개의 교환을 하나의 블록에 넣을 수 있습니다. 블록이 13.2초마다 도착한다고 가정하면, 이더리움은 초당 121.3/13.2s = ~9.19 Uniswap v2 swap을 처리합니다.
우리는 목록의 다른 EVM 체인에 대해 유사한 계산을 사용할 것입니다.
(참고: 우리는 모든 스마트 계약 L1이 Rollup을 추가할 수 있기 때문에 이 방법의 Rollup을 무시했습니다.)
Ubeswap 초당 거래 수: 평균 24.93, 최대 49.86 (EIP-1559로 인해)
평균 블록 시간: 5초
최종 확정 시간: 5초 (Celo는 PBFT 스타일의 프로토콜을 사용하여 블록을 즉시 완료함)
가정: 이번 swap 거래는 대표 거래, 1000만 가스 목표 및 2000만 가스 제한입니다.
Quickswap 초당 거래 수: 평균 47.67, 최대 95.33 (EIP-1559로 인해)
평균 블록 시간: 2.5초
최종 확정 시간: Polygon에는 두 가지 최종성 개념이 있습니다.
확률: 이는 대부분의 이더리움 스타일 블록체인과 유사하며, 규범 체인은 완료된 작업의 최대 수에 따라 결정됩니다(가장 무거운 체인). Polygon의 경우, Bor 레이어(즉, 블록 생성자 레이어)의 최종 확정성은 더 어려운 분기에서 결정됩니다.
증명 가능성: 이는 Tendermint/IBFT와 유사하며, 규범 체인에서 절대 다수의 서명에 따라 결정됩니다. 이러한 체크포인트는 Heimdall 레이어(Polygon의 검증자 관리 및 상태 동기화 레이어)에서 발생합니다. 이러한 체크포인트는 이더리움에 제출됩니다.
재구성 및 분기는 Bor 레이어에서 발생할 수 있지만, Heimdall에서는 발생할 수 없습니다. 체크포인트는 Bor 체인 상태의 스냅샷입니다. 한 번 블록이 제출된 체크포인트에 포함되면, 그것은 재구성될 수 없습니다(검증자 집합의 >=1/3이 부정직하지 않는 한). 체크포인트는 약 25분마다 제출됩니다.
가정: 이 swap 거래는 대표 거래, 1500만 가스 목표 및 3000만 가스 제한입니다.
Trader Joe 초당 거래 수: 평균 31.65회, 그러나 그 탄력적인 블록 시간 덕분에 Avalanche C 체인은 최대 처리량에서 초당 175.68회의 거래를 처리할 수 있습니다. 그러나 이 수준에서 처리량을 유지하면 수수료가 기하급수적으로 증가합니다.
평균 블록 시간: 평균 2초 (Avalanche는 탄력적인 블록 시간의 비지도 프로토콜입니다: 충분한 최소 수수료를 지불하면 언제든지 블록을 생성할 수 있습니다. Avalanche C 체인은 한때 1초 이내에 10개 이상의 블록을 생성한 적이 있습니다.)
최종 확정 시간: 블록 생성 후 약 1.75초
가정: 이 swap 거래는 대표 거래, 현재 800만 가스 제한입니다.
Avalanche는 이더리움 및 PoS 체인과 매우 다른 블록 생성 메커니즘 때문에 비교하기가 상대적으로 어렵습니다. Avalanche의 경우, 최대 처리량에서 실행되는 작업과 평균 처리량에서 실행되는 작업 간의 차이가 큽니다. (이더리움처럼 EIP-1559를 구현한 체인의 평균 처리량은 평균 처리량의 2배입니다.)
PancakeSwap 초당 거래 수: 194.60 (바이낸스 스마트 체인은 EIP-1559를 사용하지 않으므로 이는 고정 숫자입니다)
평균 블록 시간: 3초
최종 확정 시간: 75초
가정: 이 swap 거래는 대표 거래, 8000만 가스 제한입니다.
이로써 EVM 블록체인의 벤치마킹이 끝났습니다. 이들의 가상 머신은 이더리움을 모델로 한 블록체인입니다. 모든 EVM 체인이 동일한 가스 모델을 사용하므로, 우리는 가스/초를 처리량의 벤치마크로 간주할 수 있습니다. 실선은 목표 처리량을 나타내고, 빈선은 제한을 나타냅니다.
EVM 체인의 Gas/sec
당신은 EVM을 절대 한계로 운영한다고 상상할 수 있습니다. 이 경우 바이낸스 스마트 체인(BSC)(현재 BNB 체인으로 이름이 변경됨)에서 발생하는 상황입니다. 만약 당신이 스마트 계약에서 더 높은 성능을 원한다면, EVM에서 완전히 벗어나야 할 것입니다.
Orca 초당 거래 수: 273.34
블록 시간: 590 밀리초
최종 확정 시간: 13초 (솔라나는 더 빠른 "낙관적 확정"도 제공하지만, 이는 약 4.7%의 손실에 대해서만 저항할 수 있습니다. 대부분의 Dapp은 이 임계값을 수용합니다.)
우리는 이 숫자를 계산하는 방법입니다. 이것은 어리석은 방법입니다.
우리는 먼저 솔라나에 대한 동등한 "가스 제한"을 찾고자 했습니다. 블록 탐색기에서 그러한 숫자를 찾을 수 없습니다. 우리는 먼저 아는 솔라나 개발자 몇 명에게 문의했지만, 그런 제한이 존재하는지 정확히 아는 사람은 없는 것 같았습니다. 그래서 우리는 소매를 걷어붙이고 탐험에 나섰습니다.
우리는 먼저 솔라나에 가스와 유사한 것이 계산 단위(CU)라고 불리는 것을 가지고 있다는 것을 알게 되었습니다. 검증자와의 대화에서 대부분의 사람들은 솔라나 검증이 "블록 시간 내에 가능한 한 많은 거래를 패킹하는 것"이라고 생각하는 것 같지만, 실제 제한은 각 블록에 4800만 CU만 포함될 수 있습니다.
둘째, 단일 블록에서 단일 계정에 쓸 수 있는 CU의 수는 제한되어 있습니다. 이 제한은 동일한 계정에 너무 많은 거래가 기록되는 것을 방지하여 블록의 병렬성을 줄이기 위한 것입니다. 이는 모든 거래가 단일 계약을 사용하기 위해 경쟁할 때와 같은 대규모 혼잡 기간 동안 발생하는 일입니다.
각 계정의 제한은 1200만입니다. 이 1200만 계정 CU 제한, 메인넷의 590 밀리초 블록 시간 및 각 Orca swap의 74,408 CU 비용을 따르면서, 우리는 이론적 제한을 273.34 swap/초로 도출했습니다.
이 숫자는 예상보다 낮은 것 같습니다! 우리가 이 숫자를 믿게 하려면, 우리는 경험적으로 이 방법을 검증하고자 했습니다.
우리는 성능을 올바르게 측정했는지 확인하기 위해 솔라나에 대해 스팸 공격 테스트를 직접 수행하기로 결정했습니다. 명백한 이유로 우리는 메인넷에 스팸을 보내고 싶지 않았기 때문에 솔라나 개발 네트워크를 대상으로 했습니다.
솔라나의 개발 네트워크는 더 작은 클러스터에서 실행되므로 메인넷보다 더 빠른 블록 시간을 가지고 있습니다(380 밀리초 대 메인넷의 590 밀리초), 이는 성능을 향상시킬 것입니다. 380 밀리초의 블록 시간에서 우리는 개발 네트워크가 초당 424.40번의 swap을 청산할 것으로 기대해야 합니다.
우리는 개발 네트워크에서 Orca SOL-ORCA 거래 쌍에 스팸을 보내 얼마나 많은 Orca swap을 단일 블록에서 수행할 수 있는지 확인하고, 이를 최대 처리량으로 추론했습니다.
개발 네트워크 블록 높이 106784857에서 우리는 184번의 Orca swap을 달성했습니다.
우리가 달성한 최고 숫자는 단일 블록에서 184번의 swap이었습니다. 블록 시간이 380 밀리초라고 가정하면, 이는 개발 네트워크에서 484.21 swap/초를 달성하게 됩니다. (블록 시간이 정확하지 않으므로 이러한 숫자는 약간의 편차가 있습니다. 우리가 가장 많은 거래를 얻은 3개의 블록에서 평균을 내면, 초당 381번의 swap처럼 보이며, 이는 더 합리적으로 보입니다.)
이는 우리의 분석 방법이 올바르다는 것을 확인하는 것처럼 보입니다(약 10-15%의 증가), 따라서 이는 솔라나의 메인넷이 AMM에서 약 273번의 swap/초를 실행할 수 있음을 의미합니다.
물론 이것은 단지 테스트 실행일 뿐이므로, 이는 우리의 코드입니다 - 우리는 여러분이 이를 사용하고 결과를 공유하기를 권장합니다.
우리는 여기에서 많은 세부 사항을 생략했으며, 이 모든 것은 Blockdaemon의 친구들의 도움 없이는 불가능했을 것입니다. 이 작업을 수행하는 데 필요한 세부 사항(및 솔라나 내부 구조에 대한 더 깊은 이해)을 알고 싶다면, 우리는 기술 세부 사항을 다룰 제2부를 확인하십시오.
여러분은 이 모든 것을 보고 "하지만 나는 솔라나가 일반적으로 3000 TPS를 수행할 수 있다고 생각했다"고 궁금해할 수 있습니다.
블록 탐색기가 솔라나의 TPS를 측정하는 방식은 오해의 소지가 있을 수 있습니다. 내부 합의 메시지를 거래로 간주하기 때문입니다. 이는 다른 블록체인에서는 발생하지 않습니다.
솔라나의 약 80% 처리량은 합의 메시지입니다. 이를 제외하면 약 600 TPS가 남으며, 그 대부분은 매우 저렴한 세럼 거래입니다. 충분히 많은 다른 계약에 접촉하면 솔라나도 생산에서 더 높은 성능을 달성할 수 있습니다.
AMM 테스트: Uniswap v2 스타일의 swaps/초 성능
그렇다면 이 모든 결과는 무엇인가요?
첫째, 이것을 복음으로 받아들이지 마십시오. 스스로 계산해 보십시오.
둘째, 모든 블록체인은 이동하는 목표라는 것을 기억하십시오. 그들은 지속적으로 최적화되고 기술이 빠르게 발전하며, 어떤 벤치마크도 즉각적인 스냅샷입니다. 우리는 더 많은 독립 조직이 표준화된 벤치마크를 만들기를 바라지만, 이것이 우리의 최선의 시도입니다.
셋째, 이러한 블록체인 간의 성능 차이는 광고만큼 크지 않습니다. 이더리움과 최고의 체인 간의 성능 차이는 약 10-25배이며, 100배 또는 1000배가 아닙니다. 아무도 선형화된 VM 거래에서 그렇게 뛰어난 성능을 얻을 수 없습니다. 이는 더 많은 작업과 최적화가 필요합니다.
넷째, 진정한 고성능을 원한다면 EVM을 포기해야 합니다. 우리는 여기서 솔라나만 벤치마킹했지만, NEAR 및 Terra와 같은 다른 비 EVM L1도 더 높은 성능을 달성했습니다.
하지만 솔라나와 마찬가지로, 그들은 EVM을 둘러싼 도구와 생태계의 혜택을 누릴 수 없습니다. (비록 NEAR가 EVM과 호환되는 Aurora 샤드를 가지고 있고, 다른 L1이 유사한 가상화된 EVM 인스턴스를 개발하려고 시도하고 있지만.)
다섯째, 사용자들은 현재 비 이더리움 L1의 성능에 대해 그리 민감하지 않습니다. 그들은 생태계의 전반적인 강도, 좋은 사용자 경험 및 낮은 수수료에 더 관심이 있습니다. 이러한 블록체인은 현재 성능에서 경쟁하고 있지 않습니다. 왜냐하면 실제로 용량이 사용되지 않기 때문입니다. 드물게 발생하는 피크 기간, 예를 들어 IDO나 시장 붕괴 기간을 제외하고는 말입니다.
우리는 모든 주요 L1의 성능이 시간이 지남에 따라 향상될 것으로 예상합니다. 개발 팀이 전형적인 사용 패턴의 성능을 조정하는 데 점점 더 많은 시간을 할애할 것이기 때문입니다. 놀랍지 않게도 초기에는 이러한 블록체인 각각이 잘 최적화되지 않았습니다!
하지만 전반적으로, 제 인상은 이더리움이 스마트 계약 운영 체제의 MS-DOS라는 것입니다. 그러나 현재의 블록체인 시대는 우리를 Windows 95 시대에 데려왔습니다.
MS-DOS(왼쪽)에서 Windows 95(오른쪽)로
다음 세대 블록체인은 상당한 발전을 나타내지만, 주류 채택에 도달하기까지는 아직 갈 길이 멉니다.