저자: Avi Zurlo, 블록 유니콘 편집
롤업이 등장한 이후, 블록체인 확장은 모듈성과 모놀리식 논쟁에 초점이 맞춰져 왔습니다. 처음에는 이 이분법이 블록체인 확장성에 대한 추론에 유용한 사고 모델이었지만, 이제는 두 진영 모두 이분법을 넘어섰습니다.
오늘날, 모듈성과 모놀리성은 확장성 사고방식 모델에 불필요한 제한을 가하고 있습니다.
그렇다면 대안은 무엇일까요?
이 글에서는 수평적 확장과 수직적 확장이 항상 블록체인 확장성의 기본 프레임워크였음을 보여주고, 수평적 확장과 수직적 확장을 채택하면 어떻게 더 나은 확장 솔루션을 얻을 수 있는지 설명합니다.
모듈형과 모놀리식 이해
첫째, 몇 가지 정의:
모듈형 체인은 블록체인의 핵심 기능을 여러 계층으로 분리합니다.
모놀리식 체인은 모든 핵심 기능을 상호 연결된 단일 레이어에 통합합니다.
레이어를 기계로 생각할 수 있는데, 모놀리식 체인에는 모든 작업을 실행하는 단일 검증자 노드가 있는 반면, 모듈식 체인에는 모든 작업을 실행하는 단일 검증자 노드가 있습니다. 작업을 실행하는 반면, 모듈형 체인에는 서로 다른 작업을 실행하는 여러 개의(2~3개) 전체 노드가 있습니다.

예를 들어, 롤업에는 일반적으로 두 개의 런타임 노드가 있습니다. 실행을 위한 롤업 풀 노드와 정산 + 데이터 가용성(DA)을 위한 이더넷 풀 노드입니다. 반면 밸리디움은 실행을 위한 롤업 풀 노드, 정산을 위한 이더리움 풀 노드, DA를 위한 대체 데이터 가용성 레이어의 풀 노드 등 세 개의 런타임 노드를 활용할 수 있습니다.
모듈성은 블록체인의 작업을 최소 두 개의 풀 노드에 분산시킵니다. 이렇게 함으로써 모듈형 블록체인은 각 블록을 구축할 때 여러 컴퓨터의 컴퓨팅 성능을 활용할 수 있습니다.
이것은 수평적 확장의 한 형태입니다.
모듈성은 수평적 확장의 일종이기 때문에 블록체인 확장성을 고려할 때 유용합니다.

반면, 대다수의 모놀리식 진영은 소프트웨어 최적화, 병렬 가상 머신 구현, 데이터 파이프라인, 더 빠른 네트워킹 프로토콜, 그리고 (가장 주목할 만한) 더 강력한 하드웨어를 통해 확장하는 방법을 선택했습니다. 본질적으로 모놀리식 체인은 하나의 전체 노드에서 가능한 한 많은 컴퓨팅 성능을 추출하려고 합니다.
이것은 일종의 수직적 확장입니다.
비평가들은 이 접근 방식이 중앙 집중적인 경향이 있다고 주장합니다. 확장이 개별 노드의 성능 향상에 의존하는 경우, 기본 하드웨어의 물리적 한계에 직면할 수밖에 없고 더 확장하기 위해 하드웨어 요구 사항을 늘릴 수밖에 없습니다. 하지만 모든 모놀리식 체인이 수직적 확장에만 의존하는 것은 아니기 때문에 이러한 비판은 잘못된 것입니다.
예를 들어 Near는 샤딩된 네트워크 아키텍처에 구축된 모놀리식 L1 블록체인입니다. 즉, Near의 전체 노드는 모든 작업(예: 실행, 정산, 데이터 가용성)을 담당하지만, Near의 글로벌 상태 중 극히 일부만을 담당합니다. 따라서 Near는 작업이 아닌 상태를 기반으로 작업을 분산하여 여러 컴퓨터의 연산 능력을 활용합니다(예: 모듈형 체인).

모놀리식 체인과 모듈화된 체인 모두에서 볼 수 있듯이 모듈화된 체인 모두 구현하는 확장 기술에는 제한이 없습니다. 둘 다 수평 및/또는 수직으로 확장할 수 있습니다.
또한 모듈화 대 모놀리식 논쟁은 항상 수평적 확장 대 수직적 확장 프레임워크에 뿌리를 두고 있습니다. 엄밀한 기술적 관점에서 보면 모듈성은 설계에 내재된 수평적 확장 경향이 있는 반면, 단일화는 수직적 확장 경향이 있습니다.
모듈형 체인을 성공적으로 도입한 지금, 추가적인 확장 이점은 더 이상 "더 모듈화되어 있다"는 데 있지 않습니다. <이제 체인이 수평적 또는 수직적 확장 기술을 어떻게 활용할 수 있는지에 초점을 맞추고 있습니다.
수평적 사고방식과 수직적 사고방식을 취하면 각 체인에서 발생하는 장단점을 쉽게 추론할 수 있습니다.
대화 재정의: 수평적 확장 대 수직적 확장
수평적 확장 프레임워크를 살펴보기 전에 먼저 분산 컴퓨팅 연구가 수평적 확장 개념의 토대를 마련한 1970년대로 거슬러 올라간다는 사실을 인정하는 것이 중요합니다. 오늘날 모든 스케일링 기술은 수평적 또는 수직적 스케일링으로 분류할 수 있습니다.
수직 확장
수직 확장은 각 노드의 하드웨어 사용률 또는 하드웨어 요구 사항을 증가시킵니다. 블록체인에서는 일반적으로 병렬 가상 머신(즉, 멀티스레드 프로세스)과 같은 소프트웨어 최적화를 통해 이루어집니다.
일반적인 예로 EVM과 SVM을 들 수 있습니다.
EVM은 트랜잭션을 순차적으로 실행하는 반면 SVM은 트랜잭션을 병렬로 실행하며, SVM은 더 많은 CPU 코어를 활용하여 이를 달성하므로 SVM은 EVM보다 초당 더 많은 트랜잭션을 처리할 수 있습니다. 참고: 이러한 유형의 수직적 확장은 Eclipse L2의 기반입니다.
장단점 측면에서 수직 확장은 사용 가능한 하드웨어에 의해 제한되고, 하드웨어 요구 사항이 증가하기 때문에 중앙 집중화되는 경향이 있으며, 수평 확장에 비해 확장성이 떨어집니다.

