---
id: 11
title: "단일 스레드 EVM이 TPS를 제한하는 이유: 혼잡의 역사와 실행 모델"
slug: evm-single-thread-bottleneck
date: 2026/08/22
summary: 이더리움의 주요 혼잡 사건은 하나의 설계 뿌리를 공유합니다. EVM이 트랜잭션을 한 번에 하나씩 실행한다는 점입니다. 이 글은 가스 한도 상향과 EIP-1559가 그 실행 모델을 바꾸지 못하는 이유, 그리고 확인 지연이 단일 스레드 한계를 증폭하는 방식을 설명합니다.
keywords: 단일 스레드 EVM,TPS 한계,가스 혼잡,EIP-1559,확인 지연
heroImage: /images/community-bg.png
---

퍼블릭 체인 성능 논쟁에서 TPS는 흔히 유일한 잣대로 취급됩니다. 이더리움 메인넷이 일상 조건에서 왜 오랫동안 초당 십수 건 수준에 머물렀는지 묻는다면, 답은 드물게 "하드웨어가 부족해서"가 아닙니다. 실행 모델 자체가 원인입니다. 이더리움 가상 머신은 다음 트랜잭션을 시작하기 전에 하나를 끝내도록 설계되었습니다. 이 제약은 네트워크 전체의 결정론적 재현을 사주는 대신, 처리량을 단일 스레드의 물리적 한계에 못 박습니다.

그 한계를 이해하는 것이 어느 순간의 TPS 숫자를 외우는 것보다 중요합니다. 이후 글들은 확장 지도와 병렬 실행 경로, 낙관적 동시성 제어를 다룹니다. 이 글은 먼저 문제를 고정합니다. 단일 스레드 EVM이 왜 TPS를 제한하는지, 역사적 혼잡이 그것을 어떻게 거듭 확인시켰는지, 그리고 가스 한도 상향도 EIP-1559도 실행 모델을 고치지 못하는 이유입니다.

## 직렬 실행은 버그가 아니라 결정성의 값이다

EVM 의미론은 블록 안의 트랜잭션이 정규 순서로 실행될 것을 요구합니다. 한 트랜잭션의 상태 쓰기가 끝난 뒤에야 다음 트랜잭션이 상태를 읽기 시작할 수 있습니다. 장점은 즉각적입니다. 같은 순서를 재현하는 정직한 노드는 모두 같은 상태 루트에 도달합니다. 합의는 트랜잭션 순서와 블록 내용에 대해서만 일치하면 되고, 병렬 인터리빙이 쓰기를 어떻게 해소해야 하는지까지 합의할 필요가 없습니다.

비용도 똑같이 직접적입니다. 현대 서버는 수십 개의 논리 코어를 제공하지만, 고전적 EVM 노드는 여전히 핫 경로에서 대략 "코어 하나가 일하고 나머지는 구경하는" 모습입니다. 서로 무관한 두 이체, 즉 A가 B에게, C가 D에게 보내는 거래는 직렬 모델에서 함께 진행될 수 없습니다. 스케줄러가 어떤 트랜잭션이든 전역 상태 트리의 어느 구석이든 건드릴 수 있다고 가정하기 때문입니다. 머클 패트리시아 트리는 계정과 스토리지 슬롯을 하나의 거대한 구조에 매달아, 사전 의존성 정보 없이는 병렬화를 거부하는 엔지니어링 습관을 강화합니다.

구조적 격차가 뒤따릅니다. 대역폭과 디스크 I/O는 수직으로 확장할 수 있지만, 실행 처리량은 "한 번에 하나"에 묶여 있습니다. 수요가 그 단단한 천장 아래에 머물 때는 사용자가 거의 알아차리지 못합니다. 수요가 천장을 넘으면 초과 트랜잭션이 멤풀에 쌓이고 수수료 시장이 이를 배분합니다. 이것이 혼잡의 기술적 정의입니다.

## 역사적 혼잡: 같은 병, 다른 증상

2017년 크립토키티는 널리 기록된 첫 대규모 혼잡 사례였습니다. 정점에서 고양이 게임이 온체인 트랜잭션의 상당 부분을 차지했고, 대기 큐가 폭증했으며, 평범한 이체가 몇 초에서 몇 시간으로 늘어지고 가스 가격이 수백 gwei까지 치솟았습니다. 사후 분석은 흔히 "너무 인기를 끈 게임"을 탓했습니다. 더 정확히는 핫 애플리케이션이 이미 존재하던 용량 천장을 드러낸 것입니다.

