Arbitrum vs Optimism #1

본 글은 CURG에서 기획한 Arbitrum vs Optimism시리즈 총2편의 1번째 글로, 본 글에서는 롤업 및 옵티미스틱 롤업과 아비트럼 Nitro에 대해 개괄적으로 다룬다. 목차는 다음과 같이 진행되며 글이 서로 연관되어 있으므로, 차례대로 읽어보시는 것을 추천해 드린다.

Daeun
CURG
12 min readAug 6, 2023

--

  1. 서론
  2. 롤업이란
  3. 옵티미스틱 롤업이란
  4. 아비트럼 (Arbitrum Nitro, Arbitrum Nova)
  5. 옵티미즘 (Bedrock 업데이트)
  6. 마무리

김다은 | Researcher of CURG |daeun956048@gmail.com

서론

옵티미스틱 롤업을 사용하는 대표적인 이더리움 확장성 솔루션에는 아비트럼과 옵티미즘이 있다. 아비트럼은 프린스턴 대학 연구진 출신들이 설립한 off chain labs에서 개발 중인 레이어2 솔루션이다. 아비트럼은 옵티미즘사에서 개발한 Optimistic Ethereum 소스코드를 살짝 변형하였기 때문에 옵티미즘과 유사한 점이 많다. 하지만, 둘은 레이어2 구조와 이의제기기간 동안의 사기증명 방식에서의 차이점이 분명 존재한다. 이번 아티클에서는 2편의 시리즈로 이더리움 레이어2 시장에서약 63%의 시장 점유율을 차지하고 있는 아비트럼과 옵티미즘의 아키텍처면에서의 차이점 특히 트랜잭션 처리과정을 집중적으로 다뤄보고자 한다.

롤업이란

우선 아비트럼과 옵티미즘 모두 사용하고 있는 옵티미스틱 롤업에서 ‘롤업’이란 무엇일까.

‘롤업’은 이더리움이 앞으로 더 널리 상용화되고 실생활과 접목되는 서비스의 기반 기술로 자리잡는데 필요한 확장성 기술을 일컫는다. (확장성이란 보통 TPS, 초당 처리 거래건수의 증가를 말한다) 롤업은 말 그대로 ‘말아올린다’는 뜻으로 레이어1 이더리움에서 거래를 처리하지 않고 레이어2 롤업체인에서 거래를 연산 처리하고, 이에 대한 트랜잭션 처리 결과값, 상태루트값을 묶음 형태인 배치로 한꺼번에 이더리움에 저장하는 방식이다. 이러한 방식으로 롤업은 트랜잭션 처리량과 속도 개선 및 수수료 절감의 효과를 가져오게 된다.

롤업 트랜잭션 처리

조금 더 자세히 들여다보자면, 롤업체인에서 연산을 수행한 후의 결과를 나타내는 상태루트값은 이더리움 롤업 스마트컨트랙트에 제출 되고 최종적으로 상태변환이 적용된다. 하지만, 이 과정에서 트랜잭션 연산이 오프체인에서 이루어졌기 때문에, 레이어1 이더리움에 최종 상태변환이 이루어지기 전, 레이어1은 배치가 담고 있는 트랜잭션들이 올바른지 유효성 검증을 해야 한다. 이 과정에서 검증 방식의 차이에 따라 옵티미스틱 롤업과 zk rollup으로 구분된다.

옵티미스틱 롤업이란

현재 Polygon에서 집중하고있는 영지식증명기술 활용 zk rollup과 달리 옵티미스틱 롤업은 ‘낙관적’이라는 명칭에서도 알 수 있듯이 레이어1은 검증인들이 제출한 거래들이 정직하고 정확하다고 가정한다. 대신, 트랜잭션 결과값들이 레이어1에서 최종 finalized, 저장되기 이전에, 검증을 위한 일정유예기간 (보통, 7일이 일반적이다)을 가진다. 반면 zk rollup은 롤업체인에서 메인넷으로 상태 루트값을 포함한 배치를 제출할 때 레이어2에서 트랜잭션을 검증한 계산식을 같이 포함시킨다. 이 때문에, zk rollup이 옵티미스틱 롤업보다 상대적으로 더 트랜잭션 처리 속도가 빠르고 유망한 기술이라고 평가받는다.

