
비탈릭, 머스크에 응답하다: 블록체인 확장성 향상은 간단하지 않다
글: Vitalik Buterin
번역: Alyson
최근 테슬라 창업자인 머스크가 트위터를 통해 도지코인이 이상적인 상황에서 블록 확인 시간을 10배 단축하고, 블록 크기를 10배 늘리며 수수료를 100배 낮출 수 있다면 쉽게 승리할 수 있을 것이라고 밝혔다.
이 발언은 암호화폐 업계의 많은 KOL들로부터 비판을 받았으며, 이에 대해 이더리움 창시자 비탈릭 부테린(Vitalik)도 최근 글을 발표하며 단순히 블록체인 네트워크 파라미터를 높이는 것이 오히려 더 많은 문제를 초래할 수 있다고 지적했다. 또한 블록체인 성능 향상이 직면하는 기술적 제약과 한계를 상세히 설명했다. 본문은 TechFlow에서 이를 번역·편집한 것이다.
블록체인의 확장성은 어디까지 갈 수 있을까? 마스크가 말한 것처럼 ‘블록 확인 시간을 10배 빠르게 하고, 블록 크기를 10배 늘이며 수수료를 100배 줄이는’ 것이 정말 가능할까? 그렇게 해도 극심한 중앙집중화를 유발하지 않고, 블록체인의 핵심 속성을 해치지 않을 수 있을까? 만약 불가능하다면 어느 정도까지는 가능한가? 합의 알고리즘을 바꾸면 어떻게 될까? 더 중요한 것은, ZK-SNARK나 샤딩(sharding) 같은 기술을 도입하면 어떤 일이 벌어질까?

사실 샤딩 여부와 관계없이 블록체인의 확장성을 제한하는 중요한 기술적 요소들이 존재한다. 이러한 제약은 대부분 해결책이 있지만, 그 해결책조차도 한계를 가진다. 이번 글에서는 그러한 문제들을 살펴본다.
1. 노드는 충분히 분산되어야 한다
오전 2시 35분, 세계 반대편에 있는 공동 운영자가 급한 전화를 걸어온다. 당신이 함께 운영하는 채굴풀(또는 스테이킹 풀)에 문제가 생겼다는 것이다. 약 14분 전부터 당신의 채굴풀과 몇몇 다른 풀이 여전히 전체 네트워크의 79%를 유지하는 블록체인에서 분리되었다고 한다. 당신의 노드에 따르면 다수의 체인에 포함된 블록들은 유효하지 않다. 잔액 오류가 발생했는데, 핵심 블록이 450만 개의 추가 토큰을 알려지지 않은 주소로 잘못 배분한 것으로 보인다.
1시간 후, 당신은 다른 두 개의 소규모 채굴풀과 텔레그램에서 대화 중이다. 결국 누군가 트위터 링크를 붙여넣는데, 그 내용은 “새로운 체인상 지속 가능한 프로토콜 개발 기금을 발표합니다”라는 문구로 시작된다.
아침이 되자 트위터와 커뮤니티 포럼에서는 논쟁이 벌어지고 있다. 하지만 이미 그 450만 토큰 중 상당수가 다른 자산으로 변환되었고 수십억 달러 규모의 DeFi 거래가 이루어졌다. 전체 합의 노드의 79%, 그리고 주요 블록 탐색기와 경량 지갑 노드들은 모두 새로운 체인을 따르고 있다.
새로운 개발 기금이 특정 프로젝트를 지원할 수도 있고, 혹은 주요 거래소들이 이를 장악했을 수도 있다. 그러나 결과가 무엇이든, 이 기금은 실질적으로 기정사실이 되었으며 일반 사용자는 이를 되돌릴 수 없다.
당신의 블록체인에서도 이런 일이 일어날 수 있는가? 당신의 블록체인 커뮤니티 내 엘리트 집단—채굴풀, 블록 탐색기, 노드 운영자들—은 매우 잘 연결되어 있을 수 있다. 아마도 그들은 모두 같은 텔레그램 채널과 위챗 그룹에 있을 것이다. 만약 그들이 자신들의 이익을 위해 프로토콜 규칙을 갑작스럽게 변경하려 한다면 실제로 그렇게 할 수 있다. 이러한 사회적 공격을 무력화하는 유일한 신뢰할 수 있는 방법은 수동적 방어, 즉 실제로 분산된 사용자들이다.
모든 사용자가 자신의 노드를 실행하며 블록체인을 검증하고, 프로토콜 규칙을 위반하는 블록을 자동으로 거부한다면(채굴자나 이해관계자의 90% 이상이 지지하더라도) 이야기는 어떻게 전개될까? 모든 사용자가 검증 노드를 실행한다면 공격은 곧 실패할 것이다. 일부 채굴풀과 거래소는 분리될 것이며 어리석게 보일 것이다.
하지만 일부 사용자라도 노드를 실행한다면 공격은 완전한 성공을 거두지 못한다. 대신 혼란이 발생하고, 각 사용자는 서로 다른 블록체인을 보게 된다. 따라오는 시장 불안과 지속적인 분열 가능성은 공격자의 이득을 크게 줄일 것이다. 장기간의 갈등을 감수해야 한다는 생각 자체가 대부분의 공격을 억제할 것이다.

