Cardano는 UTxO 모델을 사용하며 소규모 스크립트만 온체인에서 검증됩니다. Ethereum은 계정 기반 모델을 사용하며 모든 애플리케이션 로직은 스마트 계약으로 구현됩니다. 이러한 다양한 접근 방식이 확장성 옵션에 어떤 영향을 미치는지 살펴보겠습니다.
확장성은 리소스에 관한 것입니다
확장성은 네트워크 작동을 가능하게 하는 컴퓨터 리소스에 관한 것입니다. 블록체인 플랫폼은 자원봉사자들이 운영하는 수많은 노드로 구성된 글로벌 분산형 네트워크입니다. 이는 네트워크에서 사용할 수 있는 유일한 컴퓨팅 리소스입니다. 높은 확장성을 달성하려면 이러한 리소스를 최대한 효율적으로 사용해야 합니다. 비용과 보상에 관한 주제는 별도로 다루어질 수 있습니다.
플랫폼은 가치 이전뿐만 아니라 복잡한 작업(스마트 계약)의 실행도 가능하게 합니다. 플랫폼을 설계할 때, 네트워크의 개별 기능을 어떻게 구현하여 리소스를 최대한 적게 소모하는지 고민할 필요가 있습니다.
블록체인 네트워크에는 다음 리소스가 필요합니다.
계산을 수행하고 명령을 실행하기 위한 처리 능력(CPU)입니다. 일반 거래는 일반적으로 스마트 계약 실행보다 처리 능력을 덜 소비합니다.
데이터와 정보를 저장하기 위해서는 저장공간이 중요합니다. 전체 블록체인을 영구적으로 저장해야 합니다. 또한 노드는 트랜잭션 검증 및 스마트 계약 실행을 위한 데이터(예: UTxO 세트, 지분 분배, 활성 인증서 목록 등)를 임시로 저장해야 합니다.
대역폭은 시스템의 데이터 전송 또는 통신 속도입니다.
블록체인의 확장성은 언급된 리소스의 가용성, 효율성 및 활용도에 영향을 받습니다. 확장 가능한 네트워크는 성능과 품질을 저하시키지 않고 더 많은 사용자, 트랜잭션 또는 애플리케이션을 수용하기 위해 리소스를 늘리거나 최적화할 수 있습니다.
개별 애플리케이션은 처리 능력, 스토리지 및 대역폭 요구 사항 측면에서 크게 다를 수 있습니다. 중요한 것은 플랫폼 디자인뿐 아니라 애플리케이션을 디자인하고 구현하는 팀이기도 합니다.
네트워크 설계에서는 더 많은 리소스를 공급하여 점진적인 확장성을 허용해야 하지만 여기에는 한계가 있습니다. 블록체인 네트워크에는 높은 확장성이 필요합니다. 즉, 더 많은 초당 트랜잭션(TPS)을 처리할 수 있어야 하지만 보안, 분산화 및 기능을 유지해야 합니다. 이는 팀에게 큰 도전이다.
예를 들어, 블록 크기를 늘리거나 블록 시간을 줄이면 TPS가 늘어날 수 있지만, 노드의 저장소 및 대역폭 요구 사항도 늘어나고 포크 및 분리된 블록의 위험도 늘어납니다. 노드 수를 늘리면 네트워크의 보안과 분산화가 향상될 수 있지만 합의 메커니즘의 지연 시간과 복잡성도 증가합니다.
팀은 프로젝트의 사명과 커뮤니티의 요구 사항을 염두에 두고 블록체인 네트워크의 모든 중요한 기능 사이에서 균형을 신중하게 유지해야 합니다.
팀은 확장성을 위해 보안과 분산화를 희생해서는 안 됩니다. 그러나 분산화보다 확장성이 더 중요한 프로젝트가 있을 수 있습니다.
커뮤니티는 분산 네트워크에서 분산화, 투명성 및 탄력성과 같은 이점을 기대하지만 이러한 기능은 확장성에 불리한 속성인 네트워크 대기 시간, 복잡성 및 조정과 같은 제한을 가져옵니다.
확장성은 주로 블록체인 네트워크 설계(스마트 계약 실행 포함)와 회계 모델의 영향을 받습니다. 우리는 둘 다 다룰 것입니다.
이 기사에서는 UTxO 모델을 사용하는 플랫폼인 Cardano와 스크립트 검증을 위한 Plutus 플랫폼에 대해 설명합니다. 이더리움은 스마트 계약 실행을 위해 계정 기반 모델과 EVM(Ethereum Virtual Machine)을 사용하는 대표적인 플랫폼입니다.
계정 기반 모델과 EVM을 사용하는 대부분의 플랫폼은 이더리움과 비슷한 문제를 가질 수 있습니다. 그러나 예를 들어 팀이 샤딩을 구현하면 Ethereum보다 확장성이 더 좋을 수 있습니다. 이 기사의 목적은 SC 플랫폼을 자세히 비교하는 것이 아니라 디자인의 차이점에 주목하는 것입니다.
회계 모델의 차이점
UTXO 모델은 각 거래 출력(UTxO)이 소유자가 사용할 수 있는 디지털 자산을 나타내는 검증 시스템과 같습니다.
UTxO 모델의 장점 중 하나는 더 많은 병렬 처리를 허용한다는 것입니다. 즉, 동일한 UTxO를 사용하지 않는 한 네트워크의 여러 노드에서 트랜잭션을 독립적으로 동시에 처리할 수 있습니다.
이는 주어진 시간에 더 많은 트랜잭션을 확인하고 확인할 수 있으므로 네트워크의 확장성과 처리량을 향상시킬 수 있습니다. 또한 UTxO 모델은 각 노드가 해당 트랜잭션과 관련된 UTxO만 추적하면 되므로 노드 간 동기화 및 조정의 필요성을 줄입니다.
UTxO 모델은 트랜잭션을 실행하는 데 복잡한 논리나 스마트 계약이 필요하지 않으므로 간단하고 안전합니다. 거래의 유효성과 신뢰성을 확인하기 위한 간단한 산술 연산과 암호화 확인만 포함됩니다.
UTxO 모델의 단점은 서로 다른 주소에 분산될 수 있는 많은 작은 UTxO를 생성하므로 조각화되기 쉽다는 것입니다(Cardano 및 Bitcoin 사용자는 일반적으로 여러 주소에 자금을 보유합니다). 지출 요청을 이행하려면 더 많은 입력과 출력이 필요할 수 있으므로 거래 수와 크기가 증가할 수 있습니다.
UTxO 모델은 또한 트랜잭션과 관련된 모든 UTxO를 저장하고 전송해야 하기 때문에 노드의 저장 및 대역폭 요구 사항을 증가시킵니다.
계정 기반 모델은 각 계정에 트랜잭션을 통해 업데이트할 수 있는 잔액이 있는 데이터베이스 시스템과 비슷합니다. 트랜잭션은 계정의 전역 상태를 업데이트해야 하므로 노드 간에 더 많은 동기화와 조정이 필요합니다.
글로벌 상태는 네트워크의 모든 계정 잔액과 상태의 모음으로, 시간이 지남에 따라 증가하고 모든 노드에서 저장되고 확인되어야 합니다.
계정 기반 모델에서는 트랜잭션이 다른 트랜잭션의 상태에 의존하거나 영향을 미칠 수 있으므로 병렬 처리가 덜 허용됩니다. 트랜잭션은 순차적으로 실행되어야 하고 다른 노드에서 독립적으로 또는 동시에 처리할 수 없기 때문에 이는 네트워크의 확장성과 처리량을 감소시킬 수 있습니다.
전역 상태는 모든 노드에서 계산하고 확인해야 하므로 많은 처리 능력을 소비합니다. 이는 특히 복잡하거나 대규모 거래 또는 복잡한 스마트 계약 실행에 적용됩니다. 다음 섹션에서는 토큰 전송 및 스마트 계약 실행에 대해 설명하겠습니다.
UTxO 모델을 사용하는 블록체인은 트랜잭션을 병렬로 검증할 수 있기 때문에 (적어도 이론상으로는) 계정 기반 모델보다 더 높은 확장성과 처리량을 달성할 수 있습니다. 계정 기반 모델을 사용하는 블록체인은 전역 상태 종속성으로 인해 병목 현상이나 정체에 직면할 수 있습니다. 물론 계정 기반 모델을 사용하는 블록체인도 확장성이 뛰어납니다. 여기에는 두 번째 레이어(롤업, 사이드체인 등)가 더 적합합니다.
병렬화는 작업 부하를 여러 노드에 분산하여 시스템의 성능과 품질을 향상시킬 수 있으므로 확장성에 유리합니다(노드가 유휴 상태일 필요가 없으므로 리소스 활용도 향상). 이는 시스템의 속도, 처리량 및 용량을 증가시킬 뿐만 아니라 더 많은 기능과 프로그래밍 가능성을 활성화할 수 있습니다.
그러나 병렬성에는 조정 및 동기화와 같은 새로운 과제도 발생합니다. 작업 부하를 여러 노드에 분산할 수 있지만 네트워크는 시스템의 일관성과 정확성을 보장해야 합니다. 서로 다른 노드에서 거래가 서로 독립적으로 검증되더라도 이중 지출이 발생해서는 안 됩니다.
계정 기반 모델은 보다 안전한 접근 방식(노드 간 조정 및 동기화가 적음)으로 보일 수 있지만 비효율성(높은 확장성을 달성하기 어려움)이 있습니다. 문제는 비효율성을 해결해야 하고, 이는 결국 복잡성(샤딩)으로 이어진다는 점입니다.
플랫폼 디자인의 차이점
Cardano가 거래의 유효성을 검사하기 위해 스마트 계약을 실행해야 하는 경우 일반적으로 간단한 스크립트의 유효성만 검사합니다. 유효성 검사기 스크립트에는 일반적으로 몇 가지 간단한 조건(1개만 사용하는 것이 좋음)만 포함되어 있으며 그 결과는 True 또는 False 반환 값뿐입니다(True 값은 UTxO 지출을 활성화합니다). 스크립트는 다른 계약을 호출하거나 복잡한 계산을 수행하는 등 복잡한 작업을 수행하기 위한 것이 아닙니다.
Cardano의 스마트 계약은 온체인(검증기 스크립트)과 오프체인 로직으로 구성됩니다. 모든 복잡한 스마트 계약 작업은 오프라인으로 수행되며 분산 네트워크 리소스를 소비하지 않습니다. 오프체인 로직을 실행하기 위해서는 사용자(지갑)나 서버(클라우드)의 자원이 소모됩니다. 팀은 상호 상호 작용 측면에서 플랫폼의 기능에 의해 제한되지 않으므로 애플리케이션을 구성할 수 있습니다.
이 접근 방식은 분산화 측면에서 단점이 있을 수 있습니다. Cardano 생태계의 많은 DEX는 배처(Batcher)를 사용합니다. 그러나 계약의 오프체인 부분은 분산화될 수 있습니다.
스마트 컨트랙트를 실행하는데 필요한 경우가 얼마나 되는지도 중요합니다. Cardano에는 토큰 전송이 Cardano 프로토콜에 의해 직접 보장되며 스마트 계약(또는 스크립트)을 실행할 필요가 없다는 고유 자산이 있습니다.
Cardano는 또한 한 번의 거래로 여러 토큰을 여러 수신자에게 전송할 수 있다는 점에서 효율적입니다. 이는 주로 저장 공간과 대역폭을 절약합니다. DEX는 여러 개의 스왑이 있는 하나의 대규모 트랜잭션을 생성할 수 있습니다.
이더리움에는 기본 자산이 없습니다. 모든 토큰은 계정 간 전송을 포함하여 토큰과의 모든 상호 작용에 대해 실행되어야 하는 스마트 계약을 통해 생성됩니다. 이는 기본 자산의 경우보다 네트워크의 컴퓨팅 리소스를 더 많이 요구합니다.
Ethereum의 스마트 계약에는 대부분 모든 애플리케이션 논리가 포함되어 있습니다. 따라서 실행에는 네트워크 리소스가 매우 많이 필요합니다. 거래와 마찬가지로 스마트 계약도 순차적으로 실행되어야 합니다.
ETH 전송을 제외하고 Ethereum이 수행하는 거의 모든 작업에는 스마트 계약 실행이 필요합니다.
더 나은 확장 방법에 대한 가능성에 대해 이야기하고 있다면 리소스 활용이라는 렌즈를 통해 이를 살펴볼 필요가 있습니다. 리소스는 항상 제한되어 있으며 목표는 사용을 최대화하는 것입니다. 즉, 주어진 양의 리소스를 사용하여 최대 TPS를 달성한다는 의미입니다.
네트워크에 새로운 리소스를 추가한다고 해서 해당 리소스가 효율적으로 사용된다는 의미는 아닙니다.
네트워크에 수백 개의 노드가 있지만 한 번에 한 블록만 작업할 수 있다면 비효율적입니다. 네트워크에 새로운 블록 생산자 노드(새 리소스)를 추가하면 분산화가 증가하지만 반드시 처리량과 용량이 필요한 것은 아닙니다(조정이 더 느려질 수도 있음). 이것이 Cardano(비트코인 및 기타 많은 블록체인도 포함)의 현재 상태입니다.
여러 노드가 이더리움 네트워크에서 새로운 블록 생성에 참여하지만 이는 병렬화가 아닙니다. 한 노드는 블록을 제안하고 다른 노드는 이를 사전 승인합니다. 이렇게 하면 블록 마무리가 증가하지만 네트워크 처리량과 용량은 증가하지 않습니다.
입력 엔더서
UTxO 기반 모델과 계정 기반 모델의 차이점은 IE(Input Endorsers) 기능(Ouroboros Leios)을 보면 잘 설명할 수 있습니다. IE는 Cardano의 확장성을 향상시킬 수 있는 한 가지 방법입니다. IE가 Cardano의 확장성을 어떻게 향상시키는지 보여주고, 계정 기반 모델의 경우 유사한 기능을 구현할 수 없는 이유도 설명합니다.
카르다노의 확장성과 효율성은 블록 생성에서 트랜잭션 선택을 분리함으로써 향상될 수 있습니다. 거래는 블록에 삽입되기 전에 네트워크에 의해 사전 처리(사전 검증)될 수 있습니다. 거래는 입력 승인자(지분에 따라 무작위로 선택된 노드)에 의해 선택되고 승인될 수 있습니다. 승인된 거래는 네트워크를 통해 전파되고 블록 생산자가 이를 블록으로 묶기 전에 다른 노드에 의해 처리됩니다. 블록에는 승인된 거래에 대한 참조만 포함됩니다.
트랜잭션이 블록에 포함되면 여러 노드로부터 확인을 받습니다. 이는 거래의 최종성을 향상시킵니다.
IE는 합의를 기다리지 않고 트랜잭션을 지속적으로 스트리밍할 수 있으므로 지연 시간과 블록 전파 시간의 가변성을 줄입니다. 이는 또한 네트워크의 속도와 응답성을 향상시킵니다.
트랜잭션은 블록에 포함되기 전에 여러 노드에서 병렬로 처리될 수 있으므로 네트워크의 처리량과 용량이 늘어납니다. Cardano는 더 많은 거래를 처리할 수 있게 될 것입니다(더 복잡해질 수도 있습니다).
IE는 UTXO 모델, 더 정확하게는 병렬성을 활용합니다.
IE는 블록체인 네트워크를 확장하는 또 다른 기술인 샤딩과 다릅니다. IE는 모든 노드가 블록에 포함되기 전에 동일한 승인된 트랜잭션을 처리하므로 교차 샤드 통신이나 동기화가 필요하지 않습니다.
IE는 네트워크의 각 샤드 또는 레이어의 확장성과 효율성을 향상시킬 수 있으므로 샤딩을 보완합니다. 따라서 IE가 구현되면 Cardano는 샤딩을 가질 수 있습니다.
IE는 계정 기반 모델에 쉽게 적용되지 않을 수 있습니다.
각 트랜잭션의 유효성 검사는 모든 이전 트랜잭션의 유효성 검사, 즉 전역 상태에 따라 달라집니다. Ethereum 노드는 (미래의) 전역 상태를 알지 못하면 트랜잭션을 (미리) 검증할 수 없습니다. 계정 기반 모델은 트랜잭션이 계정의 전역 상태를 업데이트해야 하므로 노드 간 더 많은 동기화와 조정이 필요합니다.
즉, 이더리움 노드는 트랜잭션의 일부를 가져와 다른 트랜잭션과 독립적으로 확인할 수 없습니다. 문제는 전역 상태가 네트워크의 한 위치(블록 생산자)에서만 변경되고 다른 모든 노드는 새 블록을 확인할 수 있을 때까지 기다린다는 것입니다. 따라서 그들은 유휴 상태입니다(새 블록만 사전 승인할 수 있음).
샤딩
이더리움에는 샤딩이 있어야 했지만 팀은 이 의도를 포기하고 이제 두 번째 레이어로 기울고 있습니다. 계정 기반 모델의 샤딩이 어떻게 생겼는지 생각해 봅시다.
샤딩은 블록체인을 샤드라고 불리는 더 작은 조각으로 분할하여 트랜잭션을 병렬로 처리하는 기술입니다. 샤딩은 네트워크의 확장성과 처리량을 높일 수 있지만 새로운 과제와 절충점도 발생합니다.
전역 상태와 관련된 과제 중 하나는 서로 다른 샤드의 계정 또는 계약과 관련된 트랜잭션인 크로스 샤드 트랜잭션의 일관성과 보안을 어떻게 보장할 것인가입니다. 샤드 간 트랜잭션에는 샤드 간의 조정과 통신이 필요하므로 지연 시간과 복잡성이 발생할 수 있습니다.
더욱이, 교차 샤드 거래는 악의적인 행위자가 거래의 순서나 유효성을 조작하려고 시도하는 이중 지출 또는 재정렬 공격의 위험에 직면할 수 있습니다.
각 샤드에는 자체 전역 상태가 있으며 이 상태는 모든 샤드 간에 동기화되어야 합니다. 각 샤드는 고유한 독립적인 상태를 가질 수 있으며, 이는 고유한 계정 잔액 및 스마트 계약 세트를 의미합니다. 네트워크의 전역 상태(모든 샤드를 함께)는 고정된 상태가 아닙니다. 이는 샤드 간의 상호 작용과 합의에 따라 역동적이고 진화하는 상태여야 합니다.
네트워크가 주어진 시간에 하나의 상태를 갖는다면 엄청나게 비효율적일 수 있으며 많은 통신과 동기화가 필요할 수 있습니다.
이더리움에 샤딩이 있더라도 글로벌 상태와 관련된 비효율성으로 인해 여전히 어려움을 겪을 것입니다. 각 샤드는 자체 전역 상태를 갖습니다. 각 샤드에서 새로운 블록은 다른 샤드와 독립적으로 생성되지만(병렬화의 한 형태) 똑같이 비효율적인 방식입니다. 즉, 각 라운드에는 항상 블록을 트랜잭션으로 채우는 한 명의 블록 생산자와 이 블록을 검증할 수 있도록 기다리는 것 외에는 아무것도 할 수 없는 여러 노드가 있습니다. 모든 샤드의 전역 상태를 동기화해야 하면 모든 것이 복잡해집니다. 서로 다른 샤드의 노드는 유효한 전역 상태에 동의하기 위해 서로 통신해야 합니다. 그 이유는 한 네트워크의 사용자와 자산이 서로 다른 샤드에 있기 때문입니다.
Cardano에서 샤딩을 구현하는 것도 큰 도전이 될 것입니다. 그러나 계정 기반 모델의 경우보다 간단합니다. 입력 엔도서 기능이 준비되면 이를 고려할 수 있습니다.
EUTxO 모델은 자연스러운 병렬성 덕분에 계정 기반 모델에 비해 샤딩 구현에 몇 가지 이점을 가질 수 있습니다.
여러 노드가 동시에 샤딩에 적극적으로 참여할 수 있습니다. IE가 도움이 될 것입니다. 합의를 기다리지 않고 트랜잭션을 지속적으로 스트리밍할 수 있으므로 샤드 간 트랜잭션의 지연 시간과 복잡성이 줄어듭니다.
계정 기반 모델과 유사하게 샤딩에는 샤드 전체의 노드 간에 더 많은 동기화와 조정이 필요합니다. 그러나 IE는 샤드 내 합의 속도를 높여 Cardano의 샤딩 기능을 크게 향상시킵니다.
노드는 자신의 샤드(예: 자체 UTxO 세트)를 인식해야 할 뿐만 아니라 주변 샤드도 최소한 부분적으로 인식해야 합니다. 네트워크의 일종의(동적이며 진화하는) 전역 상태(모든 샤드를 함께)를 구현해야 할 수도 있습니다.
계정 기반 또는 UTxO 기반 모델에서 샤딩을 구현하는 것은 간단한 작업이 아닙니다. UTxO 모델의 경우(주로 병렬성 덕분에) 이것이 더 쉬울 수 있지만 확실히 쉬운 목표는 아닙니다.
결론
블록체인(및 플랫폼)의 확장성은 회계 모델, 네트워크 설계, 최적화 등의 영향을 받습니다. 예를 들어, 미스릴을 사용하면 블록체인의 전체 상태를 저장하지 않고 암호화 증명을 사용하여 거래를 확인하는 노드인 무상태 클라이언트를 생성할 수 있습니다.
내 생각에 확장성은 주로 컴퓨팅 리소스를 최선의 방법으로 현명하게 사용하고 리소스를 추가하는 능력에 관한 것입니다. 그러나 여기에는 중앙 집중식 네트워크와 달리 한계가 있으며 팀은 중요한 네트워크 속성 간의 균형을 유지해야 합니다.
UTxO 기반 모델이 확장성 측면에서 더 유리한 것처럼 보이더라도 플랫폼이 제공하는 특정 사용 사례에 대해서는 최상의 솔루션이 아닐 수도 있습니다.
프로젝트의 가장 좋은 자산은 프로젝트를 시장 상황이나 커뮤니티 희망에 맞게 조정하고 주어진 순간에 채택에 필요한 솔루션을 제공할 수 있는 팀입니다. 낮은 확장성은 광범위한 채택을 방해하는 장벽입니다. 첫 번째 레이어에 수천 개의 TPS가 있지만 상위 10위 안에 들지 않는 프로젝트가 있습니다.