비교: 다른 확장성 솔루션
블록체인, 데이터 가용성 그리고 확장성
데이터 가용성이란 데이터를 만드는 마이너(혹은 블록 생산자)가 이중지불이 담긴 트랜잭션을 블록에 담고 이를 주변 노드에 전파하지 않는 상황을 뜻한다. 블록체인은 그 자체로 데이터 가용성 해결을 위한 프로토콜로 볼 수 있다. 대표적인 블록체인의 합의 알고리즘인 작업증명(Proof of Work)의 경우 마이너가 만들어낸 블록을 주변에 전파하지 않을 경우 (51%의 해시파워를 점유하지 않는 한)가장 긴 블록으로 인정되지 않고, 블록을 만들어낸 과정에서 발생한 비용은 돌려받기 어렵기 때문에 데이터가 가용치 못한 상황을 미연에 방지할 수 있다.
플라즈마의 경우 유독 데이터 가용성 문제가 부각되는데, 그 이유는 확장성을 위해 레이어2의 모든 블록 데이터를 루트체인에 기록하지 않고, 그 요약본인 머클 루트만을 기록하기 때문이다. 블록의 머클 루트만으로는 실제 블록의 트랜잭션의 내용을 파악할 수 없으므로, 플라즈마 오퍼레이터(플라즈마 마이너)가 의도적으로 이중지불이 담긴 블록을 만들어내고 이러한 내용이 담긴 블록의 전파를 하지 않는다면 플라즈마의 자산 안정성(asset security)은 위협받게 된다. 이러한 상황을 막기 위해 각각의 플라즈마 솔루션은 별도의 데이터 가용성 이슈에 대한 대비책을 두고 있다.
사이드체인의 경우 자체적인 합의를 통해 불가용한 상황을 극복하고(다수의 검증자와 블록 생산자 확보하고 2/3이상의 투표를 통해 블록을 생성하는 등), 롤업은 발생한 모든 트랜잭션 자체를 루트체인에 기록해 데이터 가용성 문제를 해결한다. 이렇듯 각각의 확장성 솔루션은 데이터 가용성에 관한 접근 및 해결 방식이 다르기 때문에 특정한 영역에서 각각의 장단점 또한 명확하다.
플라즈마 vs 롤업 vs 사이드체인
Name | Plasma | Rollup | Sidechain |
---|---|---|---|
Consensus 보장 방법 | 플라즈마 블록의 머클 루트를 부모체인에 기록 | 롤업 블록을 통째로 부모체인에 기록 | 단순 블록 마이닝 |
Security 수준 | 부모체인의 합의 안정성에 비례 | 부모체인의 합의 안정성이 비례 | 자체 합의 알고리즘 안정성 비례 |
Examples | LeapDAO, Plasma Group, Tokamak Network | zk-Rollup 등 | Polkadot, Loom Network, Matic Network, Skale |
사이드체인과 플라즈마 모두 독립된 두 체인을 연결한다는 점에서 유사해 보인다. 다만 사이드체인은 자체적인 합의 알고리즘을 가지고 있는 반면에, 플라즈마는 별도의 합의 과정이 필요 없다. 따라서 사이드체인의 자산 안정성(asset security)은 자체적으로 확보한 마이닝(혹은 벨리데이팅)의 안정성에 비례하지만, 플라즈마의 자산 안정성은 부모체인(parent chain)에 의존한다. 만약 개별 사이드체인이 충분한 안정성을 확보하지 못해 51% 공격 등에 노출된다면, 유저들의 자산은 온전히 보장되지 못한다. 반면에 개별 사이드체인은 독립적인 합의를 하기 때문에 연결된 다른 블록체인이 공격을 당한다고 해도 자체적인 합의가 안정적으로 동작 하는한 문제가 발생하지 않는다. 플라즈마는 합의 알고리즘 없이 부모체인에 안정성에 의존하기 때문에, 부모체인이 안정적으로 동작하는 한 플라즈마 체인의 자산 안정성은 유지된다.
플라즈마는 독립된 블록체인이라기 보다는 스마트 컨트랙트에 더 개념적으로 가깝다. 부모체인에 주기적으로 플라즈마 블록의 머클 루트를 기록하고, 일정한 조건이 만족한 머클 루트만이 확정된(finalized) 블록으로써 스마트 컨트랙트를 통해 인정된다. 만약 기록된 머클 루트와 실제 만들어진 플라즈마 블록의 내용이 다르다면, 유저들은 챌린지(challenge)라 불리는 스마트 컨트랙트를 통해서 데이터를 정정할 수 있다.
롤업은 플라즈마와 많은 기저 아키텍처를 공유하고 있다. 다만 가장 큰 차이는 플라즈마는 플라즈마 블록의 머클만을 루트체인에 기록하는 반면, 롤업은 블록의 전체 내용을 모두 루트체인에 기록한다는 점에서 차이가 있다.
사이드체인 모델과의 비교
스케일 네트워크
요약
스케일 네트워크(Skale Network)는 노드 선택의 랜덤성을 통해서 각각의 사이드체인의 데이터 가용성 문제를 해결하고 있다. 일정한 양의 스케일 토큰을 이더리움에 예치한 유저는 노드가 될 수 있는 권한을 획득한다. 이 렇게 만들어진 노드들이 풀을 이루고 있는 상황에서, 어떠한 사이드체인이 만들어질 필요가 있다면 이 풀에서 16개 이상의 서브 노드(subnode)가 랜덤하게 선택되어 해당 사이드체인의 블록 생성자가 된다. 이렇게 선출된 서브 노드들은 사이드체인 블록을 만들기 위해 2/3이상의 서명을 블록에 담아야 한다.
데이터 가용성
스케일 네트워크는 개별 사이드체인의 노드를 랜덤하게 선출하고, 선출된 노드들의 2/3이상의 서명을 모두 담는 과정을 통해 노드들이 담합하여 데이터가 불가용하게 되는 상황을 방지한다.
상호 운용성
서브노드 중 랜덤으로 선택된 에이전트(Agent)가 5분을 주기로 사이드체인-루트체인, 혹은 사이드체인-사이드체인간 메시지를 전달한다.
거짓 증명
랜덤으로 선출된 2/3이상의 노드들의 모든 모든 서명을 담아서 검증하는 방식으로 이중지불을 방지한다.
토카막 네트워크와 비교
스케일 네트워크의 개별 사이드체인의 자산 안정성(Asset Security)은 이더리움의 안정성과는 관계없이 확보된 많은 수의 노드 풀과 이들을 선출하는 랜덤 함수의 안정성에 비례한다. 반면에 토카막 네트워크의 자산 안정성은 노드 숫자 및 랜덤 함수의 안정성과 관계가 없으므로 이러한 이러한 수단을 갖출 필요가 없는 점에서 차이가 있다. 상호운용성 측면에서 토카막 네트워크는 별도의 랜덤선택된 에이전트와 같은 파티 없이 플라즈마 마이너(오퍼레이터)가 이러한 요청을 직접 받아 반영한다. 또한 스케일은 선출된 노드들의 합의를 통해서 이중지불을 방지하는 반면, 토카막 네트워크는 커밋-챌린지 방식으로, 루트체인에 만들어둔 판사 컨트랙트(judge contract)의 도움을 받아 이중지불을 방지한다.
매틱 네트워크
요약
이더리움에 매틱 토큰(matic token)을 예치(stake)하면 "스테이커(Staker)"가 된다. 스테이커 중 일정 기준을 충족하면 "블록 생산자(Block Producer)"가 된다(블록 생산자는 스태이커들의 투표를 통해 선출된다). 블록 생산자는 소수로 구성되며, 소수의 블록 생산자가 매틱 네트워크의 사이드체인 블록 생성하기 때문에 빠른 블록 생성 주기를 가질 수 있다.
매틱 네트워크(Matic Network)는 스테이커 중에서 주기적으로 생산자(producer)를 선출하고, 선출된 제안자는 몇 개의 매틱 블록의 머클 해시인 체크포인트(checkpoint)를 생성하여 이더리움에 기록한다. 체크포인트는 일정 기간동안(within a specified period of time) 다른 스테이커들에게 검토(challenge)를 거친 후에, 최종적으로 확정(finalized)된다. 확정된 체크포인트에 속하는 매틱 네트워크의 사이드체인 블록 또한 동시에 확정된다.
데이터 가용성(Data Availability)
매틱 네트워크 사이드체인의 데이터 가용성은 선출된 블록 생산자와 체크포인트 생산자에 의해서 결정된다. 만약 이들이 결탁을 하여 더이상 블록을 주변에 전파하지 않는다면 데이터는 불가용한 상태가 된다. 다만 공격자는 블록 생산을 통해 경제적 이득(추가발행 토큰)을 가져가기 때문에 데이터 가용성 공격의 이득과 손실을 비교할 것이다.
상호 운용성(Interoperability)
매틱 네트워크는 유저가 이더리움 메인체인과 사이드체인 양쪽에 각각 트랜잭션을 날리는 방식으로 상호운용성을 보장한다. 매틱은 이더리움 메인체인에 루트체인 컨트랙트(Rootchain Contract)를 만들어두고, 이곳에 상호운용 가능한 트랜잭션을 정의한 후, 이렇게 만들어진 트랜잭션과 실제 사이드체인에 담긴 트랜잭션을 비교한다.
거짓 증명(Fraud Proof)
매틱의 거짓 증명 방식은 문제가 발생한 트랜잭션에 관한 증거를 이더리움 메인체인에 적절한 양식을 갖춰 제출하는 것이다. 기본 트랜잭션 증거, 블록단위 증거, 논스 검증, 리시트 검증, 예치 검증, ERC20 전송 검증 등이 있다.
토카막 네트워크와 비교
매틱 네트워크 사이드체인의 데이터 가용성은 선출된 블록 생산자에 의해 크게 좌우된다. 만약 충분한 경제적 이익이 발생하지 않거나 블록 생산자 투표가 적절하게 이뤄지지 않는다면 매틱의 사이드체인은 곧바로 불가용한 상태가 빠질 수 있다. 반면에 토카막 네트워크는 프로토콜 수준에서 지속적인 리베이스(Continuous Rebase) 과정을 통해 불가용한 상태에 빠지기 전에 모두의 자산을 빠져나갈 수 있는 수단을 마련하기 때문에 블록 생산자의 경제적 인센티브에 데이터 가용성 문제가 의존하지 않는다.
상호운용성 측면에서 매틱은 양쪽 체인에 트랜잭션을 날려야 하는 유저 경험상의 복잡함이 있는 반면, 토카막 네트워크의 플라즈마는 마이너(오퍼레이터)가 루트체인을 지켜보다가 상호 운용이 필요한 트랜잭션이 발생하면 이를 곧바로 플라즈마 블록에 반영하기 때문에 유저들 입장에서 더욱 간편하다.
이중지불 방지 측면에서 매틱과 토카막의 접근 방향은 같은데, 블록이 확정되기 전 일정한 기간 동안의 유예기간을 두고, 해당 기간 안에 문제점이 발견되면 이에 대한 증거를 바탕으로 챌린지(challenge)를 걸어 거짓 거래를 정정하고 상금을 받아간다.
토카막 네트워크과 (매틱,스케일) 네트워크간의 연결
토카막 네트워크의 프로토콜을 이용해서 매틱 혹은 스케일 네트워크의 사이드체인을 루트체인으로 하는 플라즈마 체인을 만들어 낼 수 있다. 다만 이 경우 토카막 네트워크의 자산 안정성은 루트체인으로 사용되는 매틱과 스케일 사이드체인의 안정성에 의존하게 된다.
롤업 모델과의 비교
옵티미스틱 롤업
요약
롤업의 블록 생산자(aggregator, block producer)는 유저들의 트랜잭션을 모아 연산을 해서 상태 루트(state root)를 구하고, 트랜잭션 전체와 상태 루트값을 이더리움 메인체인에 기록한다.
데이터 가용성(Data Availability)
트랜잭션 자체가 모두 올라가고, 블록 생산자는 누구나 될 수 있기 때문에 데이터가 불가용한 상황은 발생되기 어렵다
상호 운용성(Interoperability)
트랜잭션 모두가 이더리움 메인체인에 기록된다는 점을 제외하면 상호운용성과 관련된 모든 아키텍처는 플라즈마 혹은 샤딩과 같다.
거짓 증명(Fraud Proof)
이더리움 메인체인에 기록된 상태 루트와 트랜잭션을 누구나 검증할 수 있고, 일정한 기간이 지나기 전까지 확정되지 않는다. 이러한 구조 때문에 롤업에서 블록 생산자(aggregator) 혹은 유저들이 만들어낸 이중지불 트랜잭션이 확정되기 어렵다.
토카막 네트워크와 비교
옵티미스틱 롤업의 경우 트랜잭션 전체를 루트체인에 모두 기록한다는 점과 기록하는 당사자인 블록 생산자(aggregator)가 따로 정해지지 않고 누구나 될 수 있다는 점에서 토카막 네트워크와 차이점이 있다. 옵티미스틱 롤업은 모든 트랜잭션을 루트체인에 업로드 함으로써 데이터 불가용 상황을 막고, 토카막 네트워크는 누구나 탈출할 수 있는 충분한 기간을 둠으로써 불가용 공격을 방지한다.
루트체인에 단일 트랜잭션에 n개의 트랜잭션을 담을 수 있다고 하면, 롤업의 확장성은 n배로 증가하지만, 토카막 플라즈마는 n^n배로 늘어나기 때문에 롤업의 확장성은 토카막에 비해서 상대적으로 제한된다.
zk-Rollup
zk롤업은 기존 롤업에 영지식증명(zero knowledge proof)를 더한것이다. zk롤업의 블록 생성자(aggregator)는 트랜잭션과 상태 루트값 뿐만 아니라, 상태루트값을 변경한 영지식 증거를 동시에 루트체인에 업로드한다. 영지식 증거가 첨부되었기 때문에 zk롤업의 경우 별도의 연산 검증 기간이 필요 없고, 따라서 빠르게 롤업 블록을 확정할 수 있다.
다른 플라즈마 모델과의 비교
플라즈마는 플라즈마 블록의 요약본(머클 루트)를 주기적으로 이더리움 메인체인에 기록하고, 이중지불 등의 문제가 생기면 이러한 요약본을 근거로 기록을 되돌리거나 취소하고 블록 생성자를 처벌하는 공통적인 구조를 공유하고 있다.
단순전송 : 플라즈마 MVP
요약
유저는 본인들이 만들어낸 트랜잭션의 요약본(트랜잭션 루트)이 플라즈마 마이너(오퍼레이터)를 통해 루트체인에 기록된 후에 해당 루트에 본인의 tx가 포함되었음을 확인하는(confirmation signature)를 별도로 남긴다.
데이터 가용성
마이너(오퍼레이터)가 플라즈마 블록을 제대로 생성했는지 유저들이 확인 서명(confirm signature)을 남기지 않으면 플라즈마 블록이 유효하지 않기 때문에, 데이터가 불가용한 상황은 발생하지 않는다.
단순전송 : 플라즈마 CASH
데이터 가용성
유저들은 트랜잭션에 전에 본인의 토큰이 어디서 시작되었는지에 관한 기록과 이전까지 본인의 토큰이 사용 되지 않았다는 증거 모두를 포함시킨다. 만약 플라즈마 마이너(오퍼레이터)가 이중지불을 하고 블록을 숨긴다고 하더라도, 이중지불한 토큰을 탈출(exit)시켜 쓰기 위해서는 본인의 블록을 보여줄 수밖에 없다.
일반 상태 : Plapps(Predicate)
요약
상태 객체(state object)에 상태를 저장하고, 해당 상태 객체의 상태 변경 조건(spending condition)을 predicate에 별도로 기록한다. 상태 객체의 상태 변경이 올바른지는 predicate을 통해 검증한다.
데이터 가용성
상태 객체의 오너(owner, 결국 유저)가 해당 상태 변경을 확인했다는 서명을 포함해 루트체인에 기록한다.
일반 상태 : Plasma Leap
요약
Non-fungible Storage Token (NST)을 통해 상태를 표현하고 해당 NST의 상태 변경 조건(spending condition)을 별도로 정의하여 상태 변경을 구현했다.
데이터 가용성
플라즈마 MVP에서 사용하는 priority of an output 대신 Youngest-Input Priority를 사용하고, 이를 통해 데이터 가용성 문제가 발생하더라도 정직한 사용자들에게 탈출 우선권을 부여하는 방식으로 데이터가 불가용해지는 상황을 극복한다.