패러다임(Paradigm) 연구 책임자 하수(Hasu)의 트위터
만약 당신의 커뮤니티가 37개의 노드 운영 프로그램과 8만 개의 패시브 리스닝 프로그램으로 구성되어 서명과 블록 헤더만 확인한다면, 공격자는 승리할 것이다. 하지만 커뮤니티의 모든 사람이 노드를 실행한다면 공격자는 실패할 것이다. 우리는 공동체가 사회적 공격에 저항할 수 있는 정확한 임계점을 모른다. 그러나 한 가지는 분명하다: 노드는 많을수록 좋고, 적을수록 나쁘며, 우리는 최소 수십 개에서 수백 개 이상의 노드가 필요하다.
2. 노드 작업의 제한 요소는 무엇인가?
노드를 실행할 수 있는 사용자 수를 극대화하기 위해, 우리는 일반적인 소비자용 하드웨어에 초점을 맞춘다. 전체 노드가 처리할 수 있는 트랜잭션 양에는 세 가지 주요 제약이 있다:
-
처리 능력(CPU): 노드를 안전하게 운영하는 데 필요한 CPU 사용률은 얼마인가?
-
대역폭(Bandwidth): 현재 인터넷 연결 현실을 고려할 때, 블록 하나에 얼마나 많은 바이트를 담을 수 있는가?
-
저장 공간(Storage): 사용자에게 요구할 수 있는 디스크 저장 용량은 몇 GB인가? 또 읽기 속도는 얼마나 빨라야 하는가? (HDD로 충분한가, 아니면 SSD가 필요한가?)
많은 사람들이 "간단한" 기술만으로 블록체인 확장성이 무한하다고 잘못 생각하는데, 이는 위 숫자들에 대한 과도한 낙관에서 비롯된다. 각각의 제약 요소를 차례로 살펴보자:
1) 처리 능력
잘못된 답: CPU의 100%를 블록 검증에 사용할 수 있다.
올바른 답: CPU의 약 5~10%만 블록 검증에 사용할 수 있다.
이 비율이 매우 낮은 이유는 다음과 같은 네 가지 때문이다:
-
DoS 공격 가능성에 대비한 안전 마진이 필요하다 (공격자가 코드 취약점을 이용해 정상보다 훨씬 오래 걸리는 거래를 생성할 수 있음);
-
노드가 오프라인 상태였다가도 다시 온라인이 되면 블록체인 동기화가 가능해야 한다. 예를 들어 1분간 네트워크에서 끊어졌다면, 몇 초 내에 따라잡아야 한다;
-
노드를 실행한다고 해서 배터리가 금방 닳거나 다른 앱들이 느려져선 안 된다;
-
노드는 블록 생성 외에도 p2p 네트워크에서 들어오는 트랜잭션 및 요청을 검증하고 응답하는 등의 작업도 수행해야 한다.
최근까지 대부분의 사람들은 "왜 5~10%뿐인가?"라는 질문에 PoW 블록이 무작위로 생성되기 때문에 블록 검증 시간이 길어지면 동시에 여러 블록이 생성될 위험이 있다는 점에 주목했다.
이 문제를 해결하는 다양한 방법이 있다 (예: Bitcoin NG 또는 지분 증명(PoS) 사용). 그러나 이러한 해결책들은 다른 네 가지 문제는 해결하지 못하므로, 사람들이 처음 생각했던 만큼의 확장성 향상을 가져오지 못한다.
병렬 처리도 마법의 해결책이 아니다. 겉보기에 단일 스레드로 작동하는 블록체인 클라이언트조차도 이미 병렬화되어 있다. 예를 들어 서명 검증은 한 스레드에서, 실행은 다른 스레드에서, 트랜잭션 풀 로직은 별도의 백그라운드 스레드에서 처리된다. 그러나 모든 스레드의 사용률이 100%에 가까울수록 노드 운영 에너지 소비는 증가하며, DoS 공격에 대한 안전 마진은 줄어든다.
2) 대역폭
잘못된 답: 2~3초마다 10MB 데이터 블록을 생성하면 대부분의 사용자 인터넷 속도가 >10MB/초이므로 당연히 처리 가능하다.
올바른 답: 아마도 12초마다 1~5MB 크기의 블록을 처리할 수 있을 것이며, 그것도 어렵다.
현재 인터넷 연결의 대역폭에 대해 광고되는 수치를 자주 듣는다: 보통 100Mbps 또는 1Gbps라고 한다. 그러나 광고된 대역폭과 실제 대역폭 사이에는 큰 차이가 있다:
-
"Mbps"는 초당 백만 비트(bit)를 의미하며, 비트는 바이트의 1/8이므로 광고된 값을 8로 나누어야 바이트 단위로 환산된다;
-
인터넷 제공업체들도 종종 거짓말을 한다;
-
같은 인터넷 연결을 여러 앱이 공유하므로 노드가 전체 대역폭을 독점할 수 없다;
-
P2P 네트워크 자체가 필연적으로 오버헤드를 발생시킨다: 노드는 종종 동일한 블록을 여러 번 다운로드하고 재업로드하며, 블록에 포함되기 전 mempool을 통해 트랜잭션도 미리 방송한다.
스타크웨어(Starkware)가 2019년 실험을 진행했을 때, 트랜잭션 가스비 절감 덕분에 처음으로 500KB 블록을 공개했지만, 실제로 몇몇 노드는 이 크기의 블록을 처리하지 못했다.
그 이후로 블록체인의 대용량 블록 처리 능력은 향상되었고 앞으로도 계속 개선될 것이다. 하지만 우리가 아무리 노력해도, MB/초 단위의 평균 대역폭을 순진하게 계산해 1초 지연을 감수할 수 있다고 믿는 일은 불가능하다.
3) 저장 공간
잘못된 답: 10TB.
올바른 답: 512GB.
예상했겠지만, 여기서도 이론과 현실의 차이가 문제다. 이론상으로는 아마존에서 8TB SSD를 살 수 있다. 실제로는 이 글을 작성하는 데 사용한 노트북은 512GB이며, 사람들이 직접 하드웨어를 사라면 게을러지거나(또는 800달러짜리 8TB SSD를 살 수 없어서) 중심화된 서비스 제공업체를 선택할 것이다.
또한 블록 노드를 고용량 저장장치에 설치하더라도, 높은 활동량으로 인해 저장장치가 금방 망가져 새 장치를 계속 구매해야 할 수 있다.
또한 저장 용량은 새로운 노드가 네트워크에 참여할 때 동기화하는 데 걸리는 시간을 결정한다. 기존 노드가 저장하는 모든 데이터는 새로운 노드도 다운로드해야 한다. 초기 동기화 시간(및 대역폭)은 사용자가 노드를 운영하는 주요 장벽 중 하나다. 이 글을 쓰는 시점에서 새로운 geth 노드를 동기화하는 데 약 15시간이 걸렸다.
3. 샤딩 블록체인의 위험
현재 이더리움 블록체인에서는 많은 사용자에게 노드 운영이 이미 도전 과제다. 따라서 병목 현상이 발생한다. 코어 개발자들이 가장 걱정하는 것은 저장 용량이다. 따라서 현재로서는 계산 및 데이터 병목 해결 노력이나 합의 알고리즘 변경조차도 가스 리밋을 크게 늘리기 어렵다. 이더리움의 가장 큰 DoS 취약점을 해결하더라도 가스 리밋은 20% 정도만 증가할 수 있다.
저장 용량 문제를 해결하는 유일한 방법은 상태 없는(stateless) 아키텍처와 상태 만료(state expiry)다. 상태 없기는 영구 저장소 없이도 블록체인을 검증할 수 있는 노드 유형을 가능하게 하며, 상태 만료는 최근 접근되지 않은 상태를 삭제해 사용자가 수동으로 갱신 증명을 제공하도록 강제한다.
이 두 방식은 오랫동안 연구되어 왔으며, 상태 없는 개념의 실현 가능성 검증(PoC)도 이미 시작되었다. 이 두 가지 개선을 결합하면 우려를 크게 완화하고 가스 리밋을 크게 늘릴 수 있다. 그러나 상태 없기와 상태 만료를 시행한 후에도 가스 리밋은 안전하게 약 3배 정도만 증가할 수 있으며, 그 이상은 다른 제약이 주요 원인이 된다.
샤딩은 위 제약을 근본적으로 회피한다. 샤딩은 블록체인에 포함된 데이터와 개별 노드가 처리하고 저장해야 하는 데이터를 분리한다. 노드가 직접 다운로드하고 실행하는 대신, 고급 수학과 암호 기술을 사용하여 간접적으로 블록을 검증한다.
따라서 샤딩된 블록체인은 비샤딩 블록체인보다 훨씬 높은 트랜잭션 처리량을 안전하게 가질 수 있다. 이는 효율적이고 간단한 완전 검증 방식을 만들기 위해 많은 암호학적 지혜가 필요하며, 유효하지 않은 블록을 성공적으로 거부해야 한다. 하지만 이것은 가능하다: 이론은 이미 성숙했으며, 사양 초안을 기반으로 한 개념 검증이 진행 중이다.

