(Almost) Everything you need to know about Optimistic Rollup

신건우(Thomas Shin)
Apr 27 · 19 min read

이 글은 paradigmGeorgios KonstantopoulosOptimistic Rollups에 대해 작성한 글을 우리말로 옮겨 쓴 글이다.

옵티미스틱 롤업(Optimistic Rollup)은 레이어 2 이더리움 확장성 솔루션으로 7월에 출시될 예정이며 토카막 네트워크 역시 옵티미스틱 롤업을 기반으로 한 레이어 2 서비스를 준비하고 있다.

https://scaling.ethglobal.co/

이더리움은 엄격한 리소스 제약(e.g. CPU, bandwidth, memory, disk space) 하에 짧은 지연시간(low latency)과 빠른 처리량(high throughput)을 가지도록 하는데에 많은 노력을 들이고 있다.

이더리움은 탈중앙화(decentralization) 시스템이다. 시스템이 탈중앙화되기 위해서는 네트워크를 구성하는 노드 중에 가장 느린 노드 역시 다른 노드와 마찬가지로 시스템의 유효성을 검증할 수 있어야 한다. 즉 하드웨어 스펙이 낮은 컴퓨터로 네트워크가 구성이 되더라도 좋은 퍼포먼스를 낼 수 있는 프로토콜이 바로 확장성 있는(scalable) 프로토콜이라고 할 수 있을 것이다.

이 글에서는 레이어 2 솔루션인 옵티미스틱 롤업을 다룬다. 이 솔루션의 보안 모델(security model)과 이 솔루션이 어떻게 이더리움의 확장성(scalability) 문제를 해결하는지 확인할 수 있을 것이다.

Blockchain Resource Requirements

이더리움과 같은 탈중앙화 네트워크에서 노드를 운영하기 위해 필요한 리소스는 아래의 3가지 요소에 의해 결정된다.

그리고 성능(performance)은 2가지 방식에 의해 측정된다.

비트코인과 이더리움 같은 크립토 네트워크가 추구하는 속성은 바로 탈중앙화다. 무엇이 탈중앙화를 가능하게 만드는가?

크립토 네트워크가 추구하는 또 다른 속성은 바로 확장성이다. 확장성이란 시스템을 운영하는 비용에 비해 처리량이나 지연시간이 월등히 나아지는 것을 말한다. 다만 이를 성취하기 위해 신뢰를 필요로 한다면 “trustless”를 추구하는 탈중앙화가 훼손될 수 있다. 그렇기 때문에 결국 신뢰를 필요로 하지 않는 탈중앙화된 확장성(decentralized scalability)을 성취해야 한다.

이더리움을 조금 더 자세히 살펴보자. 이더리움의 런타임 환경은 Ethereum Virtual Machine(EVM)이고 트랜잭션은 EVM을 통해 처리된다. 트랜잭션은 다양한 연산을 수행하는데 연산별로 다른 비용이 소요된다(예를 들어 단순 더하기 연산보다 데이터를 저장하는 연산의 비용이 훨씬 비싸다). 그리고 트랜잭션의 각각의 연산을 가스라는 단위로 측정한다. 이더리움은 블록 당 최대 1,250만 가스(현재는 1,500만 가스 정도로 유지되고 있음)를 사용하고 12.5초마다 하나의 블록이 생성되도록 시스템이 설계되어 있다. 따라서 이더리움의 지연시간는 12.5초이며 처리량은 초당 100만 가스라고 볼 수 있다.

여기서 누군가 이렇게 질문할 수도 있다. “초당 100만 가스를 가지고 이더리움에서 무엇을 할 수 있나요?” 이에 대한 대답은 다음과 같다.

여기서 주목할 점은 트랜잭션의 연산이 더 복잡해질수록 시스템의 처리량은 그만큼 감소하게 된다는 것이다. 그렇다면 이러한 문제점을 해결할 수 있는 방법은 무엇이 있을까?

솔루션 1: 중개인을 이용한다.

신뢰할 수 있는 제3자를 통해 트랜잭션이 처리되도록 하는 것이다. 이러한 방식으로 처리량과 지연시간의 개선이 가능하다. 하지만 이는 제3자를 신뢰할 수 밖에 없는 신뢰 모델을 채택하는 것이고 그들이 추후에 검열을 하거나 심지어 우리의 자산을 사용하지 못하게 만들 수도 있다. 이는 우리가 원하는 것이 아니다.

솔루션 2: 블록을 더 크고 만들고 더 자주 생성한다.

