Monad: 10,000 TPS를 달성한 EVM 호환 블록체인
EVM 호환 블록체인이 실제로 가스비를 1 센트 미만으로 유지하면서 초당 10,000 건의 트랜잭션을 처리할 수 있을까요? 메인넷 출시 두 달이 지난 지금, Monad 는 그것이 가능하다는 설득력 있는 사례를 만들어가고 있으며, DeFi 생태계가 이에 주목하고 있습니다.
Jump Trading 출신의 베테랑 Keone Hon 과 James Hunsaker 가 2023 년 초 Monad 구축에 나섰을 때, 그들은 수년 동안 이더리움 개발자들을 괴롭혀온 근본적인 질문에 직면했습니다. 왜 세계에서 가장 개발자 친화적인 블록체인이 동시에 가장 느린 블록체인 중 하나여야만 하는가? 그들의 해답인 EVM 블록체인의 트랜잭션 실행 방식에 대한 전면적인 재구상은 3 billion 의 기업 가치 평가, 그리고 출시 몇 주 만에 총 예치 자산 (TVL) $ 255 million 을 달성하며 그 가치를 증명하고 있습니다.
Monad 가 해결하고자 한 문제
이더리움은 초당 약 15 - 50 건의 트랜잭션을 처리합니다. 수요가 많은 시기에는 단순한 토큰 스왑에 대한 가스비가 $ 50 이상으로 치솟기도 합니다. 이는 불편한 절충안을 만듭니다. 가장 큰 생태계와 최고의 도구를 원하는 개발자는 열악한 성능을 감수해야 하고, 속도를 원하는 개발자는 EVM 호환성을 완전히 포기해야 합니다.
솔라나는 후자의 경로를 택하여 1,000 - 1,500 TPS 를 달성하는 커스텀 가상 머신을 구축했지만, 개발자들은 애플리케이션을 Rust 로 다시 작성하고 완전히 다른 계정 모델에 적응해야 했습니다. 이는 생태계 파편화로 이어졌습니다. 이더리움에서 작동하는 도구, 라이브러리 및 인프라가 솔라나에서는 작동하지 않으며 그 반대도 마찬가지입니다.
Monad 의 논지는 이러한 절충이 불필요하다는 것입니다. 병목 현상은 EVM 자체가 아니라 트랜잭션이 처리되는 방식에 있습니다. 바이트코드 수준의 EVM 호환성을 유지하면서 실행 방식을 근본적으로 재고함으로써, Monad 는 개발자들이 이더리움 생태계를 떠나도록 강요하지 않고도 솔라나와 같은 성능을 달성합니다.
10,000 TPS 를 가능하게 하는 5 가지 기술 혁신
Monad 의 성능은 전통적인 블록체인 설계의 서로 다른 병목 현상을 해결하는 5 가지 상호 연결된 아키텍처 혁신에서 비롯됩니다.
MonadBFT: 테일 포킹 (Tail-Forking) 문제 해결
Tendermint 와 같은 전통적인 비잔틴 장애 허용 (BFT) 합의 알고리즘은 블록을 확정하기 전에 3 단계의 통신이 필요합니다. HotStuff 의 최적화된 파생 모델을 기반으로 하는 MonadBFT 는 이를 2 단계로 줄이는 동시에 선형 통신 복잡성을 달성합니다.
더 중요한 것은, MonadBFT 가 다른 BFT 구현을 괴롭히는 "테일 포킹 문제"를 해결한다는 점입니다. 표준 프로토콜에서 악의적인 리더는 서로 다른 검증인에게 상충되는 블록을 제안하여 혼란과 지연을 초래할 수 있습니다. 타임아웃 시나리오 동안 MonadBFT 의 이차 통신은 일반적인 조건에서 1 초 미만의 최종성을 유지하면서 이러한 공격 벡터를 방지합니다.
결과적으로 400 ms 의 블록 시간과 약 800 ms 의 최종성 확정 시간을 제공하며, 이는 눈을 깜빡이는 것보다 빠릅니다.
비동기 실행: 합의와 상태 업데이트의 분리
이더리움에서는 검증인이 합의에 도달하기 전에 트랜잭션을 실행해야 합니다. 이는 병목 현상을 초래합니다. 트랜잭션 실행이 너무 오래 걸리면 전체 네트워크가 상태 업데이트를 기다리느라 속도가 느려집니다.
Monad 는 이 모델을 뒤집습니다. 검증인은 먼저 MonadBFT 를 통해 트랜잭션 순서에 합의한 다음, 별도의 파이프라인에서 비동기적으로 트랜잭션을 실행합니다. 즉, 느리고 복잡한 스마트 컨트랙트 작업이 블록 생성을 지연시킬 수 없습니다. 네트워크는 트랜잭션 복잡성에 관계없이 일관된 400 ms 블록 시간을 유지합니다.
낙관적 병렬 실행: 모든 CPU 코어 활용
Monad 의 속도를 가능하게 하는 핵심 통찰력은 블록 내의 대부분의 트랜잭션이 실제로는 서로 충돌하지 않는다는 점입니다.
당신이 Uniswap 에서 토큰을 스왑하고 제가 NFT 를 전송할 때, 우리의 트랜잭션은 완전히 다른 상태를 건드립니다. 이들이 동시에 실행되지 못할 이유가 없습니다. 기존 EVM 은 이를 순차적으로 처리하여 대부분의 CPU 코어를 유휴 상태로 둡니다.
Monad 의 낙관적 병렬 실행은 사용 가능한 모든 코어에서 독립적인 트랜잭션을 동시에 실행합니다. 시스템은 대부분의 트랜잭션이 충돌하지 않을 것이라는 "낙관적" 가정하에 작동합니다. 충돌이 발생하면 이를 감지하고 영향을 받은 트랜잭션을 다시 실행하며 원래 순서대로 결과를 적용합니다. 이는 이더리움의 엄격한 직렬 의미론 (serial semantics) 을 보존하면서 처리량을 획기적으로 향상시킵니다.
MonadDB: 블록체인을 위해 구축된 데이터베이스
상태 액세스는 종종 블록체인 실행의 진정한 병목 현상이 됩니다. 스마트 컨트랙트가 데이터를 읽거나 쓸 때마다 수 밀리초가 걸릴 수 있는 데이터베이스 작업이 트리거되는데, 이는 초당 수천 건의 트랜잭션을 처리할 때 영겁의 시간과 같습니다.
MonadDB 는 C++ 와 Rust 로 작성된 맞춤형 데이터베이스로, EVM 상태 액세스 패턴에 맞게 특별히 최적화되었습니다. RAM 압박을 최소화하는 동시에 SSD 처리량을 최대화하여 병렬 실행에 필요한 신속한 상태 읽기 및 쓰기를 가능하게 합니다.