이더리움은 2차원 샤딩(quadratic sharding)을 계획 중이다. 노드는 개별 샤드와 비콘 체인(각 샤드에 대해 일정량의 작업을 수행해야 함)을 모두 처리해야 하므로, 총 확장성은 제한된다. 샤드가 너무 크면 노드가 하나의 샤드를 처리할 수 없고, 샤드가 너무 많으면 비콘 체인을 처리할 수 없다. 이 두 제약의 곱이 상한선을 형성한다.
큐빅 샤딩(cubic sharding)이나 지수 샤딩(exponential sharding)도 상상할 수 있다. 이런 설계에서는 데이터 가용성 샘플링(data availability sampling)이 훨씬 복잡해지지만, 기술적으로는 가능하다. 그러나 이더리움은 2차원 이상으로 나아가지 않을 것이다. 거래 처리를 위한 샤딩은 실제로 추가적인 확장성 이득을 가져오지 못하며, 그 대신 위험이 매우 커지기 때문이다.
그렇다면 어떤 위험이 있을까?
1) 최소 사용자 수
비샤딩 블록체인은 단 한 명의 사용자라도 참여하면 운영할 수 있다. 하지만 샤딩 블록체인은 그렇지 않다. 어느 하나의 노드도 전체 블록체인을 처리할 수 없으므로, 충분한 수의 노드가 함께 작업해야 한다. 예를 들어 각 노드가 초당 50건의 트랜잭션(TPS)을 처리할 수 있고, 블록체인이 초당 1만 건을 처리해야 한다면, 최소 200개 이상의 노드가 필요하다.
만약 어느 순간 노드 수가 200개 미만이 되면, 노드는 블록체인을 따라가지 못하거나 유효하지 않은 블록을 감지하지 못할 수 있으며, 노드 소프트웨어 설정 방식에 따라 여러 가지 부정적인 상황이 발생할 수 있다.
샤딩 블록체인의 용량을 10배 늘리면 최소 노드 수도 10배 증가한다. 그렇다면 왜 용량을 조금씩 시작해서 사용자가 많이 몰릴 때 늘리고, 사용자가 줄면 다시 줄이는 방식을 취하지 않는가? 그러면 실제 필요에 맞춰 조절할 수 있지 않을까?
여기에는 다음과 같은 문제가 있다:
-
블록체인 자체는 유일한 노드 수를 정확히 감지할 수 없으므로, 샤드 수를 감지하고 설정하기 위해某种 governance가 필요하다. 용량 초과는 분열과 갈등의 원인이 될 수 있다.
-
많은 사용자가 갑자기 의도치 않게 탈퇴하면 어떻게 할 것인가?
-
포크(fork) 시작에 필요한 최소 노드 수를 늘리면, 악의적인 인수를 방어하기가 더 어려워진다.
거의 확실하게 최소 노드 수는 1000을 넘지 않는 것이 좋다. 따라서 수백 개 이상의 샤드를 가진 블록체인을 정당화하기는 어렵다.
2) 역사적 데이터 접근성
사용자들이 진정으로 소중히 여기는 블록체인의 특성 중 하나는 영구성이다. 회사가 파산하거나 생태계를 유지할 수 없게 되면 서버에 저장된 디지털 자산은 10년 후에 삭제될 것이다. 반면 이더리움의 NFT는 영원히 남는다.
맞다. 2371년에도 여전히 당신의 크립토킷츠를 다운로드하고 조회할 수 있을 것이다.
하지만 블록체인의 용량이 너무 높아지면 모든 데이터를 저장하는 것이 어려워진다. 어느 시점에서 큰 위험이 발생하면, 역사의 일부를 저장할 사람이 없을 수 있다.
이 위험은 쉽게 정량화할 수 있다. 블록체인의 데이터 용량(MB/초)에 30을 곱하면 연간 TB 단위의 저장 데이터량이 나온다. 현재의 샤딩 계획은 약 1.3MB/초로 연간 약 40TB다. 이를 10배 늘리면 연 400TB가 된다.
데이터에 접근할 수 있을 뿐 아니라 편리하게 도달할 수 있도록 하려면 메타데이터(예: 롤업 관련 압축 해제 등)도 필요하므로 연간 약 4PB, 10년 후에는 40PB가 필요하다. 이것이 대부분의 샤딩 블록체인이 안전하게 도달할 수 있는 합리적인 상한선이다.
따라서 이 두 가지 차원에서 보면, 이더리움의 샤딩 설계는 사실상 합리적인 최대 안전값에 거의 근접하도록 매개변수를 설정한 것으로 보인다. 약간 늘릴 수는 있지만, 크게 늘리는 것은 어렵다.
4. 결론
블록체인 확장성을 시도하는 방법은 두 가지다: 기본적인 기술적 개선과 단순한 파라미터 증가. 먼저 파라미터 증가는 매력적으로 보인다. 메모지에 수학 계산을 하면, ZK-SNARK, 롤업, 샤딩 없이도 가정용 노트북이 초당 수천 건의 트랜잭션을 처리할 수 있다고 쉽게 납득할 수 있다. 하지만 불행히도 이 접근법은 근본적으로 결함이 있으며, 그 이유는 매우 미묘하다.
블록체인 노드를 운영하는 컴퓨터는 블록체인 검증에 CPU의 100%를 소모할 수 없다. 예기치 못한 DoS 공격에 대비해 큰 안전 마진이 필요하며, 메모리 풀에서 트랜잭션을 처리하는 등의 여분의 처리 능력도 필요하다. 또한 사용자는 노드를 실행하면서 컴퓨터가 다른 앱을 사용할 수 없게 되는 것을 원하지 않는다.
대역폭 역시 오버헤드가 있다: 10MB/s 연결이라 해서 초당 10MB 블록을 만들 수 있는 것은 아니다. 최대 12초마다 1~5MB 정도가 한계이며, 저장 공간과 마찬가지다. 노드 운영을 위한 하드웨어 사양을 높이거나 특정 참여자에게만 노드 운영을 제한하는 것은 해결책이 아니다. 탈중앙화된 블록체인에서는 일반 사용자가 노드를 운영할 수 있고, 이를 위한 일반적인 문화가 있어야 한다.
기본적인 기술적 개선은 분명 효과가 있다. 현재 이더리움의 주요 병목은 저장 용량이며, 상태 없기와 상태 만료가 이를 해결해 약 3배까지 가스 리밋을 늘릴 수 있다(하지만 300배 이상은 불가능하다). 샤딩 블록체인은 더 멀리 나아갈 수 있다. 왜냐하면 개별 노드가 모든 트랜잭션을 처리할 필요가 없기 때문이다.
하지만 그래도 용량에는 한계가 있다: 용량이 증가할수록 최소 노드 수가 늘어나며, 아카이브 체인의 비용(누군가가 관리하지 않으면 데이터 유실 위험이 커짐)도 증가한다.
하지만 너무 걱정할 필요는 없다. 이 제약들은 충분히 높아서 블록체인이 완전히 안전한 상태에서 초당 백만 건 이상의 트랜잭션을 처리할 수 있다. 하지만 이를 위해서는 블록체인의 탈중앙화를 해치지 않도록 많은 노력이 필요하다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