대본은 반복되었습니다. 2020~2021년 DeFi 조합성이 밀집하던 시기에는 가스가 오랫동안 높게 유지되었습니다. 2022년 Otherside 같은 토지 증서형 NFT 민팅에서는 짧은 입찰 경쟁이 수수료를 극단으로 밀어붙였고, 소액 이체에 천문학적 수수료가 견적되는 사례까지 나왔습니다. 방아쇠는 게임, 이자 농사, NFT 러시로 달랐지만 큐잉 논리는 같았습니다. 실행 엔진은 초당 소화할 수 있는 "유용한 연산"의 양이 정해져 있고, 초과 수요는 더 높은 입찰이 더 싼 트랜잭션을 밀어내는 방식으로 배분됩니다.

이 사건들은 우선순위 가스 경매가 고통을 증폭하는 방식도 보여주었습니다. 초기 최고가 입찰 모델에서는 희소한 기회(민팅 슬롯, 차익거래 창)가 연쇄 입찰을 촉발해 네트워크 전체의 수수료 수준을 끌어올렸고, 평범한 사용자가 남의 핫스팟 값을 치렀습니다. 혼잡은 "느림"만이 아니라 "비쌈"이며, 비용은 지연만으로 밀려났을 때보다 한계 사용자를 더 일찍 오프체인으로 내몹니다.

## 가스 한도: 차선 하나를 넓히는 것, 차선을 늘리는 것이 아니다

이더리움 커뮤니티는 더 많은 용량을 짜내기 위해 블록 가스 한도를 거듭 올렸습니다. 한도가 높아지면 각 블록이 더 많은 연산을 담을 수 있어 단기적으로 TPS가 오를 수 있습니다. 그러나 그것은 여전히 직렬 실행 안에서 일어납니다. 고속도로를 병렬 차선으로 바꾸는 것이 아니라 단일 차선을 넓히는 것입니다.

이 경로에는 분명한 수확 체감과 외부 비용이 있습니다. 가스 한도가 높을수록 풀 노드가 단위 시간에 실행·검증·저장해야 하는 상태 변경이 늘어나고, 동기화와 하드웨어 요건도 함께 올라갑니다. "확장"을 "가스 한도를 영원히 올리는 것"으로 취급하면 결국 탈중앙화된 검증을 일반 운영자가 감당할 수 있는 범위 밖으로 밀어냅니다. 가스 한도 조정은 유용한 운영 손잡이이지 실행 모델의 대체물이 아닙니다. 그것은 "단일 스레드 제약 아래 더 많은 작업을 어떻게 넣을까"에 답하지, "충돌 없는 많은 트랜잭션을 어떻게 동시에 진행할까"에 답하지 않습니다.

퍼블릭 모니터의 이더리움 TPS 수치, 즉 일상 조건의 십수 건, 더 높은 단기 피크, 그보다 더 높은 이론적 천장은 같은 틀에 속합니다. 정확한 소수점은 시점과 측정 창에 따라 움직입니다. 중요한 것은 자릿수입니다. 단일 스레드 모델은 "글로벌 정산 계층" 서사에 비해 좁게 느껴지는 범위에 천장을 못 박고, 일상 운영은 이론적 피크보다 몇 배 아래에 있는 경우가 많습니다.

## EIP-1559: 수수료 형성, 실행 폭이 아니다

2021년부터 적용된 EIP-1559는 수수료 시장을 재설계했습니다. 기본 수수료가 블록 활용도에 따라 조정되고 소각되며, 사용자는 더 빠른 포함을 위해 우선순위 수수료를 더합니다. 연구 동기에는 최고가 입찰 경매에서의 체계적 초과 지불 완화, 블록 내 견적의 격한 변동 억제, 기본 수수료 자체에서 채굴자/검증인이 추출하는 능력 축소가 있었습니다.

