롤업의 등장 이후 블록체인 확장은 모듈형과 모놀리식 논쟁의 중심이 되어왔습니다. 처음에는 이 이분법이 블록체인 확장성에 대한 추론에 유용한 정신적 모델이었지만, 두 진영은 그 이상으로 나아갔습니다.
오늘날 모듈성과 전체론은 확장성에 대한 우리의 정신적 모델에 불필요한 제한을 부과합니다.
이 백서에서는 수평적 확장과 수직적 확장이 항상 블록체인 확장성의 기본 프레임워크였음을 보여주고, 수평적 확장과 수직적 확장을 채택하는 것이 어떻게 더 나은 확장 솔루션으로 이어지는지 설명합니다.
모듈형 체인은 블록체인의 핵심 기능을 여러 계층으로 나눕니다. 모놀리식 체인은 모든 핵심 기능을 하나의 상호 연결된 레이어에 통합합니다.
모놀리식 체인에는 모든 작업을 실행하는 단일 검증자 노드가 있는 반면, 모듈형 체인에는 여러 개(2~3개)의 검증자 노드가 있는 것과 같이 "레이어"를 "기계"와 동일하게 생각할 수 있습니다. 모듈형 체인에는 서로 다른 작업을 실행하는 여러 개(2~3개)의 전체 노드가 있습니다.
예를 들어, 롤업에는 일반적으로 실행을 위한 전체 롤업 노드와 정산 + 데이터 가용성(DA)을 위한 전체 이더리움 노드의 두 가지 운영 노드가 있습니다. validium은 실행을 위한 전체 롤업 노드, 정산을 위한 전체 이더리움 노드, DA를 위한 대체 데이터 가용성 계층 전체 노드의 세 가지 운영 노드를 활용할 수 있습니다. 노드.
모듈성은 블록체인의 작업을 최소 두 개의 풀 노드로 나눕니다. 이를 통해 모듈형 블록체인은 각 블록을 구축할 때 여러 컴퓨터의 컴퓨팅 파워를 활용할 수 있습니다.
이것은 수평적 확장의 한 형태입니다.
모듈성은 수평적 확장성의 한 형태이기 때문에 블록체인 확장을 고려할 때 유용합니다.
반면, 대부분의 모놀리식 진영은 소프트웨어 최적화, 병렬 VM 구현, 데이터 파이프라인, 빠른 네트워킹 프로토콜 및 (가장 주목할 만한) 더 강력한 하드웨어를 통해 확장하는 방법을 선택했습니다. 기본적으로 모놀리식 체인은 하나의 전체 노드에서 최대한 많은 컴퓨팅 성능을 끌어내려고 노력합니다. 이는 일종의 수직적 확장의 한 형태입니다.
비평가들은 이 접근 방식이 중앙 집중화 경향이 있다고 말합니다. 개별 노드의 용량을 늘려 확장하는 데 의존하면 필연적으로 기본 하드웨어의 물리적 한계에 부딪히고 더 확장하기 위해 하드웨어 요구 사항을 늘려야 합니다. 하지만 모든 전체론적 체인이 수직적 확장에만 의존하는 것은 아니므로 이러한 비판은 잘못된 것입니다.
예를 들어 니어는 샤딩된 네트워크 아키텍처에 구축된 전체론적 L1 블록체인입니다. 즉, 니어 전체 노드는 모든 작업(예: 실행, 결제, 데이터 가용성)을 담당하지만, 니어 글로브 상태의 일부분만 담당합니다. 따라서 Near는 모듈형 체인처럼 작업보다는 상태에 따라 작업을 분할하여 여러 머신의 성능을 활용합니다.
모놀리식 체인과 모듈형 체인 모두 구현하는 확장 기술 측면에서 제한이 없다는 것을 알 수 있습니다. 둘 다 수평 및/또는 수직으로 확장할 수 있습니다.
또한 모듈형 대 전체론적 논쟁은 항상 수평적 대 수직적 확장 프레임워크에 뿌리를 두고 있습니다. 엄밀한 기술적 관점에서 모듈형은 설계에 내재된 수평적 확장을 선호하는 반면, 모놀리식은 수직적 확장을 선호합니다.
모듈형 체인이 성공적으로 출시되었으므로 이제 추가 확장 이점은 더 이상 "더 모듈형"이 아닙니다. 이제 체인이 수평 또는 수직 확장 기술을 어떻게 활용할 수 있는지에 초점을 맞추고 있습니다.
수평적 모델과 수직적 모델을 사용하면 각 체인이 프로세스에서 어떤 장단점을 가지고 있는지 쉽게 추론할 수 있습니다.
대화 리팩토링: 수평적 확장과 수직적 확장
수직적 확장
수직적 확장은 각 노드의 하드웨어 사용률 또는 하드웨어 요구 사항을 증가시킵니다. 블록체인에서는 일반적으로 병렬 가상 머신(즉, 멀티스레드 프로세스)과 같은 소프트웨어 최적화를 통해 이루어집니다.
잘 알려진 예로 EVM과 SVM을 들 수 있습니다.
EVM은 트랜잭션을 순차적으로 실행하는 반면, SVM은 트랜잭션을 병렬로 실행하며, SVM은 더 많은 CPU 코어를 활용함으로써 이를 달성하므로 SVM은 EVM보다 초당 더 많은 트랜잭션을 처리할 수 있습니다. 참고: 이러한 유형의 수직적 확장은 Eclipse L2의 기반입니다.
장단점 측면에서 수직 확장은 사용 가능한 하드웨어에 의해 제한되고, 하드웨어 요구 사항이 증가하기 때문에 중앙 집중화되는 경향이 있으며, 수평 확장에 비해 확장성이 떨어집니다.
이미지 src="https://img.jinse.cn/7220509_watermarknone.png" title="7220509" alt="WIqBOWcbCQPBWvk4iL636DrPjyZrLEft5SgxSE8n.png">< /p>
수평적 확장
반면, 수평적 확장은 워크로드를 여러 노드에 분산하여 시스템에 액세스할 수 있는 머신 수를 늘립니다. 앞서 언급했듯이 모듈형 체인은 기본적으로 여러 머신에 작업을 분산시킵니다. 그러나 체인은 종종 샤딩을 통해 더 높은 수준의 수평적 확장을 달성할 수 있습니다.
이미지 src="https://img.jinse.cn/7220510_watermarknone.png" title="7220510" alt="mDpGmUPHU1iolM1QwSZHC4Wj3beV9PNnxIP1qBQE.png">< /p>
=nil; 여기에 유용한 예가 제공됩니다.
지난 11월, =nil; 재단은 새로운 이더넷 L2 =nil; 을 뒷받침하는 증명 가능한 샤딩 아키텍처인 zkSharding을 소개했습니다. nil; 설계의 핵심은 글로벌 상태를 여러 슬라이스로 분할하는 것입니다. 각 슬라이스는 =nil의 탈중앙화 위원회에 의해 운영되며, 블록을 구성하고 크로스슬라이스 트랜잭션을 위한 검증자를 관리합니다. 또한 각 슬라이스는 유효성 증명을 생성하여 합산을 위해 메인 슬라이스로 전송한 다음 이더에 게시하고 검증합니다. =nil; 은 두 가지 방식으로 수평적 확장의 힘을 활용합니다.
첫째, =nil; 은 이더의 강력한 합의와 데이터 가용성 보장을 활용하여 여러 전체 노드에 작업을 분산하는 모듈형 블록체인입니다.
둘째, =nil; 은 샤딩된 블록체인이므로 부분 상태를 여러 풀 노드에 분산시킵니다.
두 기술 모두 단일 머신이 감당해야 하는 부하를 줄이고 네트워크의 전반적인 확장성을 높입니다.
수평적 확장의 단점은 무엇일까요? 네트워크 및 컨센서스 복잡성과 머신 또는 샤드 간의 비동기식 통신이라는 두 가지로 요약할 수 있습니다.
이더넷 확장성의 최종 게임
수평 또는 수직 확장은 모듈형 또는 전체론적 아키텍처로 제한되지 않습니다. 그렇기 때문에 수평적 및 수직적 확장 프레임워크는 모듈형 블록체인의 확장성을 높이기 위한 새로운 솔루션을 탐색할 수 있는 더 많은 여지를 제공합니다.
예를 들어 한 가지 옵션은 모듈식 스택의 한 레이어를 수직으로 확장하는 것입니다. 널리 사용되는 접근 방식은 실행 처리량을 확장하는 병렬 가상 머신을 구현하는 것입니다. 위에서 언급했듯이, Eclipse는 병렬화를 지원하기 위해 SVM 및 기타 롤업(예: Starknet)을 사용하여 BlockSTM을 구현하고 있습니다.
그러나 수직 확장은 항상 단일 머신에 의해 제한되며, 물리 법칙을 어길 수는 없습니다.
한 가지 해결책은 슬라이싱을 통한 수평적 확장을 선택하는 것입니다.
현재의 모듈식 설계는 이제 막 수평 확장의 잠재력을 최대한 활용하기 시작했습니다. 샤딩을 사용하면 작업별로 2~3대의 머신을 분할하는 대신 원하는 수의 머신의 성능을 활용할 수 있습니다. 즉, 여러 대의 컴퓨터가 동일한 유형의 작업을 병렬로 실행할 수 있습니다. 이것이 바로 이더넷과 셀레스티아가 각각 댕크샤딩과 데이터 샤딩을 통해 달성하고자 하는 목표입니다. 그러나 샤딩은 본질적으로 데이터 가용성 계층에만 국한되는 것이 아니라 실행과 결합될 수도 있습니다(=nil; L2의 경우처럼).
모듈형 스택을 통해 달성한 수평적 확장과 샤딩이 제공하는 수평적 확장을 결합하면 사용 가능한 컴퓨팅 성능이 크게 증가합니다.
블록체인 확장성의 궁극적인 목표는 수평적 확장과 수직적 확장을 통합하여 병렬 가상 머신이 있는 샤딩된 블록체인을 만드는 것입니다.