미완성 롤업 가이드라인 (An Incomplete Guide to Rollups)
비탈릭 형님이 풀어주는 이더리움 확장성 이야기
Hyunbin Jeong in CURG
Title : An Incomplete Guide to Rollups
Author : Vitalik Buterin2021.01.05 vitalik.ca (link)
이더리움 확장성 이슈에 대해 탐색하던 도중, 문득 생각이 나 들어간 비탈릭 부테린 블로그에서 발견한 롤업 관련 포스팅을 보고 우리말로 가능한 옮겨보고자 하였다.
롤업과 관련된 전반적인 스토리를 두루 설명하기 때문에 길이는 조금 긴 편이지만, 기술적 깊이가 엄청나거나 하지는 않기 때문에 가벼운 마음으로 느긋하게 읽으면 좋을 듯하다. 혹시라도 글을 읽다가 ‘이거 맞나..?’ 같은 생각이 들어도 당황하지 말자. 이 글은 원문부터 ‘Incomplete’ 를 깔고 들어가는 글이기 때문에 충분히 그럴 수 있다.
이더리움 10k 가즈아 !
※ 일부 그림은 외부에서 가져온 별도 자료이다.
롤업은 현재 이더리움 커뮤니티에서 큰 인기를 끌고 있으며, 머지 않은 미래에 이더리움의 핵심적인 확장성 솔루션이 될 수 있다. 하지만 이 기술이 무엇이고, 이 기술로부터 무엇을 기대할 수 있으며, 어떻게 사용할 수 있을까? 이 포스트를 통해 몇몇 핵심 질문들에 대해 답을 주고자 한다.
배경지식: 레이어-1이란 무엇이고, 레이어-2 확장이란 무엇인가?
블록체인 생태계를 확장하는 두 가지 방법이 있는데, 하나는 블록체인 자체의 트랜잭션 처리능력을 높이는 것으로, 이 기법의 주요 난제는 “더 큰 블록”이 블록체인의 검증을 어렵게 하고 이를 더 중앙화시킬 수 있다는 점이다. 이런 리스크를 피하기 위해 개발자들은 클라이언트 소프트웨어의 효율을 높이거나, 혹은 샤딩과 같은 기술을 적용하여 체인을 구축하고 검증하는 작업이 여러 노드들에 분산되도록 하는, 보다 지속 가능한 방법을 택할 수 있다. (“eth2”라고 알려진 그것이 현재 이더리움에 이 업그레이드를 구축하고 있다)
다른 하나는 블록체인을 사용하는 방법을 바꾸는 것이다. 블록체인에 모든 것을 집어넣는 대신, “레이어 2” 프로토콜의 오프체인에서 대부분의 작업을 행할 수 있다. 온체인의 스마트 컨트랙트는 입출금 처리와 오프체인에서 발생하는 일들이 정해진 규칙을 따르고 있다는 증명을 검증하는 작업만 수행한다. 이러한 증명을 처리하는 다양한 방법이 있는데, 온체인에서 증명을 검증하는 것이 오프체인에서 원래의 연산을 수행하는 것보다 훨씬 저렴하다는 공통점을 갖는다.
스테이트 채널 vs 플라즈마 vs 롤업
레이어-2 확장(scaling)의 세 가지 메이저 타입으로 스테이트 채널, 플라즈마, 그리고 롤업이 있다. 세 가지 모두 장단점이 서로 다른 패러다임으로, (용어 논란이 있기는 하지만 — 참조: “validium”) 현재 시점에서 어떤 레이어-2 확장 방법이라도 거의 이 세 가지 카테고리에 포함된다고 볼 수 있다.
어떻게 채널이 동작하는가?
See also :
https://www.jeffcoleman.ca/state-channels
https://statechannels.org/
앨리스가 밥에게 인터넷 연결을 제공하고, 밥이 앨리스에게 1MB당 $0.001를 지불하는 경우를 상상해보자. 각 지불 건마다 트랜잭션을 실행하는 대신, 두 사람은 다음과 같은 레이어-2 방식을 사용한다.
먼저, 밥이 스마트 컨트랙트에 $1 (또는 동등한 가치의 이더리움이나 스테이블코인)을 예치한다. 밥은 앨리스에게 요금을 지불하기 위해 “$0.001” 라고 적힌 “티켓”(오프체인 메시지)에 서명하여 보내고, 이후 두 번째 요금을 지불할 때는 “$0.002” 라고 적힌 다른 티켓에 서명하여 앨리스에게 보낸다. 지불이 필요한 만큼 동일한 절차를 따를 수 있고, 앨리스와 밥의 거래가 모두 완료되면, 앨리스는 가장 높은 가격이 붙은 티켓에 서명하여 체인에 배포할 수 있다. 스마트 컨트랙트는 앨리스와 밥의 서명을 검증하고, 밥의 티켓에 적혀 있는 만큼 앨리스에게 지불한 뒤 차액을 밥에게 반환한다. 앨리스가 (악의적으로, 또는 어떠한 기술적 이슈로 인하여) 채널을 닫기를 원치 않을 경우, 밥은 출금 기간(ex. 7일)을 개시할 수 있고, 앨리스가 해당 기간 내에 티켓을 제공하지 않을 경우 돈을 돌려받게 된다.
이 기술은 다음과 같은 것들을 처리할 수 있도록 조정될 수 있기 때문에 꽤 강력하다 — 양방향 지불, 스마트 컨트랙트 (ex. 채널 내에서 앨리스와 밥이 맺는 금융 계약), 기타 구성 (ex. 앨리스와 밥 사이에 채널이 있고 밥과 찰리 사이에도 채널이 있다면, 앨리스는 찰리와 신뢰관계 없이도 소통할 수 있다). 하지만 채널이 할 수 있는 것에는 한계가 있는데, 채널에 참여하지 않은 사람에게 오프체인 자산 전송을 할 수 없고, 유니스왑과 같이 명확한 논리적 소유자가 없는 객체를 대신할 수도 없다. 단순한 지불결제의 반복 같은 것보다 더 복잡한 목적을 위해 사용될 경우에 특히, 큰 규모의 자본이 묶이는 것을 필요로 한다.
플라즈마는 어떻게 동작하는가?
See also :
original Plasma paper, Plasma Cash
메인체인으로부터 자산을 입금하기 위해 플라즈마 체인을 관리하는 스마트 컨트랙트에 자산을 전송하면, 플라즈마 체인은 그 자산에 새로운 고유 ID(ex. 537)를 할당한다. 각 플라즈마 체인에는 오퍼레이터(중앙화된 액터일 수도 있고, 다중서명 내지는 PoS나 DPoS처럼 더 복잡한 방식일 수도 있다)가 존재하며, 오퍼레이터는 각 주기마다(15초나 1시간일 수도 있고, 그 사이일 수도 있다) 오프체인에서 수신한 모든 플라즈마 트랜잭션으로 구성된 “배치(batch)”를 생성한다. 그들이 생성하는 머클 트리는, 트리의 각 인덱스 X에 대하여, ID가 X인 자산을 전송하는 트랜잭션이 있을 경우 해당 트랜잭션으로, 없을 경우 리프 노드가 0으로 구성된다. 그 뒤에 트리의 머클 루트를 체인에 배포하고, 자산 X의 현재 소유자에게 각 인덱스 X의 머클 브랜치를 보낸다. 사용자가 자산을 메인체인으로 출금하기 위해서는 가장 최근에 자산을 전송한 트랜잭션의 머클 브랜치를 배포해야 하고, 이 경우 컨트랙트에서 챌린지 기간을 개시하여 누구든 다른 머클 브랜치를 통해 아래 중 하나를 증명하여 탈출(exit)의 무력화를 시도할 수 있도록 한다. 7일의 챌린지 기간을 무사히 넘기면, 사용자는 자산을 출금할 수 있게 된다.
- 사용자가 출금을 요청한 시점에 해당 자산을 소유하고 있지 않음
- 출금을 요청한 뒤에 다른 누군가에게 자산을 보냈음
플라즈마는 시스템에 속하지 않았던 사람에게도 자산을 보낼 수 있고, 요구 자본이 꽤 낮다는 점에서 스테이트 채널보다 강력한 특징을 갖는다. 그러나 채널은 “정상 작동” 중에는 어떤 데이터도 온체인에 보낼 필요가 없지만, 플라즈마는 각 플라즈마 체인이 주기적으로 해시를 상위 체인에 제출해야 한다는 점에서 비용이 발생한다. 게다가 플라즈마 전송은 인터벌이 끝나고 블록이 배포되기를 기다려야 하기 때문에 즉각적이지 않다.
그 외에도 플라즈마와 스테이트 채널은 공통적인 취약점이 있는데, 그것들이 안전한 이유를 설명하는 게임이론은 두 시스템의 통제를 받는 각 객체가 논리적인 “소유자(owner)”를 갖는다는 아이디어에 의존한다. 만약 그 소유자가 그들의 자산에 무신경하다면 해당 자산과 관련된 “잘못된(invalid)” 결과가 발생할 수 있다. 이는 많은 어플리케이션에서 괜찮을지 몰라도, 유니스왑과 같은 다른 많은 곳에서는 그렇지 않다. 객체(object)의 상태가 소유자의 합의 없이 변경될 수 있는 시스템(ex. 다른 사용자의 동의 없이 그들의 잔고를 증가시킬 수 있는 어카운트 기반 시스템) 또한 플라즈마와 궁합이 좋지 않다. 이는 어떤 플라즈마나 채널의 배포 시 다량의 “어플리케이션 별 최적화(application-specific reasoning)”를 필요로 한다는 뜻이고, 이는 플라즈마나 채널 시스템이 모든 이더리움 환경(또는 EVM)을 시뮬레이션하는 것을 불가능하게 한다. 이 문제의 해결을 위해 우리는 롤업으로 이동한다.
롤업
See also :
EthHub on optimistic rollups, ZK rollups
플라즈마와 스테이트 채널은 “완전한(full)” 레이어 2 방식으로, 데이터와 연산 과정 모두를 오프체인으로 이동시키고자 하지만, 데이터 가용성 문제를 둘러싼 근본적인 게임이론 이슈에 따르면 모든 어플리케이션에 대해 안전하게 이를 수행하는 것은 불가능하다. 플라즈마와 채널은 소유자라는 명확한 개념에 기대어 이 문제를 해결하고자 하지만, 이 방법은 두 방식의 범용성(being fully general)을 해친다. 반면 롤업은 “하이브리드(hybrid)” 레이어 2 방식으로, 연산 과정과 스테이트 스토리지를 오프체인으로 이동시키지만, 트랜잭션마다 약간의 데이터를 온체인에 유지한다. 효율성 향상을 위해 다양한 압축 기법을 사용하여 가능한 모든 데이터를 연산으로 대체하는데, 그 결과 여전히 블록체인 기반의 데이터 대역폭에 의해 확장성이 제한되어 있지만 상당히 괜찮은 비율, 이를테면 현재 이더리움 베이스 레이어의 ERC20 토큰 전송이 최대 45000가스를 소비하는 반면 롤업을 사용한 ERC20 토큰 전송은 16바이트의 온체인 공간과 300가스 미만의 비용을 소비하는 시스템이 된다.
데이터가 온체인에 있다는 것이 핵심이다(참고 : 데이터를 “IPFS 상에(on IPFS)” 넣는 것은 효과가 없는데, IPFS는 주어진 데이터의 가용 여부에 관계없이 컨센서스(consensus)를 제공하지 않기 때문이며, 따라서 데이터는 블록체인 상에 있어야 한다). 데이터를 온체인에 저장하고 그에 대한 합의를 진행하는 것은 누구나 자신이 원할 때 로컬에서 롤업 내 모든 작업을 처리해볼 수 있도록 하고, 부정행위를 감지하거나 출금을 개시하거나 개인적으로 트랜잭션 배치를 생산하는 것을 가능하도록 한다. 데이터 가용성 문제가 없기 때문에 악의적이거나 오프라인에 있는 오퍼레이터가 해를 끼치기 어렵고(ex. 플라즈마와 같은 1주 딜레이를 만들 수 없음), 배치 배포 권한이 있는 사람들에게 더 큰 설계 공간을 제공하고 롤업을 추론하기 더 쉽게 한다(making rollups vastly easier to reason about). 데이터 가용성 문제 해결이 의미하는 가장 중요한 점은 더 이상 자산과 소유자를 맵핑할 필요가 없다는 점이고, 이것이 이더리움 커뮤니티가 이전의 다른 레이어 2 확장보다 롤업에 더 열광하는 핵심 이유 — 롤업은 완전히 범용적이고, 내부에서 EVM을 돌려볼 수도 있으며, 거의 모든 이더리움 어플리케이션이 어떠한 새로운 코드를 작성할 필요도 없이 롤업으로 이동할 수 있다 — 로 이어진다.
그래서 롤업이 구체적으로 어떻게 동작하는가?
롤업의 스테이트(롤업의 “내부(inside)”에 있는 계정 잔고나 컨트랙트 코드 등을 뜻함)의 머클 루트값인 스테이트 루트(state root)를 관리하는 스마트 컨트랙트가 온체인에 존재한다.
누구나 고도로 압축된 형태의 트랜잭션 집합 및 이전 스테이트 루트와 새로운 스테이트 루트(트랜잭션들을 처리한 뒤의 머클 루트)로 구성된 배치(batch)를 배포할 수 있으며, 배치에 포함된 이전 스테이트 루트가 컨트랙트 내부의 현재 스테이트 루트와 같을 경우, 컨트랙트에 의해 스테이트 루트가 새로운 스테이트 루트로 교체된다.
입금과 출금을 지원하기 위해 입력 또는 출력이 롤업 스테이트의 외부인 트랜잭션을 다루는 기능을 추가하였는데, 즉 배치가 외부로부터의 입력을 갖는 경우 해당 배치를 제출하는 트랜잭션은 롤업 컨트랙트로의 자산 이동을 포함해야 하고, 배치가 외부로의 출력을 갖는 경우 해당 배치의 처리 중에 스마트 컨트랙트가 출금을 개시한다.
한 가지 중요한 세부사항이 있는데, 배치에 적힌 새로운 스테이트 루트(post-state roots)가 올바르다는 것은 어떻게 알 수 있을까? 만약 누군가 어떠한 검증도 없이 무작위로 스테이트 루트를 적어 제출하는 것이 가능하다면, 롤업 내부의 모든 코인을 자기 자신에게 전송하는 것도 가능할 것이다. 이 질문이 핵심인 이유는 이 문제에 대한 두 가지 솔루션이 있으며, 이 두 솔루션이 두 가지 종류의 롤업으로 이어지기 때문이다.
옵티미스틱 롤업 vs 영지식 롤업
- 거짓 증명(fraud proofs)을 사용하는 옵티미스틱 롤업(Optimistic rollups)의 경우 롤업 컨트랙트가 스테이트 루트와 각 배치의 해시에 대한 모든 히스토리를 추적한다. 올바르지 않은 스테이트 루트를 가진 배치를 발견한 사람은 그 배치가 잘못 연산되었음을 입증하는 증명을 체인에 배포할 수 있으며, 컨트랙트는 증명을 검증하고 해당 배치와 그 이후의 모든 배치를 번복(revert)한다.
- 유효 증명(validity proofs)을 사용하는 영지식 롤업(ZK rollups)의 경우 모든 배치에 ZK-SNARK (ex. PLONK 프로토콜을 사용한) 라고 불리는 암호 증명을 포함하여 스테이트 루트가 올바른 배치 실행 결과임을 증명한다. 연산의 규모에 관계없이 해당 증명을 온체인으로 매우 빠르게 검증할 수 있다.
위 두 종류의 롤업 간에 다음과 같은 복잡한 트레이드오프들이 존재한다.
대체로 내 관점은 단기적으로는 옵티미스틱 롤업이 범용 EVM 연산에서 우위를 점할 가능성이 높고, 영지식 롤업은 단순 지불결제나 거래 또는 일부 특정 유즈케이스에 대해 우위를 점할 가능성이 높으나, 중장기적으로는 ZK-SNARK 기술의 개선에 따라 모든 경우에 대해서 영지식 롤업이 승리를 가져갈 것으로 본다.
거짓 증명에 대하여
옵티미스틱 롤업의 보안은 누군가 롤업에 잘못된 배치를 제출하면 체인을 유지하던 다른 누구나 해당 거짓을 감지하고 거짓 증명을 제출하여 해당 배치가 잘못되었고 번복되어야 함을 컨트랙트에 증명할 수 있다는 아이디어에 기반한다.
배치가 잘못되었음을 주장하는 거짓 증명은 녹색으로 표시된 데이터를 포함하는데, 이는 배치 자체(체인에 저장된 해시와 대조하여 검사됨) 및 해당 배치에 의해 읽기 또는 수정이 진행된 특정 어카운트들의 증명에 필요한 머클 트리 일부이다. 트리의 노란색 노드는 녹색 노드로부터 재건(reconstructed)될 수 있으므로 포함될 필요가 없다. 배치 실행 및 스테이트 루트 연산은 녹색 데이터만으로 충분하며(스테이트리스 클라이언트가 블록을 검증하는 방법과 정확히 똑같음에 주목하자), 계산된 스테이트 루트와 기존에 제출된 스테이트 루트가 다를 경우 해당 배치는 거짓이 된다.
어떤 배치가 올바르지 않게 구성되었을 때, 그 이전에 생성된 배치들이 모두 올바르게 구성되었다면 해당 배치에 대한 거짓 증명을 생성할 수 있음이 보장된다. 하나 이상의 잘못된 배치가 롤업에 게시되었을 경우 가장 먼저 게시된 배치에 대한 증명을 시도하는 것이 최선이며, 당연한 이야기지만 올바르게 구성된 배치에 대해서는 해당 배치가 잘못되었음을 보이는 거짓 증명의 생성이 불가능하다.
어떻게 압축이 진행되는가?
ETH를 전송하는 간단한 이더리움 트랜잭션은 최대 110바이트를 차지하는 반면, 롤업에서 ETH의 전송은 최대 12바이트만을 차지한다.
현재 이더리움의 RLP는 각 값의 길이에 따라 값마다 1바이트를 낭비하고 있어, 위 중에서 일부는 단순히 인코딩 상의 이점에 따른 것이다.
역주 _ RLP : Recursive Length Index (cf link)
- Nonce : 이 파라미터의 목적은 리플레이의 방지이다. 어떤 어카운트의 현재 논스가 5일 경우 그 어카운트의 다음 트랜잭션은 반드시 5의 논스를 가져야 하며, 해당 트랜잭션이 처리된 뒤에 어카운트의 논스는 6으로 증가하여 트랜잭션이 다시 수행되지 못하게 될 것이다. 롤업의 경우 이전 스테이트로부터 논스를 복원할 수 있기 때문에 전체 논스를 생략할 수 있으며, 만약 누군가 이전 논스로 트랜잭션의 리플레이를 시도하여도, 저 최근의 논스를 포함하는 데이터와 대조하여 서명이 검증되기(checked) 때문에 해당 서명의 검증은 실패한다.
- Gasprice : 사용자에게 고정된 범위의 가스비를 지불할 수 있도록 하거나(ex. 2의 16제곱 중 선택(a choice of 16 consecutive powers of two)), 각 배치 내에서 고정된 수수료를 갖거나, 아예 가스 지불을 롤업 프로토콜 외부로 옮겨서 트랜잭션 작성자들이 별도 채널을 통해 배치 생성자들에게 지불하도록 할 수도 있다.
- Gas : 위와 비슷하게 2의 연속 제곱수 선택 또는 배치 레벨에서 가스 리밋을 정할 수도 있다.
- To : 20바이트의 주소를 인덱스로 대체할 수 있다. 예를 들어 어떤 주소가 트리에 4527번째로 추가된 주소일 경우 단순히 인덱스 4527로 부를 수 있으며, 인덱스와 주소 간 맵핑 저장을 위해 스테이트에 서브 트리를 추가할 수 있다.
- Value : 과학적 표기법(scientific notation)에 따라 값을 저장할 수 있으며, 대부분의 경우 전송 과정에 1~3개의 자릿수만을 필요로 한다.
- Signature : BLS 결합 서명을 사용하여 다수의 서명을 32~96바이트(프로토콜에 따라)의 단일 서명으로 결합할 수 있으며, 이 서명은 배치 내 전체 메시지와 발신자 집합에 대해 한꺼번에 검증이 가능하다.
영지식 롤업과 관련된 한 가지 중요한 압축 트릭은, 트랜잭션의 일부가 검증 용도로만 사용되고 상태 업데이트 연산과는 관련이 없을 경우 해당 부분은 오프체인에 남겨둬도 된다는 것이다. 영지식 롤업에서는 배치의 유효성을 증명하는 SNARK가 검증에 필요한 어떠한 데이터도 제공되었음을 증명하는 반면, 옵티미스틱 롤업에서는 거짓 증명에 쓰일 경우를 대비하여 온체인에 데이터가 유지되어야 하므로 이 방법을 쓸 수 없다. 중요한 예시로 프라이버시-보존(privacy-preserving) 롤업을 들 수 있는데, 옵티미스틱 롤업에서는 각 트랜잭션의 프라이버시를 위해 사용된 최대 500바이트의 ZK-SNARK가 체인에 올라가야 하지만, 영지식 롤업의 경우 전체 배치를 커버하는 ZK-SNARK가 “내부의(inner)” ZK-SNARK들의 유효성에 대해 의심의 여지를 남기지 않는다.
이 압축 트릭들은 롤업의 확장성의 핵심으로, (무거운 연산을 하는 몇몇 어플리케이션은 단순한 롤업으로도 큰 효과를 내겠지만) 이것들이 없다면 롤업은 아마 베이스 체인의 확장성을 최대 10배 정도만 개선할 것이고, 이 압축 트릭들을 사용할 경우 확장성 개선 정도는 거의 모든 어플리케이션에 대해 100배 이상으로 증가할 수 있다.
누가 배치를 제출할 수 있는가?
옵티미스틱 또는 영지식 롤업에서 누가 배치를 제출할 수 있는가에 대해 많은 주장이 있는데, 보통은 배치의 제출이 가능하도록 하기 위해 사용자가 많은 양의 입금을 해야 한다는 것에 누구나 동의한다. 해당 사용자가 잘못된 배치(ex. 올바르지 않은 스테이트 루트가 포함된)를 제출할 경우 입금액의 일부를 소각하거나 거짓 증명자에게 보상으로 지급할 수 있다. 그 외에도 다음과 같은 가능성이 있다.
- Total anarchy : 누구나 언제든지 배치를 제출할 수 있다. 이는 가장 심플한 접근법이지만 몇 가지 중요한 문제점이 있는데, 특히 다수의 참여자들이 동시에 배치를 생성하여 제출을 시도하고 그 중 하나의 배치만 롤업에 포함되는 상황에 대한 리스크가 있다. 이는 증명을 생성하는 데에 드는 노력이나 체인에 배치를 배포하는 가스의 큰 낭비로 이어진다.
- Centralized sequencer : 배치를 제출할 수 있는 시퀀서라는 단일 액터가 존재한다. 출금에 대해서는 예외사항이 있는데, 평소에는 사용자가 출금 요청을 먼저 제출하고, 만약 시퀀서가 다음 배치에 해당 출금을 처리하지 않으면 사용자가 스스로 단일 연산을 수행하는 배치를 제출할 수 있다. 이는 가장 “효율적인(efficient)” 방법이지만 라이브니스(liveness)를 위해 중앙화된 액터에게 의존한다.
- Sequencer auction : 다음 날에 시퀀서의 권리를 가질 사람을 결정하는 옥션이 개최(ex. 매일)된다. 이 방법은 예를 들어 롤업에 의해 통제되는 DAO에 의해 분배될 수 있는 자금을 조달하는 장점을 갖는다. (참고 : MEV 옥션)
- Random selection from PoS set : 누구나 롤업 컨트랙트에 ETH(또는 아마도 롤업의 프로토콜 토큰)를 입금할 수 있고, 입금 비중에 따라 다른 확률로 랜덤하게 각 배치의 시퀀서가 선출된다. 이 방법의 주요 문제점은 불필요한 대규모 자본 락업으로 이어진다는 점이다.
- DPoS voting : 옥션을 통해 선출된 단일 시퀀서에 대해서, 수행 능력이 부족한 경우 토큰 보유자들이 시퀀서를 교체하는 새로운 옥션을 열 수 있다.
스플릿 배치와 스테이트 루트 공급
(Split batching and state root provision)
최근에 개발된 몇몇 롤업은 “스플릿 배치(split batch)” 패러다임을 사용하는데, 레이어 2 트랜잭션들의 배치를 제출하는 행동과 스테이트 루트를 제출하는 행동이 분리되어 진행된다. 이 방법은 다음과 같은 핵심 장점이 있다.
- 검열 저항성을 향상시키기 위해 다수의 시퀀서가 동시에 배치를 제출하도록 할 수 있으며, 다른 배치가 먼저 포함되기 때문에 몇몇 배치가 무효화될 걱정을 하지 않아도 된다.
- 스테이트 루트가 올바르지 않을 경우 전체 배치를 번복할 필요 없이 스테이트 루트만을 번복하고 다른 사람이 동일한 배치에 대해 새로운 스테이트 루트를 제출하기를 기다릴 수 있다. 이는 트랜잭션 발신자(sender)에게 그들의 트랜잭션들이 번복되지 않을 것임을 보증한다.
종합하면 효율성, 심플함, 검열 저항성 및 다른 여러 목표들을 포함하는 복잡한 트레이드오프 사이의 균형을 유지하고자 하는 상당히 복잡한 기술들이 있으며, 이 아이디어들 중에서 어떤 조합이 가장 좋은지 말하기는 아직도 너무 이르다. 시간이 알려줄 것이다.
롤업이 얼마나 높은 확장성을 제공하는가?
현재 이더리움 체인의 가스 리밋은 1250만이고, 트랜잭션 데이터의 각 바이트의 비용은 16가스이다. 만약 단일 블록이 싱글 배치만을 포함할 경우(영지식 롤업이 사용되고 증명 검증에 50만 가스가 소요된다고 가정하자), 해당 배치는 1200만/16 = 75만 바이트의 데이터를 가질 수 있다. 앞서 보인 것처럼 롤업에서 ETH 전송은 단 12바이트만을 필요로 하고, 이는 단일 배치가 최대 62500개의 트랜잭션을 포함할 수 있음을 뜻한다. 평균 블록 생성 시간을 13초로 잡으면 이는 최대 4807 TPS를 의미한다. (이더리움 자체에서 직접 ETH를 전송하는 경우는 1250만/21000/13 = 최대 약 45 TPS)
다음은 다른 예시에 대한 자료이다.
Max scalability gain = (L1 gas cost) / (bytes in rollup * 16) * 12 million / 12.5 million
이제 이러한 수치들이 지나치게 낙관적이라는 몇 가지 근거를 기억할 필요가 있다. 가장 중요한 것은, 최소한 다수의 롤업이 있을 것이기 때문에, 한 블록이 단지 하나의 배치를 포함할 일은 없을 것이라는 점이다. 두 번째는 입출금이 계속해서 존재할 것이라는 점이고, 세 번째는 단기적 관점에서 저조한 사용량으로 인해 주로 고정된 비용이 쓰일 것이라는 점이다. 하지만 이러한 요인들을 고려해도 평범하게 100배 이상의 확장성 효과가 있을 것으로 예상된다.
이제 1000~4000 TPS 이상을 위해 무엇을 해야 할까? 여기서 eth2의 데이터 샤딩이 등장한다. 샤딩 제안은 매 12초마다 어떤 데이터도 채울 수 있는 16MB의 공간을 제공하고, 시스템은 그 데이터의 가용성에 대한 합의를 보증한다. 이 데이터 공간은 롤업에 쓰일 수 있으며, 이 초당 ~139만 바이트의 공간은 현재 이더리움 체인의 초당 ~6만 바이트보다 23배 개선된 값으로, 장기적 관점에서 데이터 수용력은 더 늘어날 것으로 예상된다. 따라서 eth2 샤드 데이터를 사용하는 롤업은 최대 10만 TPS 만큼을, 미래에는 더 많은 것을 처리할 수 있다.
롤업에서 아직 완전히 해결되지 않은 과제들은 무엇인가?
롤업의 기본 개념을 잘 이해한 상황에서, 우리는 이것이 근본적으로 실현 가능하며 안전하다고 확신하고, 다수의 롤업이 이미 메인넷에 배포되어 있지만, 아직도 롤업 설계의 많은 영역이 충분히 분석되지 않았고, 롤업의 확장성 이점을 살리기 위해 이더리움 생태계의 많은 부분을 롤업으로 옮기는 것에 상당히 많은 과제가 남아 있다. 그 중 몇몇은 다음과 같다.
- User and ecosystem onboarding : 롤업을 사용하는 어플리케이션은 많지 않고, 롤업은 사용자들에게 익숙하지 않으며, 롤업을 통합하기 시작한 지갑은 거의 없다. 상업자와 자선사업가들은 아직 롤업을 받아들이지 않았다.
- Cross-rollup transactions : 베이스 레이어를 통한 비용 발생을 초래하지 않고 한 롤업에서 다른 롤업으로 자산과 데이터(ex. 오라클 입력)를 효율적으로 이동하는 것
- Auditing incentives : 적어도 하나의 정직한 노드가 실제로 옵티미스틱 롤업을 완전히 검증하여, 무언가 잘못되었을 때 거짓 증명을 제출할 수 있을 확률을 최대화하는 방법은 무엇일까? 작은 규모의 롤업(최대 수백 TPS)에 대해서는 이는 중요한 문제가 아니며 단순히 이타심(altruism)에 의존할 수 있지만, 큰 규모의 롤업에 대해서는 보다 확실한 추론(reasoning)이 필요하다.
- Exploring the design space in between plasma and rollups : 온체인에 상태 갱신과 관련된(state-update-relevant) 몇몇 데이터를 올리지만 모두를 올리지는 않는 기술이 존재하는가? 그리고 그것으로부터 무언가 유용한 것을 얻을 수 있는가?
- Maximizing security of pre-confirmations : 많은 롤업에서 더 빠른 UX를 위해 “사전 확인(pre-confirmation)”의 개념을 제공하고, 여기서 시퀀서들은 트랜잭션이 다음 배치에 포함될 것이라는 약속을 제공하며, 이를 어길 경우 그들의 보증금이 소멸된다. 그러나 이 방법은 같은 시간에 너무 많은 액터들에게 많은 약속을 할 가능성으로 인해 경제 보안(economy security)이 제한되는데, 이를 개선할 수 있을까?
- Improving speed of response to absent sequencers : 롤업의 시퀀서가 갑작스럽게 오프라인이 될 경우, 해당 상황을 최대한 빠르고 낮은 비용으로 복구하는 것, 즉 빠르게 다른 롤업으로 이탈하거나 시퀀서를 교체하는 것이 좋다.
- Efficient ZK-VM : 범용 EVM 코드(또는 스마트 컨트랙트가 컴파일될 수 있는 다른 VM)가 올바르게 실행되었고 결과가 주어졌음을 증명하는 ZK-SNARK의 생성
결론
롤업은 강력한 새로운 레이어 2 확장 패러다임으로, 단기~중기적 관점에서 (그리고 어쩌면 장기적으로도) 이더리움 확장의 초석이 될 것으로 예상되며, 이전의 레이어 2 확장 시도들과 달리 범용 EVM 코드를 지원하여 기존의 어플리케이션이 쉽게 이주할 수 있도록 하기 때문에 이더리움 커뮤니티를 들끓게 해왔다. 롤업은 완전히 오프체인으로 가려고 하지 않고, 대신 트랜잭션마다 약간의 데이터를 온체인에 남겨놓는 핵심 타협을 통해 이를 해낸다.
많은 종류의 롤업이 있고, 설계 공간에서 많은 선택이 있다. 즉 거짓 증명을 사용하는 옵티미스틱 롤업을 쓸 수도 있고, (ZK-SNARKs 라고도 알려진) 유효 증명을 사용하는 영지식 롤업을 쓸 수도 있다. (체인에 트랜잭션 배치를 제출할 수 있는 사용자인) 시퀀서는 중앙화된 액터일 수도 있고, 누구나 가능할 수도 있으며, 그 사이의 다른 방식일 수도 있다. 롤업은 여전히 초기 단계의 기술이고, 빠르게 개발이 진행되고 있지만, 몇몇은(특히 Loopring, ZKSync, 그리고 DeversiFi) 이미 몇 달째 운영되고 있다. 롤업 무대에서 앞으로 더 멋진 것들이 등장할 것으로 기대한다.