실제로 EIP-1559는 수수료 예측 가능성을 높이고 "항상 혼잡한 것처럼 입찰하는" 관행을 완화했습니다. 직렬 실행의 물리적 처리량을 올리겠다고 약속한 적은 없습니다. 블록이 계속 가득 차면 기본 수수료가 오르고 초과 수요를 시장 밖으로 짜냅니다. 용량 확장이 아니라 가격 발견입니다. EIP-1559를 "확장 솔루션"으로 읽는 것은 흔한 오해이며, 더 나은 표현은 "고정된 실행 용량 아래에서의 더 깔끔한 큐잉과 가격 책정"입니다.

우선순위 수수료와 이후의 MEV 관련 메커니즘도 트랜잭션이 어떻게 정렬되고 정렬 가치가 어떻게 포착되는지를 다루며, 여전히 실행 단계가 직렬로 끝난다고 가정합니다. 정렬 계층이 아무리 정교해져도 실행이 트랜잭션을 하나씩 소화하는 동안에는 단단한 상한이 사라지지 않습니다.

## 확인 지연: TPS가 가리는 축

TPS는 단위 시간에 몇 건이 끝나는지를 묻고, 확인 지연은 사용자가 브로드캐스트한 뒤 결과가 "되돌리기 어려울 만큼 신뢰할 수 있게" 될 때까지 얼마나 기다리는지를 묻습니다. 둘은 상관되지만 동등하지 않습니다. 평균 TPS는 괜찮아 보이는데 멤풀 백로그가 단일 트랜잭션 대기를 제품 허용 범위 밖으로 늘어질 수 있습니다.

이더리움은 합의 최종성 의미론도 겹쳐 놓습니다. 블록 간격, 최종성 가젯, 재구성 위험이 모두 사용자가 체감하는 "확정"에 들어옵니다. 실행 계층이 혼잡해지면 트랜잭션이 팬딩에 머물 수 있고, 애플리케이션 타임아웃과 브리지 창, 마켓메이커 재고 위험이 함께 증폭됩니다. 결제와 고빈도 상호작용에서는 지연 급등이 평균 TPS보다 제품에 더 큰 타격을 주는 경우가 많습니다.

따라서 단일 스레드 병목의 전체 그림은 이렇습니다. 처리량 천장은 시스템이 흡수할 수 있는 양을, 큐잉과 수수료는 누가 들어오는지를, 확인 지연은 "들어옴"이 얼마나 걸리는지를 결정합니다. 뿌리는 같고 증상만 다릅니다. 어떤 "확장" 주장도 각 축에서 따로 평가되어야 합니다.

## 결론: 바꿔야 할 것은 실행 모델이다

역사적 혼잡과 가스 한도 상향, EIP-1559를 나란히 놓으면 결론이 또렷해집니다. 수수료 시장과 블록 파라미터는 희소성을 관리할 뿐 그 원인을 제거하지 않습니다. EVM이 전역 상태와 하나씩 직렬 실행이라는 고전적 형태를 유지하는 한 TPS에는 단단한 천장이 있고, 핫 애플리케이션이 주기적으로 네트워크 전체를 높은 수수료와 높은 지연으로 끌어내릴 것입니다.

그 천장을 깨는 일은 문제를 다시 정의합니다. 검증 가능한 결정성을 유지하면서 충돌 없는 트랜잭션을 어떻게 병렬로 실행할 것인가? 답은 하나가 아닙니다. 결정론적 사전 선언, 낙관적 동시성 제어, 객체 모델 등이 있습니다. 이더리움 바이트코드와 툴링 호환성을 계속 원하는 프로젝트는 선택지가 더 좁습니다. 그 질문들은 확장 지도와 병렬 경로 논의에 속합니다. 이 글에 필요한 전제는 하나입니다. 진짜 해결의 대상은 가스 손잡이를 한 번 더 돌리는 것이 아니라 실행 모델입니다.

## 더 읽기

- 다음 글: ["블록체인 확장 지도: L1 병렬화, L2, 샤딩, DA가 각각 해결하는 것"](/ko/blog/blockchain-scaling-map)
- 관련 글: ["병렬 실행의 세 가지 경로: 결정론적 스케줄링, 낙관적 OCC, 객체 모델"](/ko/blog/parallel-execution-approaches), ["성능 지표 용어집: TPS, BPS, 확인 지연, 최종성, 충돌률"](/ko/blog/performance-metrics-glossary)