블록 생성 주기를 줄여 지연시간를 줄일 수 있고, 블록이 포함할 수 있는 가스의 양을 늘려 처리량을 늘릴 수도 있다. 하지만 이러한 변경은 노드를 운영하는데 필요한 비용을 증가시키고, 이에 따라 한 개인이 노드를 운영하는 것을 막게 된다.

솔루션 1에서는 신뢰 모델을 변경했고 솔루션 2에서는 비용를 증가시켰다. 따라서 두가지 솔루션 모두 탈중앙화를 훼손하지 않으면서 동시에 확장성을 위한 해결책이 될 수 없다.

Rediscovering Optimistic Rollup from first principles

여기서 다루는 내용은 독자들이 이미 해시(hash)머클 트리(merkle tree)에 대해 이미 알고 있다고 가정한다. 그리고 아래에서 언급되는 온체인(on-chain)은 이더리움 체인을 말하고 외부체인(off-chain)은 레이어 2 체인을 말한다.

결국 우리가 원하는 것은 탈중앙성을 훼손하지 않으면서 이더리움의 처리량을 향상시키기 위한 프로토콜을 찾는 것이다. 이를 위해 “소크라테스식 대화법”으로 적절한 해답을 찾아 보자.

Q. 정리해보면 결국 신뢰나 비용의 변경없이 이더리움의 확장성 문제를 해결하고 싶은거잖아. 어떻게 해야되는 거야?

A. 우선 시스템 비용 측면(위에서 언급한 3가지 타입의 리소스 참고)에서 운영에 필요한 요구 사항을 낮추고 싶어. 이더리움에선 유저가 트랜잭션을 제출하면 이더리움의 모든 노드가 이를 저장하고 실행해. 트랜잭션은 EVM(Ethereum Virtual Machine)을 통해 실행되고 EVM은 상태와 상호작용하게 되지. 근데 상태와 상호작용할 때 가장 많은 비용이 들어.

Q. 그렇구나. 그럼 네가 제안하려고 하는 방식은 상태와 상호작용하는 비용을 줄이기 위한 것과 관련이 있는거야?

A. 맞았어! 내가 생각한 방식은 모든 실행을 외부체인으로 옮기고 일부 데이터만 온체인에 유지시키는 거야. 시퀀서(sequencer)라고 부르는 제3자를 도입할건데, 이 시퀀서는 자신의 컴퓨터(로컬)에서 유저가 제출한 트랜잭션을 저장하고 실행하는 역할을 하게 돼. 그리고 시퀀서는 주기적으로 트랜잭션들의 머클 루트와 상태 루트를 이더리움에 제출해. 이렇게 되면 N개의 외부 트랜잭션을 1개의 이더리움 트랜잭션으로 처리할 수 있게 되는거지. 정리하면 이 솔루션은 시스템의 비용 측면에서 연산 부분의 요구사항을 낮춘거라고 볼 수 있어.

Q. 그러면 시퀀서가 모든 외부 트랜잭션을 처리하고 머클 루트만 제출하는 방식으로 확장성을 실현할 수 있다는 거야?

A. 그렇지!

Q. 그렇구나. 그러면 시퀀서가 외부에서 트랜잭션을 처리하니까 비용이 줄어들겠네. 그러면 입금이나 출금은 어떻게 할 수 있는거야?

A. 이더리움에서 입금을 하면 시퀀서는 해당 트랜잭션을 읽고 동일한 금액을 외부 체인에서 만들어 내. 그리고 유저가 외부 체인에서 이더리움으로 출금하고 싶으면, 출금 신청을 하고 외부 체인에 그만큼의 자산이 있음을 검증해줄 수 있는 증거를 제출하면 돼.

Q. 유저가 출금하고 싶은 경우 머클 증거를 만들어야 되네. 그럼 유저는 머클 증거를 어떻게 만들 수 있어?

A. 유저가 시퀀서에게 머클 증거를 만들 수 있는 데이터를 달라고 요청해야 해.

Q. 만약에 시퀀서가 그렇게 할 수 없는 상태이거나 악의적으로 데이터를 주지 않으면?

A. 그래, 그런 상황이 있을 수 있어. 이러한 상황을 데이터 가용성(data availability) 문제라고 해. 예를 들어 시퀀서가 악의적이거나 다른 문제로 오프라인 상태일 수 있지. 그렇기 때문에 시퀀서가 모든 외부 트랜잭션을 이더리움에 저장시킬 수 있도록 해야 돼. 하지만 실제로 이더리움에 제출된 트랜잭션들은 저장만 될 뿐 실행되진 않아. 이렇게 하는 이유는 데이터 가용성 문제를 해결하기 위해서야. 만약에 이더리움에 외부 트랜잭션이 영구적으로 저장되어 있다면 시퀀서가 존재하지 않아도 새로운 시퀀서가 이더리움에 있는 외부 트랜잭션을 가지고 다시 외부체인을 구성할 수 있지.