수평 확장
반면, 수평 확장은 워크로드를 여러 노드에 분산하여 시스템에 액세스할 수 있는 머신의 수를 늘립니다. 앞서 언급했듯이 모듈형 체인은 기본적으로 여러 머신에 작업을 분산시킵니다. 그러나 체인은 종종 샤딩을 통해 더 큰 수평적 확장성을 달성할 수 있습니다.

=nil; 다음은 제공된 유용한 예시입니다.
지난 11월, =nil; 재단은 새로운 이더넷 L2를 뒷받침하는 검증 가능한 샤딩 아키텍처인 zkSharding을 도입했습니다. nil; 설계의 핵심은 글로벌 상태를 여러 슬라이스로 분할하는 것입니다. 각 슬라이스는 =nil; 의 탈중앙화 위원회에 의해 운영되며, 이들은 블록을 생성하고 슬라이스 간 트랜잭션을 관리합니다. 또한 각 슬라이스는 유효성 증명을 생성하며, 이는 합산을 위해 메인 슬라이스로 전송된 후 이더에 게시되고 검증됩니다. =수평적 확장 기능은 두 가지 방식으로 활용됩니다.
이 두 가지 기술 모두 개별 컴퓨터가 감당해야 하는 부하를 줄이고 네트워크의 전반적인 확장성을 높입니다.
수평적 확장의 장단점은 무엇일까요? 이는 네트워크와 합의의 복잡성, 그리고 머신 또는 샤드 간의 비동기식 통신이라는 두 가지로 요약할 수 있습니다.
이더 확장성의 최종 목표
수평 확장이나 수직 확장은 모듈식 또는 모놀리식 아키텍처로 제한되지 않습니다. 그렇기 때문에 수평적 확장과 수직적 확장 프레임워크는 모듈형 블록체인의 확장성을 높이기 위한 새로운 솔루션을 모색할 수 있는 더 많은 여지를 제공합니다.
예를 들어 한 가지 옵션은 모듈식 스택의 레이어를 수직으로 확장하는 것입니다. 일반적인 접근 방식은 병렬 가상 머신을 구현하여 실행 처리량을 늘리는 것입니다. 위에서 언급한 바와 같이, Eclipse는 병렬화를 위해 SVM과 Starknet과 같은 기타 롤업을 활용하여 BlockSTM을 구현하고 있습니다.
그러나 수직 확장은 항상 단일 머신의 제약에 의해 제한되며, 물리 법칙을 어길 수는 없습니다.
한 가지 해결책은 샤딩을 통한 수평적 확장을 선택하는 것입니다.
현재의 모듈식 설계는 이제 막 수평적 확장의 잠재력을 충분히 활용하기 시작했습니다. 샤딩을 사용하면 작업을 공유하는 2~3대의 컴퓨터뿐만 아니라 원하는 수의 컴퓨터의 컴퓨팅 성능을 활용할 수 있습니다.
다시 말해, 여러 대의 컴퓨터가 동일한 유형의 작업을 병렬로 실행할 수 있습니다. 이것이 바로 이더넷과 셀레스티아가 각각 댕크샤딩과 데이터 샤딩을 통해 달성하고자 하는 목표입니다. 그러나 샤딩은 본질적으로 데이터 가용성 계층에만 국한되는 것이 아니라 실행과 결합될 수도 있습니다(=nil; L2의 경우처럼).

모듈형 스택을 통한 수평적 확장과 샤딩이 제공하는 수평적 확장을 비교해 보면 샤딩만이 이를 달성하는 유일한 방법은 아니라는 것을 알 수 있습니다. 모듈형 스택을 통한 확장과 샤딩이 제공하는 수평적 확장을 결합하면 사용 가능한 컴퓨팅 성능이 크게 증가합니다.
하지만 우리는 더 잘할 수 있습니다 ......
블록체인 확장성의 궁극적인 목표는 수평 및 수직 확장을 병합하는 것이 될 것입니다. 강력한>수평 및 수직 확장을 병렬 가상 머신으로 샤드화된 블록체인을 생성하는 것입니다.

내부에서 ===. nil;재단에서는 이 최종 상태 디자인을 향해 체계적으로 나아가고 있습니다. =nil; 의 L2 는 모듈식 수평 확장 아키텍처(zkSharding)와 수직 확장 가능한 검증기 구현(슬라이스 내 병렬화)을 활용하여 공격적인 확장 로드맵을 취하고 있습니다.
그 결과, =nil; 은 상태, 이동성 또는 사용자 조각화를 희생하지 않고 글로벌 규모를 달성하도록 설계되었습니다.

수평적 확장에 대해 궁금하신 분들은 zkSharding에 대해 궁금하신 분들은 =nil; Foundation의 Discord와 X로 이동하여 대화에 참여하세요.