Optimistic rollup과 Zk rollup 차이점
Optimistic rollup 트랜잭션 처리과정

Arbitrum

아비트럼은 사용 용도와 기반 프로토콜에 따라 Arbitrum Nitro(구 Arbitrum One)와 Arbitrum Nova로 구분된다.

Arbitrum Nitro와 Arbitrum Nova는 모두 이더리움 메인넷 위에서 구동되지만, Arbitrum Nitro는 이더리움을 데이터 가용성 계층으로 사용하고, 이더리움의 보안성을 물려받는 무신뢰, 무허가의 Arbitrum Rollup Protocol 기반이다. Arbitrum Nitro는 설계 당시, 디파이와 NFT 프로젝트 특화 플랫폼으로 개발되었고, 현재 온보딩 되어있는 다수의 프로젝트가 디파이, NFT 서비스 중심이다.

반면, Arbitrum Nova는 22년 8월에 정식 출시된 아비트럼의 두번째 메인넷이다. Arbitrum Nova는 이더리움이 아닌 DAC (Data Availability Committee)라는 허가된 주체들로 데이터를 관리하는 Arbitrum AnyTrust Protocol 기반이다. Arbitrum Nova는 마찬가지로 이더리움 기반 레이어2로서 이더리움 수준의 보안성은 그대로 유지하지만, DAC라는 다소 중앙화된 주체에서 데이터를 저장관리하기 때문에, 탈중앙성은 다소 포기하되 트랜잭션이 많아 수수료 절감이 필요한 Web3소셜 또는 게이밍 프로젝트에 적합하다.

이렇듯 두 체인은 사용하는 프로토콜에 따라 용도가 다르기 때문에 유저는 보안과 거래 비용을 고려해 둘 중 선택해서 사용하면 된다.

이더리움과 아비트럼 구조

Arbitrum Nitro(One)

Arbitrum Nitro에는 크게 2 종류의 참가자, 검증인과 시퀀서가 있고 역할에 따라 세부적으로 다음과 같이 구분할 수 있다.

1. 검증인

1.1 Defensive 검증인

  • 유효하지 않은 assertion이 발생했을 때만 행동

1.2 Active 검증인

  • 이더리움 레이어1에 ETH를 스테이킹해 assertion 제출

시퀀서가 레이어1에 제출한 배치를 읽어와서 실행한 뒤 레이어1에 레이어2의 상태루트값인 assertion 제출

  • 사기 증명 수행

Active 검증인은 누구나 이의제기기간(통상적으로 7일) 내에 상태루트값(assertion)에 대해 이의제기 가능

1.3 Watchtower 검증인

  • 스테이킹을 해서 검증에 참여하지는 않음
  • 유효하지 않은 assertion을 목격하면 경보만 울리는 노드

2. 시퀀서

  • 유저에게 트랜잭션을 받아서 배열, L2 블록 생성
  • 배치를 레이어1에 제출
  • 유저들이 시퀀서에게 지불하는 수수료로 수익창출
  • 현재 중앙화된 단일 시퀀서에서 향후 복수의 시퀀서 위원회로 대체될 예정
아비트럼 rollup protocol 트랜잭션 처리과정

아비트럼의 트랜잭션 처리 과정은 위에서 설명한 바와 같이 크게 ‘시퀀서’와 ‘검증인’이라는 주체에 의해 이루어진다.

시퀀서는 현재 Off-chain Labs사에서 관리운영하고 있는 단일 주체로 아비트럼 네트워크의 트랜잭션을 받고 순서대로 정렬하는 동시에 트랜잭션들을 배치로 압축한 뒤 콜데이터 형식으로 레이어1에 기록하는 역할을 한다. 만약 시퀀서가 트랜잭션을 배치에 포함시키지 않으면, 클라이언트는 delayed inbox에 트랜잭션을 일단 넣고, 24시간 안에 배치에 넣도록 강제할 수 있다. 이렇게 되면 시퀀서는 delayed inbox에 있는 트랜잭션들을 체인에 들어오는 정렬 순(first in, first out)대로 배치에 포함시켜야 한다. 즉, 시퀀서는 다른 것들은 포함시키면서 특정 메시지들만 선택적으로 지연시킬 수 없으며 정렬의 제일 앞 메시지를 지연시키는 것은 뒤의 메시지를 모두 지연시키는 것과 동일하다.

