블록체인 확장성의 한계
저자: Vitalik Buterin
원제목: 《블록체인 확장성의 한계》
발표 시간: 2021년 5월 23일
우리는 블록체인의 확장성을 얼마나 높일 수 있을까요? Elon Musk가 말한 것처럼 "블록 시간은 10배 빨라지고, 블록 크기는 10배 커지며, 수수료는 100배 줄어들 수 있을까요?" 이는 극단적인 중앙집중화를 초래하고 블록체인의 본질적인 속성을 위반하지 않고 가능할까요? 만약 대답이 부정적이라면, 우리는 어떤 수준에 도달할 수 있을까요? 공식 알고리즘을 변경하면 어떻게 될까요? 더 중요한 것은, ZK-SNARK 또는 샤딩과 같은 기능을 도입하면 어떻게 될까요? 이론적으로 샤딩 블록체인은 지속적으로 샤드를 추가할 수 있는데, 정말 그렇게 할 수 있을까요?
사실, 샤딩을 사용하든 사용하지 않든 블록체인의 확장성을 제한하는 중요한 기술적 요소들이 존재합니다. 많은 경우에 해결책이 있지만, 해결책이 있더라도 한계가 존재합니다. 이 글에서는 이러한 문제들 중 많은 것을 탐구할 것입니다.
단순히 매개변수를 높인다고 해서 문제가 해결되는 것처럼 보입니다. 하지만 우리는 그로 인해 어떤 대가를 치르게 될까요?
일반 사용자가 노드를 운영하는 것은 블록체인의 탈중앙화에 필수적입니다
상상해 보세요, 새벽 2시가 넘었을 때, 당신은 세계의 다른 쪽에서 당신의 채굴 풀(스테이킹 풀)을 운영하는 사람으로부터 긴급 호출을 받습니다. 약 14분 전부터 당신의 풀과 몇몇 다른 사람들이 체인에서 분리되었고, 네트워크는 여전히 79%의 해시 파워를 유지하고 있습니다. 당신의 노드에 따르면, 다수의 체인 블록은 유효하지 않습니다. 이때 잔액 오류가 발생했습니다: 블록이 450만 개의 추가 토큰을 알 수 없는 주소에 잘못 할당한 것처럼 보입니다.
한 시간 후, 당신과 같은 사고를 겪은 두 명의 작은 채굴 풀 참가자, 몇 개의 블록 탐색기 및 거래소 관계자가 채팅방에서 "새로운 체인 지속 가능성 프로토콜 개발 기금을 발표합니다"라는 트위터 링크를 붙여 놓은 것을 봅니다.
아침이 되자, 관련 논의는 트위터와 검열 없는 커뮤니티 포럼에 널리 퍼졌습니다. 그러나 그때 450만 개의 토큰 중 상당 부분은 이미 체인에서 다른 자산으로 전환되었고 수십억 달러의 DeFi 거래가 이루어졌습니다. 79%의 합의 노드와 모든 주요 블록체인 탐색기 및 경량 지갑의 엔드포인트는 이 새로운 체인을 따랐습니다. 아마도 새로운 개발자 기금이 일부 개발에 자금을 지원할 것이고, 또는 모든 것이 주요 채굴 풀, 거래소 및 그들의 연줄에 의해 흡수될 것입니다. 그러나 결과가 어떻게 되든, 그 기금은 사실상 기정사실이 되었고 일반 사용자는 저항할 수 없었습니다.
어쩌면 이런 주제를 다룬 영화가 있을지도 모릅니다. 아마도 MolochDAO나 다른 조직이 자금을 지원할 것입니다.
이런 상황이 당신의 블록체인에서 발생할 수 있을까요? 당신이 속한 블록체인 커뮤니티의 엘리트들, 즉 채굴 풀, 블록 탐색기 및 호스팅 노드는 잘 조정될 가능성이 높으며, 그들은 아마도 같은 텔레그램 채널과 위챗 그룹에 있을 것입니다. 만약 그들이 정말로 이익을 위해 갑자기 프로토콜 규칙을 수정하고자 한다면, 그들은 그런 능력을 가질 수 있습니다. 이더리움 블록체인은 10시간 내에 합의 실패를 완전히 해결했으며, 만약 단일 클라이언트 구현의 블록체인이라면, 코드 변경을 수십 개의 노드에 배포하는 것만으로도 더 빠르게 클라이언트 코드 변경을 조정할 수 있습니다. 이러한 사회적 협력 공격에 저항할 수 있는 유일한 신뢰할 수 있는 방법은 "수동 방어"이며, 이 힘은 탈중앙화된 집단인 사용자에게서 나옵니다.
상상해 보세요, 만약 사용자가 블록체인의 검증 노드를 운영하고(직접 검증하든 간접 기술을 사용하든) 프로토콜 규칙을 위반하는 블록을 자동으로 거부한다면, 심지어 90% 이상의 채굴자나 스테이커가 이러한 블록을 지지하더라도 이야기는 어떻게 전개될까요?
모든 사용자가 검증 노드를 운영한다면, 공격은 곧 실패할 것입니다: 일부 채굴 풀과 거래소가 분기할 것이고, 전체 과정에서 매우 어리석어 보일 것입니다. 그러나 단지 몇몇 사용자만 검증 노드를 운영하더라도 공격자는 큰 승리를 거두지 못할 것입니다. 반대로, 공격은 혼란을 초래하고, 서로 다른 사용자들은 서로 다른 블록체인 버전을 보게 될 것입니다. 최악의 경우, 뒤따르는 시장 공황과 지속적인 체인 분기는 공격자의 이익을 크게 감소시킬 것입니다. 이렇게 오랜 갈등에 대응하는 생각 자체가 대부분의 공격을 저지할 수 있습니다.
Hasu의 이 점에 대한 의견:
"우리는 악의적인 프로토콜 변경을 저지할 수 있는 이유는 사용자들이 블록체인을 검증하는 문화가 있기 때문이지, PoW나 PoS 때문이 아닙니다."
가정해 보세요, 당신의 커뮤니티에 37명의 노드 운영자와 80,000명의 수동 청취자가 서명 및 블록 헤드를 검사하고 있다면, 공격자는 승리할 것입니다. 만약 모든 사람이 노드를 운영한다면, 공격자는 실패할 것입니다. 협동 공격에 대한 집단 면역의 정확한 임계값이 무엇인지 우리는 알 수 없지만, 한 가지는 확실합니다: 좋은 노드가 많을수록 악의적인 노드는 적어지며, 우리가 필요한 수는 확실히 몇 백, 몇 천 개 이상입니다.
그렇다면 전체 노드 작업의 한계는 무엇인가요?
가능한 한 많은 사용자가 전체 노드를 운영할 수 있도록 하기 위해, 우리는 일반 소비자급 하드웨어에 집중할 것입니다. 전용 하드웨어를 쉽게 구입할 수 있다면, 일부 전체 노드의 진입 장벽을 낮출 수 있지만, 사실상 확장성의 향상은 우리가 상상하는 것만큼 크지 않습니다.
전체 노드가 대량의 거래를 처리하는 능력은 주로 세 가지 측면에 의해 제한됩니다:
- 계산 능력: 안전성을 보장하는 전제 하에, 우리는 얼마나 많은 CPU를 할당하여 노드를 운영할 수 있을까요?
- 대역폭: 현재의 네트워크 연결을 기반으로, 하나의 블록에 얼마나 많은 바이트를 포함할 수 있을까요?
- 저장소: 우리는 사용자가 얼마나 큰 공간을 사용하도록 요구할 수 있을까요? 또한, 그 읽기 속도는 얼마나 되어야 할까요? (즉, HDD로 충분할까요? 아니면 SSD가 필요할까요?)
"단순한" 기술을 사용하여 블록체인을 대폭 확장할 수 있다는 잘못된 생각은 이러한 수치에 대한 지나치게 낙관적인 추정에서 비롯됩니다. 우리는 이 세 가지 요소를 차례로 논의할 수 있습니다:
계산 능력
- 잘못된 답변: 100%의 CPU는 블록 검증에 사용해야 한다.
- 올바른 답변: 약 5-10%의 CPU가 블록 검증에 사용될 수 있다.
제한이 이렇게 낮은 네 가지 주요 이유는 다음과 같습니다:
- 우리는 DoS 공격의 가능성을 커버하기 위해 안전 경계를 필요로 합니다 (공격자가 코드의 취약점을 이용해 생성한 거래는 일반 거래보다 더 긴 처리 시간이 필요합니다).
- 노드는 오프라인 상태에서 블록체인과 동기화할 수 있어야 합니다. 만약 내가 1분 동안 오프라인이라면, 몇 초 안에 동기화를 완료할 수 있어야 합니다.
- 노드를 운영하는 데 있어 배터리를 빨리 소모해서는 안 되며, 다른 애플리케이션의 실행 속도를 저하시켜서도 안 됩니다.
- 노드는 블록 생산 외에도 다른 작업을 수행해야 하며, 대부분은 검증 및 p2p 네트워크에서 입력된 거래와 요청에 응답하는 것입니다.
주의할 점은, 최근까지 "왜 5-10%만 필요할까?"라는 질문에 대한 대부분의 설명이 다른 문제에 초점을 맞추었다는 것입니다: PoW의 블록 생성 시간이 불확실하기 때문에 블록 검증에 오랜 시간이 걸리며, 이는 동시에 여러 블록을 생성할 위험을 증가시킵니다. 이 문제에는 Bitcoin NG와 같은 많은 수정 방법이 있지만, PoS의 지분 증명도 마찬가지입니다. 그러나 이들은 다른 네 가지 문제를 해결하지 못하므로, 많은 사람들이 예상한 것처럼 확장성 측면에서 큰 진전을 이루지 못했습니다.
병렬성도 만병통치약이 아닙니다. 일반적으로, 단일 스레드 블록체인 클라이언트처럼 보이는 것조차도 이미 병렬화되어 있습니다: 서명은 하나의 스레드에서 검증할 수 있고, 실행은 다른 스레드에서 수행되며, 별도의 스레드가 백그라운드에서 거래 풀 로직을 처리합니다. 그리고 모든 스레드의 사용률이 100%에 가까워질수록, 노드를 운영하는 에너지 소비는 증가하고 DoS에 대한 안전 계수는 낮아집니다.
대역폭
- 잘못된 답변: 2-3초마다 10MB의 블록이 생성되지 않는다면, 대부분의 사용자의 네트워크는 10MB/초 이상이므로, 그들은 당연히 이러한 블록을 처리할 수 있다.
- 올바른 답변: 아마도 우리는 매 12초마다 1-5MB의 블록을 처리할 수 있지만, 여전히 어렵습니다.
오늘날 우리는 인터넷 연결이 제공할 수 있는 대역폭에 대한 널리 퍼진 통계 데이터를 자주 듣습니다: 100Mbps 또는 1Gbps의 숫자는 매우 일반적입니다. 그러나 다음과 같은 여러 이유로 인해 주장된 대역폭과 예상 실제 대역폭 사이에는 큰 차이가 있습니다:
- "Mbps"는 "초당 수백만 비트"를 의미합니다; 하나의 비트는 바이트의 1/8이므로, 주장된 비트 수를 8로 나누어 바이트 수를 얻어야 합니다.
- 네트워크 운영자는 다른 회사들처럼 종종 거짓말을 합니다.
- 항상 여러 애플리케이션이 동일한 네트워크 연결을 사용하므로, 노드는 전체 대역폭을 독점할 수 없습니다.
- P2P 네트워크는 불가피하게 오버헤드를 도입합니다: 노드는 일반적으로 동일한 블록을 여러 번 다운로드하고 다시 업로드하게 됩니다 (거래가 블록에 패키징되기 전에 mempool을 통해 방송되는 것은 말할 것도 없습니다).
Starkware가 2019년에 실험을 진행했을 때, 그들은 거래 데이터의 가스 비용이 감소한 후 처음으로 500kB의 블록을 발표했으며, 일부 노드는 실제로 이러한 크기의 블록을 처리할 수 없었습니다. 대형 블록을 처리하는 능력은 개선되고 있으며 앞으로도 지속적으로 개선될 것입니다. 그러나 우리가 무엇을 하든, 우리는 MB/초 단위의 평균 대역폭을 확보할 수 없으며, 1초의 지연을 수용할 수 있다고 스스로 설득할 수 없습니다. 그리고 그 크기의 블록을 처리할 수 있는 능력이 없습니다.
저장소
- 잘못된 답변: 10TB
- 올바른 답변: 512GB
여기서의 주요 주장은 다른 곳과 동일합니다: 이론과 실제 간의 차이입니다. 이론적으로, 우리는 아마존에서 8TB SSD를 구매할 수 있습니다 (실제로 SSD 또는 NVME가 필요합니다; HDD는 블록체인 상태 저장에 너무 느립니다). 실제로, 이 블로그 글을 작성하는 데 사용한 노트북은 512GB입니다. 만약 사람들이 하드웨어를 구매하러 간다면, 많은 사람들이 게을러지거나 (또는 800달러의 8TB SSD를 감당할 수 없거나) 중앙 집중식 서비스를 사용할 것입니다. 블록체인을 어떤 저장 장치에 담을 수 있다고 하더라도, 많은 활동이 빠르게 디스크를 소모하고 새로운 디스크를 구매해야 할 수 있습니다.
한 무리의 블록체인 프로토콜 연구자들이 모든 사람의 디스크 공간을 조사했습니다. 샘플 수가 적다는 것을 알고 있지만, 여전히…
게다가, 저장소 크기는 새로운 노드가 온라인에 접속하고 네트워크에 참여하는 데 필요한 시간에 영향을 미칩니다. 기존 노드가 저장해야 하는 모든 데이터는 새로운 노드가 다운로드해야 하는 데이터입니다. 이 초기 동기화 시간(및 대역폭)은 사용자가 노드를 운영할 수 있는 주요 장애물입니다. 이 블로그 글을 작성하는 동안, 새로운 geth 노드를 동기화하는 데 약 15시간이 걸렸습니다. 만약 이더리움의 사용량이 10배 증가한다면, 새로운 geth 노드를 동기화하는 데 최소 일주일이 걸릴 것이며, 더 심각하게는 노드의 인터넷 연결이 제한될 가능성이 높습니다. 이는 공격 중에 더욱 중요합니다. 사용자가 이전에 노드를 운영하지 않았다면 공격에 성공적으로 대응하기 위해서는 사용자가 새로운 노드를 활성화해야 합니다.
상호 작용 효과
게다가, 이 세 가지 비용 간에는 상호 작용 효과가 있습니다. 데이터베이스는 내부적으로 데이터를 저장하고 검색하기 위해 트리 구조를 사용하기 때문에, 데이터베이스에서 데이터를 가져오는 비용은 데이터베이스 크기의 로그에 따라 증가합니다. 사실, 최상위(또는 상위 몇 개) 레벨은 RAM에 캐시될 수 있기 때문에, 디스크 접근 비용은 데이터베이스 크기에 비례하며, RAM에 캐시된 데이터 크기의 배수입니다.
이 그림을 문자 그대로 이해하지 마세요. 서로 다른 데이터베이스는 서로 다른 방식으로 작동하며, 일반적으로 메모리 내의 일부는 단일(하지만 큰) 레이어일 뿐입니다(예: leveldb에서 사용되는 LSM 트리). 그러나 기본 원리는 동일합니다.
예를 들어, 캐시가 4GB이고 데이터베이스의 각 레이어가 이전 레이어보다 4배 크다고 가정하면, 이더리움의 현재 약 64GB 상태는 약 2회의 접근이 필요합니다. 그러나 상태 크기가 4배 증가하여 약 256GB가 되면, 이는 약 3회의 접근으로 증가합니다. 따라서 가스 한도가 4배 증가하는 것은 실제로 블록 검증 시간이 약 6배 증가하는 것으로 전환될 수 있습니다. 이러한 영향은 더 클 수 있습니다: 디스크가 가득 차면 비어 있을 때보다 읽고 쓰는 데 더 오랜 시간이 걸립니다.
이것이 이더리움에게 의미하는 바는 무엇인가요?
현재 이더리움 블록체인에서 노드를 운영하는 것은 많은 사용자에게 도전 과제가 되고 있으며, 적어도 일반 하드웨어를 사용하여 가능하긴 합니다(이 글을 작성하는 동안 제 노트북에서 노드를 동기화했습니다!). 따라서 우리는 곧 병목 현상에 직면할 것입니다. 핵심 개발자들이 가장 우려하는 문제는 저장소 크기입니다. 따라서 현재 계산 및 데이터 병목 현상을 해결하기 위한 막대한 노력, 심지어 합의 알고리즘의 변경조차도 가스 한도의 대폭 증가를 가져오기는 어려울 것입니다. 이더리움의 가장 큰 DoS 취약점을 해결하더라도 가스 한도를 20% 높일 수 있을 뿐입니다.
저장소 크기 문제에 대한 유일한 해결책은 무상태성과 상태 만료입니다. 무상태성은 노드 집단이 영구 저장소를 유지하지 않고도 검증할 수 있게 합니다. 상태 만료는 최근에 접근하지 않은 상태를 비활성화하며, 사용자는 업데이트를 위해 수동으로 증명을 제공해야 합니다. 이 두 가지 경로는 오랫동안 연구되어 왔으며, 무상태성에 대한 개념 검증 구현이 시작되었습니다. 이 두 가지 개선이 결합되면 이러한 우려를 크게 완화하고 가스 한도를 상당히 높일 수 있는 공간을 열 수 있습니다. 그러나 무상태성과 상태 만료를 구현한 이후에도 가스 한도는 약 3배 안전하게 증가할 수 있을 뿐이며, 그 이상은 다른 제한이 작용하기 시작할 것입니다.
또 다른 중간 해결책은 ZK-SNARKs를 사용하여 거래를 검증하는 것입니다. ZK-SNARKs는 일반 사용자가 개인적으로 상태를 저장하거나 블록을 검증할 필요 없이 보장할 수 있으며, 그들은 여전히 데이터 불가용 공격을 방지하기 위해 블록 내의 모든 데이터를 다운로드해야 합니다. 또한 공격자가 무효 블록을 강제로 제출할 수 없더라도, 합의 노드를 운영하는 것이 너무 어렵다면 여전히 조정 검열 공격의 위험이 존재합니다. 따라서 ZK-SNARKs는 노드 능력을 무한히 증가시킬 수는 없지만, 여전히 크게 향상시킬 수 있습니다(아마도 1-2 배수). 일부 블록체인은 layer1에서 이 형태를 탐색하고 있으며, 이더리움은 layer2 프로토콜(또는 ZK 롤업)을 통해 혜택을 보고 있습니다. 예를 들어 zksync, Loopring 및 Starknet이 있습니다.
샤딩 이후에는 어떻게 될까요?
샤딩은 본질적으로 위의 제한을 해결합니다. 왜냐하면 블록체인에 포함된 데이터와 단일 노드가 처리하고 저장해야 하는 데이터를 분리하기 때문입니다. 노드는 블록을 직접 다운로드하고 실행하는 것이 아니라, 고급 수학 및 암호학 기술을 사용하여 간접적으로 블록을 검증합니다.
따라서 샤딩 블록체인은 안전하게 비샤딩 블록체인이 달성할 수 없는 매우 높은 수준의 처리량을 가질 수 있습니다. 이는 무효 블록을 거부하기 위해 단순한 완전 검증을 효과적으로 대체하기 위해 많은 암호학 기술이 필요하지만, 이는 가능합니다: 이론은 이미 기초를 갖추고 있으며, 초안 규격에 기반한 개념 검증이 진행 중입니다.
이더리움은 이차 샤딩(quadratic sharding)을 채택할 계획이며, 여기서 총 확장성은 다음 사실에 의해 제한됩니다: 노드는 단일 샤드와 신호 체인을 동시에 처리할 수 있어야 하며, 신호 체인은 각 샤드에 대해 일부 고정 관리 작업을 수행해야 합니다. 만약 샤드가 너무 크면, 노드는 더 이상 단일 샤드를 처리할 수 없고, 샤드가 너무 많으면 노드는 더 이상 신호 체인을 처리할 수 없습니다. 이 두 가지 제약의 곱이 상한선을 형성합니다.
삼차 샤딩 또는 지수 샤딩을 통해 더 멀리 나아갈 수 있다고 상상할 수 있습니다. 이러한 설계에서 데이터 가용성 샘플링은 확실히 더 복잡해지겠지만, 이는 구현할 수 있습니다. 그러나 이더리움은 이차 샤딩을 넘어가지 않았습니다. 그 이유는 거래 샤딩에서 거래 샤딩으로 얻는 추가 확장성 이익이 실제로 다른 위험 수준에서 수용 가능한 전제 하에 달성될 수 없기 때문입니다.
그렇다면 이러한 위험은 무엇일까요?
최소 사용자 수
하나의 사용자가 참여할 의향이 있다면 비샤딩 블록체인은 운영될 수 있다고 상상할 수 있습니다. 그러나 샤딩 블록체인은 그렇지 않습니다: 단일 노드는 전체 체인을 처리할 수 없으므로, 블록체인을 공동으로 처리할 충분한 노드가 필요합니다. 만약 각 노드가 50 TPS를 처리할 수 있고, 체인이 10,000 TPS를 처리할 수 있다면, 체인은 최소 200개의 노드가 있어야 지속될 수 있습니다. 만약 체인이 언제든지 200개 미만의 노드를 유지한다면, 노드가 더 이상 동기화를 유지하지 못하거나, 노드가 무효 블록을 감지하는 것을 중단하거나, 또는 노드 소프트웨어의 설정에 따라 많은 다른 나쁜 일이 발생할 수 있습니다.
실제로는 중복성(데이터 가용성 샘플링 포함)이 필요하기 때문에, 안전한 최소 수는 단순히 "체인 TPS를 노드 TPS로 나눈 것"보다 몇 배 더 높습니다. 위의 예에서는 이를 1,000개의 노드로 설정합니다.
샤딩 블록체인의 용량이 10배 증가하면, 최소 사용자 수 또한 10배 증가합니다. 이제 사람들은 왜 낮은 용량에서 시작하여 사용자가 많을 때 증가시키지 않느냐고 물을 수 있습니다. 이는 우리의 실제 필요이며, 사용자 수가 줄어들면 용량을 줄이면 됩니다.
여기에는 몇 가지 문제가 있습니다:
- 블록체인 자체는 그 위에 얼마나 많은 고유 사용자가 있는지를 신뢰성 있게 감지할 수 없으므로, 샤드 수를 감지하고 설정하기 위해 어떤 형태의 거버넌스가 필요합니다. 용량 제한에 대한 거버넌스는 분열과 갈등의 원인이 되기 쉽습니다.
- 많은 사용자가 갑자기 동시에 예기치 않게 오프라인 상태가 된다면 어떻게 될까요?
- 시작 분기를 위한 최소 사용자 수를 증가시키면 악의적인 통제를 방어하기가 더 어려워집니다.
최소 사용자 수가 1,000이라면, 이는 거의 문제가 없다고 할 수 있습니다. 반면, 최소 사용자 수가 100만이라면, 이는 확실히 불가능합니다. 최소 사용자 수가 10,000이라면 위험해지기 시작한다고 할 수 있습니다. 따라서 몇 백 개의 샤드 이상의 샤딩 블록체인이 합리적이라는 것을 증명하기는 어려운 것 같습니다.
역사적 검증 가능성
사용자가 진정으로 소중히 여기는 블록체인의 중요한 속성은 영구성입니다. 회사가 파산하거나 해당 생태계의 유지가 더 이상 이익을 창출하지 않을 때, 서버에 저장된 디지털 자산은 10년 내에 사라질 것입니다. 그러나 이더리움의 NFT는 영구적입니다.
네, 2372년까지 사람들은 당신의 크립토캣을 다운로드하고 열람할 수 있습니다.
하지만 블록체인의 용량이 너무 높아지면, 모든 데이터를 저장하는 것이 더 어려워지고, 결국에는 특정 역사적 데이터가 … 아무도 저장하지 않게 되는 큰 위험이 발생할 수 있습니다.
이러한 위험을 정량화하는 것은 쉽습니다. 블록체인의 데이터 용량(MB/sec)에 ~30을 곱하여 연간 저장되는 데이터 양(TB)을 얻습니다. 현재 샤딩 계획의 데이터 용량은 약 1.3MB/초이므로 연간 약 40TB입니다. 만약 10배 증가하면, 이는 400TB/년이 됩니다. 만약 우리가 데이터에 접근할 수 있을 뿐만 아니라 편리한 방식으로 접근할 수 있기를 원한다면, 우리는 메타데이터(예: 압축 해제된 요약 거래)도 필요하므로 연간 4PB에 도달하게 되며, 10년 후에는 40PB에 이를 수 있습니다. 인터넷 아카이브는 50PB를 사용합니다. 따라서 이는 샤딩 블록체인의 안전한 크기 상한선이라고 할 수 있습니다.
따라서 이 두 가지 차원에서, 이더리움 샤딩 설계는 실제로 합리적인 최대 안전 값에 매우 가깝습니다. 상수는 약간 증가할 수 있지만, 너무 많이 증가할 수는 없습니다.
결론
블록체인을 확장하는 방법에는 두 가지가 있습니다: 기본 기술 개선과 단순히 매개변수 증가입니다. 우선, 매개변수를 높이는 것은 매우 매력적으로 들립니다: 만약 당신이 식사 종이에 수학을 하고 있다면, 소비자급 노트북이 매초 수천 건의 거래를 처리할 수 있다고 믿기 쉽습니다. ZK-SNARK, 롤업 또는 샤딩이 필요하지 않습니다. 불행히도, 이러한 접근 방식이 근본적으로 결함이 있다는 것을 설명할 수 있는 미묘한 이유가 많이 있습니다.
블록체인 노드를 운영하는 컴퓨터는 블록체인을 검증하기 위해 100%의 CPU를 사용할 수 없습니다; 그들은 예기치 않은 DoS 공격에 저항하기 위해 큰 안전 여유를 필요로 하며, 메모리 풀에서 거래를 처리하는 것과 같은 작업을 수행하기 위해 여유 용량이 필요하고, 사용자는 컴퓨터에서 노드를 운영할 때 다른 애플리케이션을 동시에 사용할 수 있기를 원합니다. 대역폭도 제한됩니다: 10MB/s의 연결이 있다고 해서 매초 10MB의 블록을 처리할 수 있다는 의미는 아닙니다! 아마도 매 12초마다 1-5MB의 블록을 처리할 수 있을 것입니다. 저장소도 마찬가지입니다. 노드를 운영하는 하드웨어 요구 사항을 높이고 전문 노드 운영자를 제한하는 것은 해결책이 아닙니다. 탈중앙화된 블록체인에 있어 일반 사용자가 노드를 운영하고 노드를 운영하는 것이 일반적인 행동이라는 문화를 형성하는 것은 매우 중요합니다.
그러나 기본 기술 개선은 실행 가능성이 있습니다. 현재, 이더리움의 주요 병목 현상은 저장소 크기이며, 무상태성과 상태 만료가 이 문제를 해결할 수 있습니다. 이는 최대 약 3배 성장할 수 있게 하며, 그 이상은 불가능합니다. 왜냐하면 우리는 노드를 운영하는 것이 현재보다 더 쉬워지기를 원하기 때문입니다. 샤딩을 채택한 블록체인은 추가적으로 확장할 수 있습니다. 왜냐하면 샤딩 블록체인의 단일 노드는 각 거래를 처리할 필요가 없기 때문입니다. 그러나 샤딩 블록체인에서도 용량에는 한계가 있습니다: 용량이 증가함에 따라 최소 안전 사용자 수가 증가하고, 아카이브 블록체인의 비용(그리고 아무도 아카이브하지 않으면 데이터 손실의 위험)이 증가합니다. 그러나 우리는 너무 걱정할 필요는 없습니다: 이러한 제한은 우리가 블록체인의 완전한 안전성을 보장하면서 매초 백만 건 이상의 거래를 처리할 수 있도록 충분합니다. 그러나 블록체인의 가장 소중한 탈중앙화 특성을 해치지 않으면서 이를 실현하기 위해서는 더 많은 노력이 필요합니다.