Q. 그런데, 만약 시퀀서가 온라인 상태임에도 불구하고 고의적으로 머클 증거를 전달하는 것을 거부하면 어떻게 되는거야? 내가 이더리움에서 다운로드 받으면 돼?

A. 그렇지! 네가 직접 이더리움 노드를 돌리거나 이미 돌고 있는 노드와 연결해서 시퀀서가 제출한 데이터(외부 트랜잭션)들을 가져오기만 하면 돼.

Q. 그렇구나. 근데 아직 조금 이해가 되지 않는 것이 있어. 어떻게 트랜잭션을 실행하지 않고 이더리움에 저장할 수 있는거지? 모든 트랜잭션은 EVM을 통해서 실행되는거잖아.

A. 네가 만약 A가 B에게 ETH를 전송하는 트랜잭션을 10개를 제출했다고 가정해보자. 각각의 트랜잭션은 이더리움에서 다음과 같이 행동하게 돼. A 어카운트의 논스(nonce)를 증가시키고 A의 밸런스를 감소시키고 B의 밸런스를 증가시켜. 이것만 해도 이더리움의 상태를 읽고 쓰는 행위가 필요하지. 이렇게 실행하는 것 대신에 트랜잭션 데이터를 인코딩해서 컨트랙트의 publish(bytes _transactions) public {}와 같은 함수를 호출하는거야. 컨트랙트의 함수 바디 부분이 비어있다는 것에 주목해야 돼. 이 말의 의미는 함수의 파라미터 값으로 제출된 트랜잭션들은 블록체인에 기록만 될 뿐 함수의 바디가 비어있기 때문에 실행되지 않을 뿐만 아니라 블록체인의 상태를 읽거나 쓰지 않게 돼.

Q. 그러니까 시퀀서가 외부체인에서 트랜잭션들을 실행하고 실행한 트랜잭션들을 인코딩해서 한번에 이더리움에 올린다는 거지? 그리고 트랜잭션을 실행해서 만들어진 상태 값도 이더리움에 올리는거고. 그런데 우리가 시퀀서를 믿어도 될까? 만약에 시퀀서가 잘못된 상태값을 올리면 어떻게 해?

A. 시퀀서가 상태값을 이더리움에 올릴 때마다 논쟁 기간(dispute period)이 주어지게 돼. 이 기간동안 누구나 사기 증명(fraud proof)을 제출할 수 있어. 사기 증명은 시퀀서가 올린 잘못된 상태값에 대한 증거 값들이야. 이 사기 증명을 가지고 외부 트랜잭션을 이더리움에서 재실행할 수 있어. 재실행하면 상태값이 나오고 이 상태값과 시퀀서가 제출한 상태값을 비교해. 만약 상태값이 동일하지 않으면 시퀀서가 제출한 상태값을 지우게 돼. 그러면 당연히 잘못된 상태값이 제출된 이후의 모든 상태값들도 지워지게 되겠지. 근데 만약 잘못된 상태값이 제출되었더라도 논쟁 기간이 지난 모든 트랜잭션들은 논쟁할 수 없고 확정된 상태로 남게 돼.

Q. 잠시만! 네가 아까 전에 비용을 증가시키거나 신뢰를 증가시키는 방법으로는 이더리움을 확장시킬 수 없다고 했잖아. 이런 구조에서는 사기를 신고할 수 있는 누군가 반드시 존재해야 하는거네?

A. 맞아. 그런 사람들을 검증자(verifier)라고 불러. 검증자들은 시퀀서가 제출한 상태값과 오프체인에서 만들어진 상태값을 비교해서 이 값들이 동일한지 지켜보는 역할을 하게 돼. 만약 잘못된 상태값을 시퀀서가 제출하게 되면 검증자는 사기 증명을 제출해. 정리하면 우린 검증자의 존재와 검증자가 논쟁 기간안에 사기 증명을 이더리움에 제출해줄 것이라는 가정을 하고 있는거야. 이런 검증자의 존재에 대한 가정은 약한 가정(weak assumption)이라고 볼 수 있어. 예를 들어 수천명의 유저가 앱을 쓰는데 검증자가 단 한명만 존재하면 되는거야. 반면에 신뢰 모델을 변경하거나 이더리움 노드를 운영하는 데 필요한 비용을 높이는 것은 시스템 전반적인 변경이 필요하기 때문에 강한 가정(strong assumption)이라고 볼 수 있어.