단일 시퀀서에서 나타날 수 있는 한 가지 문제점은 악의적인 시퀀서의 출현이다. 악의적인 시퀀서는 트랜잭션을 정렬, 실행시키는 과정에서 트랜잭션을 재배열하거나 포함시키는 것을 지연시킬 수 있긴 하지만 체인의 보안은 건드릴 수 없다. 하지만, 중앙화된 시퀀서로 발생하는 문제점 때문에, 단일 시퀀서는 향후 업그레이드를 통해 트랜잭션 배열에 대해 합의하는 분산된 시퀀서 위원회로 대체될 전망이다. (참고로, 현재 모든 롤업은 네트워크 운영주체가 임시적으로 시퀀서 역할을 담당하고 있다.)

검증인은 아비트럼 풀노드로 오픈소스 밸리데이터 소프트웨어를 운영하는 누구나 무허가로 참여가능하다. 검증인의 주요 역할은 스테이킹을 통해 아비트럼 체인의 상태를 검증, 아비트럼 네트워크 블록(Rollup block)을 제안, 부정확한 블록이 제안 되었을 때 반박(사기증명)하는 것이다. 아비트럼에선 정직한 검증인 1명만 있어도, 올바른 레이어2 상태 유지가 가능하다.

트랜잭션 처리 Flow

1. 아비트럼 노드는 시퀀서에게 클라이언트로부터 받은 트랜잭션을 전달해준다.

2. 시퀀서는 트랜잭션을 전달받는 순서대로 queue에 트랜잭션을 정렬, 실행시킨다. queue안에 있는 트랜잭션들은 제 시간에 실행되지 못하면 버려지기 때문에, 대부분 즉각 실행된다.

Cf) 이 과정에서 트랜잭션은 오직 시퀀서가 받는 순서대로 처리되며, 높은 수수료 입찰은 트랜잭션 처리 순서에 영향을 주지 않는다. 즉, priority fee가 필요없다.

이 트랜잭션 정렬 -> 실행 과정을 자세히 들여다보자면,

3. 시퀀서는 클라이언트가 아비트럼 체인에 보낸 메시지를 fast inbox에 담아 배열을 시키고, Nitro VM에서 트랜잭션을 실행시킨다.

Cf) 메시지는 시퀀서를 통해 fast inbox에 담기거나, delayed inbox에 담기게 되는데 특히,

레이어1에서 init된 메시지는 fast inbox로 이동하기 전, delayed inbox라는 컨트랙트에 보관된다.

4. 시퀀서는 트랜잭션을 실행시킨 후 일종의 tx 영수증을 클라이언트에 전달하고 이 단계를 soft confirmation이라 한다.

Cf) Soft confirmation이란 유저 트랜잭션을 곧 포스팅하겠다는 일종의 시퀀서 약속이라 보면 된다. 온체인 confirmation이 필요하지 않고, 1~2초 이상 소요되지 않는다. Soft confirmation 단계에서 확정성은 클라이언트가 전적으로 시퀀서를 믿는 것에 달려있다. 이 과정에서 악의적인 시퀀서는 트랜잭션 receipt에서 약속한 것과 달리 배치에서 퍼블리싱한 것에서 벗어날 수 있다.

5. 정렬된 트랜잭션들이 상태전환함수를 통해 순서대로 처리되면 체인 상태가 업데이트되고, 수백 개의 레이어2 트랜잭션들을 포함한 배치를 레이어1에 최종적으로 제출한다.

이 때, 1개의 배치는 레이어1에서 1개의 트랜잭션으로 계산된다.

6. 시퀀서가 레이어1에 배치를 제출하면 검증인은 해당 배치를 불러와서 아비트럼 VM(WAVM)에서 실행시킨다. (검증인은 아비트럼 체인 inbox에 있는 모든 레이어2 트랜잭션에 대한 접근 권한을 가진다)