Q. 그러면 네가 말한 것처럼 검증자가 단 한명만이라도 존재하면 이 솔루션은 안전하겠네. 그럼 검증자가 되기 위해서 어떤 비용이 드는거야? 시퀀서랑 검증자가 되기 위한 요구조건이 궁금해.

A. 시퀀서와 검증자 모두 이더리움 풀노드(full node)를 돌려야 해. 동시에 외부체인 노드도 돌려서 외부체인의 상태값을 만들어내야 하지. 추가로 검증자는 사기 증명을 만들 수 있는 소프트웨어를 돌려야 하고 시퀀서는 유저의 트랜잭션과 상태값을 제출할 수 있는 소프트웨어를 돌려야 해.

대화는 여기서 끝이 난다. 위의 대화는 옵티미스틱 롤업의 컨셉에 대해 이야기를 나눈 것이다. 정리하면 다음과 같다.

Incentives in Optimistic Rollup

레이어 2 솔루션은 온체인에서 실행되는 트랜잭션의 개수를 최소화하고자 하는 것에 기반을 둔다. 옵티미스틱 롤업은 유효하지 않은 상태 변환을 막기 위해 사기 증명을 사용한다. 사기 증명 또한 온체인에서 발생하기 때문에 이더리움에 제출되는 사기 증명의 양을 최소화하고자 한다. 사기가 발생하지 않아 사기 증명이 단 한번도 제출되지 않는 것이 가장 이상적인 시나리오라고 볼 수 있다.

옵티미스틱 롤업은 시퀀서가 잘못된 상태값을 올리는 것을 막기 위해 fidelity bond를 도입했다. 유저가 시퀀서가 되기 위해서는 이더리움에 담보를 맡겨야 한다. 이후 시퀀서가 잘못된 상태값을 올리고 이것이 사기 증명을 통해 검증자의 의해 검증되면 시퀀서의 담보는 검증자에게 주어지게 된다.

Fidelity Bonds and Dispute Periods

사기 증명에 대한 인센티브를 디자인할 때 두 가지 변수가 존재한다.

이 두가지 파라미터 값에 대한 최적의 값은 존재하지 않는다. 다만 이 값들을 정하기 위해서는 반드시 검증자가 되기 위한 인센티브와 시퀀서의 패널티 둘을 고려해야 한다.

Popular Optimistic Rollup criticisms and our responses

지금까지 옵티미스틱 롤업의 매커니즘에 대한 개괄적인 내용을 다뤘다. 이 솔루션에 대해 회의적인 의견들도 존재하는데 실제로 그것이 무엇인지 살펴보고자 한다.

긴 출금 기간과 논쟁 기간으로 인해 실제로 사용하기 힘들고 결합성(composability)이 떨어진다.

옵티미스틱 롤업은 사기 증명을 사용하기 때문에 논쟁 기간이 반드시 필요하다. 위에서 언급한 것처럼 논쟁 기간이 길면 보안에 유리하다. 하지만 레이어 2에서 레이어 1으로의 출금 기간이 그만큼 길어지게 된다. 이와 반대로 논쟁 기간이 짧으면 출금에 대한 유저 경험은 좋아지겠지만 사기가 발생하더라도 사기 증명이 제출되지 못할 확률은 더 높아진다.

하지만 빠른 출금 서비스를 제공해줄 수 있는 마켓 메이커가 존재한다면 위와 같은 출금 지연 문제는 큰 문제가 되지 않는다. 빠른 출금 서비스는 다음과 같이 이루어진다.

Actors:

Steps:

3–1. Bob은 이 출금이 레이어 2의 검증자를 통해 유효한 출금임을 확인하고 빠른 출금을 처리한다. 이 컨트랙트는 바로 4.95 ETH를 Alice에게 전송한다. 이후 논쟁 기간이 끝나면 Bob은 Alice의 5 ETH를 챙기고 0.05 ETH의 이득을 취한다.

3–2. Bob의 검증자가 출금 트랜잭션에 대한 상태값이 유효하지 않음을 확인한다. Bob은 잘못된 상태값에 대해 사기 증명을 제출하고 이에 대한 보상으로 시퀀서의 담보를 얻는다.

이렇게 빠른 출금이 가능해지면 출금 지연 문제를 해결할 수 있을뿐만 아니라 레이어 1 컨트랙트와의 결합성도 충족될 수 있다. 결합성이란 개별 서비스에 대한 컨트랙트를 부품으로 사용해 새로운 서비스를 만들어낼 수 있는 강력한 특징이다. 디파이(DeFi) 생태계에서는 이러한 결합성을 이용한 서비스를 제공하는 곳이 많다.

마이너들이 뇌물을 받고 트랜잭션을 검열할 수 있기 때문에 결국 옵티미스틱 롤업의 보안성이 깨진다.

“Nearly-zero cost attack scenario on Optimistic Rollup”의 글에서는 시퀀서와 마이너들이 공모하여 사기 증명을 제출하는 트랜잭션을 검열할 수 있다고 주장한다. 옵티미스틱 롤업은 보안을 위해 사기 증명을 사용하기 때문에 이런 일이 실제로 발생한다면 시스템에 굉장히 치명적이다.

하지만 옵티미스틱 롤업은 이 글에서 말하는 주장에 동의하지 않는다. 우선 이더리움의 마이너들은 악의적인 쪽이 아닌 정의로운 쪽에 있을 때 더 유리하다. 즉 마이너가 시퀀서로부터 뇌물을 받고 트랜잭션을 검열하게 되면 이는 결국 이더리움의 가치를 훼손시키는 행위가 될 것이고 마이너는 더 큰 손실을 입게 될 것이라는 것이다.

실제로 이러한 시나리오를 연구한 논문이 존재한다. 이 논문에서는 이러한 공격은 부분게임 완전 균형을 유도하고 결국 어떤 공격도 처음부터 하지 않는 것이 마이너에게 가장 유리하다는 내용을 담고 있다. 우선 용어 설명이 필요해 보인다.

시퀀서와 마이너가 담합을 하게 되는 시나리오를 가정했을 때 역진 귀납법을 사용해보면 결국 처음부터 시퀀서와 담합을 하지 않는 것이 마이너에게 가장 유리한 선택임을 말해준다.

검증자의 딜레마(Verifier’s Dilemma)로 인해 검증자를 운영할 요인을 없애고 이로 인해 옵티미스틱 롤업의 보안성이 깨진다.

검증자의 딜레마는 다음과 같이 요약할 수 있다.

검증자의 딜레마는 딜레마라고 부르는 것만큼 해결하기 어려운 문제다. 하지만 옵티미스틱 롤업은 검증자의 딜레마를 해결해야 하는 문제로 바라보지 않는다. 실제로 검증자가 되기 위한 인센티브로 금전적인 것과 관련이 없는 것도 존재한다. 예를 들어 누군가 레이어 2에서 디앱(dApp, Decentralized Application)을 운영하거나 레이어 2에 토큰을 많이 가지고 있다면, 그 사람은 디앱이 정상적으로 동작하도록 또는 자신의 토큰을 지키기 위해 검증자를 운영할 것이다. 그리고 빠른 출금(이전 섹션에서 다루었음)을 하기 위해서는 검증자를 반드시 운영해야 하기 때문에 빠른 출금에 대한 수요가 존재한다면 검증자는 반드시 존재할 것이다. 심지어 비트코인은 블록체인 데이터를 저장하고 피어에게 데이터를 제공해주는 것에 대한 인센티브가 없는데도 불구하고 사람들은 이타적으로 블록체인 노드를 운영한다.

검증자를 돌리기 위한 인센티브가 존재하지 않다고 하더라도 이 시스템의 성공을 바라는 사람들은 검증자를 돌릴 것이기 때문에 이 시스템은 안전하다고 볼 수 있다. 따라서 옵티미스틱 롤업은 검증자의 딜레마를 위한 디자인 매커니즘 설계를 전혀 하지 않았다.

이 글은 옵티미스틱 롤업에서 검증자를 운영할 유인이 충분하다고 가정하며, 검증자의 딜레마는 크게 문제가 되지 않을 것이라 보고 있다. 하지만, 이러한 관점은 롤업을 장기적으로 안전하게 운영하는데 있어서 큰 위협이 될 수 있다. 이에 관해 온더에서는 롤업에서 검증자의 딜레마를 고려하지 않을 경우 어떠한 문제가 발생할 수 있는지, 또 어떻게 이를 해결할 수 있는지를 분석하였다. 자세한 내용은 여기서 확인할 수 있다.

Conclusion

우리는 옵티미스틱 롤업과 인센티브 구조 그리고 이 솔루션에 대한 회의적인 관점에 대한 대답도 들어볼 수 있었다. 옵티미스틱 롤업은 2019년부터 연구된 확장성 솔루션들 중에서도 현재 적용할 수 있는 가장 적합한 솔루션으로 평가 받고 있다.

옵티미스틱 롤업 개발은 옵티미즘 팀이 가장 선두적으로 진행하고 있다. 다음 포스팅은 옵티미즘 팀이 개발하고 있는 Optimism에 대해 심도있게 다뤄보려고 한다.

Reference

Onther

Building an Ethereum Blockchain ECO system to Change the…

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store