7. 이후 체인의 가장 최신 상태에 대한 온체인 assertion을 제출한다.

검증인들이 assertion을 제출하면, 어쩔 수 없이 상태변화값들에 충돌이 발생할 수 밖에 없고 따라서 다음과 같이 분기가 발생, assertion tree가 형성되게 된다.

아비트럼 롤업 아키텍처의 assertion tree에서 사기증명은 다음과 같은 방식으로 이루어진다.

Assertion Tree

아비트럼 체인상태는 이더리움 위에서 최종확정된다. 그 이전에 레이어1에 제출된 레이어2 R block들은 7일간의 이의제기기간이 있으며 이 기간 동안 사기증명과정을 거치게 된다.

사기증명방식 :

*사기증명(Fraud proof)이란 유효하지 않은 상태변화임을 증명하는 과정을 일컫는다.

각각의 active 검증인은 레이어2 트랜잭션 실행 후 도출한 아비트럼 체인상태, R block에 대한 assertion을 한다.(이 과정에서 검증인은 이더를 보증금으로 예치해야 한다) 여기서 각기 다른 R block을 제출한 시점에 분기가 발생하게 되면 분기발생지점을 DA(Disputable Assertions)이라고 한다. Assertion tree에선 오직 1개의 브랜치만 유효하다고 판단되기 때문에 다른 R block을 제출한 2 검증인은 dispute 분쟁과정을 거치게 된다. 서로 간 call과 response 과정을 반복해 도출된 값(상태해시가 달라지게 된 시작점)을 레이어1에서 실행하고 실행결과가 어느 검증인이 옳은지 가려준다. 그 결과 유효하지 않은 R block을 제출한 검증인은 자신이 스테이킹한 물량을 잃게 된다.

유저들도 자신이 유효하다고 생각하는 상태해시에 이더를 스테이킹할 수 있으며 마찬가지로 7일 이후 잘못된 R block에 스테이킹한 유저는 스테이킹 물량을 모두 잃는 반면, 유효한 블록에 스테이킹한 유저는 모두 돌려받게 된다.

이렇게 레이어1에 제출된 R block들은 최종확정이 되기 전 7일간의 이의제기기간을 거치게 된다. 7일 이내에 제출된 R block에 대한 반박이 없으면 그대로 확정이 되는 것이고, 다른 검증인에 의해 반박이 제기되면 위와 같은 과정을 거친다. 이의제기기간 후 확정된 R block은 레이어1에서 outbox root가 업데이트된다. 이는 아비트럼 체인이 아비트럼 체인 히스토리의 일부로 Rblock을 확정하는 것이다.

아비트럼 사기검증 시스템은 악의적인 검증인이 유효한 L2 상태에서 벗어나고자 하면, 정직한 검증인이 이의제기를 해서 결국 이기게 되어있다. 이러한 매커니즘을 통해 1명의 정직한 검증인만 있어도 유효한 블록들이 이어져나가 올바른 레이어2 상태루트값이 레이어1에 퍼블리싱될 수 있게 되는 것이다.

다층상호작용형 증명

위 사기증명과정에서 눈에 띄는 점은 아비트럼이 다층상호작용형 증명을 사용한다는 것이다.

그럼 프로토콜 해결방식 중 하나인 다층상호작용형 증명이란 무엇일까

위에서 분쟁이 발생한 2 검증인이 call과 response 과정을 반복해 상태해시가 달라지게 된 지점을 찾아내고 이를 레이어1에서 실행한다고 했다.

옵티미스틱 롤업에선 사기증명이 발생하면 분쟁 대상 시점 이전의 트랜잭션 데이터를 모두 이더리움 메인넷에 보내 수행한다. 하지만, 아비트럼은 상태해시가 달라지게 된 시작점, 즉 이의제기된 트랜잭션을 쪼개는 단계를 거쳐 최초의 분쟁점만 레이어1 스마트 컨트랙트에서 실행함으로서 수수료를 절감한다.

2편에서, Arbitrum Nova 이어나가겠습니다 :)

--

--