
Rollup 업그레이드 이면의 다중 서명과 위원회 신뢰 위험: L2는 많은 사람들이 생각하는 것만큼 '좋지 않음'
저자: 링커, 『Geek Web3』
서론
솔라나(Solana)가 서서히 쇠퇴하고 OP 토큰이 발행된 이후로, 레이어2(Layer2)와 롤업(Rollup)은 무수한 Web3从业者들에게 새로운 안식처처럼 여겨지고 있다. 약세장이 지속되고 FTX 사태와 Multicoin의 막대한 손실이 발생하면서 이더리움의 경쟁체들은 차례로 Web3 무대에서 자취를 감추며 ETH와 어깨를 나란히 할 수 있는 자신감을 점차 잃고 있다. 점점 더 많은 사람들이 롤업을 차세대 주요 스토리라인으로 인식하게 되었으며, L2 위에는 마치 봄비 후 돋아나는 싹처럼 새로운 프로젝트들이 우후죽순 생겨나고 있다.
하지만 이러한 현상이 과연 “허상의 번영”은 아닐까? “언제든 꺼질 수 있는 거품”은 아닐까? 롤업과 L2는 정말 대부분의 사람들이 주장하는 것처럼 완벽할까? 사람들의 인식처럼 정말 안전할까? 아직 많은 OP 롤업이 사기 증명(Fraud Proof)을 도입하지 않은 점을 고려한다면, 롤업의 보안 취약점은 또 무엇이 있을까?
본 글은 L2BEAT가 최근 발표한 “Upgradeability of Ethereum L2s” 보고서에서 영감을 받아 작성되었으며, 롤업 업그레이드 뒤에 숨겨진 멀티시그(Multisig) 및 위원회 신뢰 리스크와 기존 롤업 관련 논의들을 종합하여, 최근의 Multichain 사건을 떠올리며 L2가 많은 이들이 생각하는 만큼 “완벽하지 않다”는 점을 다루고자 한다.

롤업 원리 간단 설명
(이미 롤업의 작동 원리를 잘 알고 계신 분은 아래 여러 단락을 건너뛰어 다음으로 넘기셔도 됩니다)
롤업 운영 원리 요약:
이더리움 롤업 = 레이어1(Layer1) 상의 일련의 컨트랙트 + 레이어2(Layer2) 네트워크 자체 노드들
레이어2 네트워크 노드 그룹은 몇 가지 역할로 나눌 수 있으며, 그 중 가장 중요한 것은 정렬기(Sequencer)이다. 정렬기는 L2에서 발생하는 트랜잭션 요청을 수신하고 실행 순서를 결정한 후, 이 트랜잭션들을 배치(Batch) 형태로 묶어 롤업 프로젝트의 L1 스마트 컨트랙트(롤업 컨트랙트라고 통칭함)로 전송한다.

Starknet 상호작용 로직 개념도
레이어2 전체 노드(full node)는 정렬기로부터 직접 트랜잭션 시퀀스를 가져올 수도 있고, 정렬기가 L1에 전송한 트랜잭션 배치(batch)를 읽을 수도 있다. 그러나 후자는 전자보다 더 높은 최종 확정성(finality)(변경 불가능성)을 갖는다. 일반적으로 정렬기가 한 묶음의 트랜잭션을 L1에 전송하면, 해당 트랜잭션들의 순서는 변경되지 않는다(이더리움에서 블록 리버설이 발생하지 않는 한, 롤업의 트랜잭션 순서도 바뀌지 않음).
트랜잭션 실행은 블록체인 원장 상태를 변경하기 때문에, 트랜잭션 순서 외에도 L2 전체 노드는 정렬기와 원장 상태(ledger state)를 동기화해야 일관성을 유지할 수 있다.
따라서 정렬기는 L1의 롤업 컨트랙트에 트랜잭션 배치를 전송할 뿐 아니라, 트랜잭션 실행 후의 상태 갱신 결과(StateRoot / State Diff)도 L1에 전달해야 한다.
눈여겨볼 점은, L1(이더리움)이 실제로 L2 노드들의 게시판 역할을 하고 있다는 것이다. 이는 L2 자체 네트워크보다 훨씬 더 탈중앙화되어 있으며, 더 Trustless하고 안전하다. L2 전체 노드 입장에서는 L1 상의 롤업 트랜잭션 시퀀스 + 초기 StateRoot만 있으면 L2 블록체인 원장을 재현해 최신 StateRoot를 계산해낼 수 있다. 만약 L2 전체 노드가 자체 계산한 StateRoot와 정렬기가 L1에 제출한 StateRoot가 일치하지 않는다면, 이는 정렬기가 사기 행위(fraud)를 했다는 의미가 된다.

가장 직관적인 가상 사례는 다음과 같다: L2 정렬기가 사용자 자산을 훔칠 수 있을까? 예를 들어, 일부 L2 사용자의 토큰을 정렬기 운영자의 주소로 옮긴 후 다시 L1으로 전송하는 등의 실제 발생하지 않아야 할 트랜잭션을 위조할 수 있을까? 이런 질문은 결국 다음과 같은 문제로 귀결된다: 정렬기가 잘못된 트랜잭션 데이터 혹은 잘못된 StateRoot를 공개했을 경우 어떻게 대응할 것인가?
정렬기의 사기 위험에 대해, 각 유형의 롤업은 서로 다른 대응 방식을 가지고 있다. 옵티미스틱 롤업(Optimistic Rollup)은 L2 전체 노드가 사기 증명(Fraud Proof)을 제공하여 정렬기가 L1에 제출한 데이터의 오류를 입증할 수 있도록 허용한다. 예를 들어 Arbitrum은 노드 화이트리스트를 설정해, 화이트리스트에 등재된 L2 노드만 사기 증명을 제출할 수 있게 한다.
게다가 대다수 거래소와 민간 크로스체인 브릿지 운영사들이 자체 L2 전체 노드를 운영하고 있어 오류를 즉각 감지할 수 있다는 점을 고려하면, 대부분의 롤업 정렬기가 자산을 훔치는 데 성공할 가능성은 거의 0에 가깝다(결국 자금 세탁은 거래소에서 이루어져야 하거나, L1으로 옮긴 후 추가 조치를 취해야 하기 때문).

그림에서 Aggregator는 실질적으로 정렬기임
반면 사기 증명이 없는 Optimism의 경우, 정렬기는 롤업 자체의 크로스체인 브릿지(bridge) 컨트랙트를 통해 자산을 훔칠 수 있다. 예컨대 정렬기 운영자가 트랜잭션 명령을 위조해 다른 사용자의 L2 자산을 자신의 주소로 이체한 후, 롤업의 내장 브릿지 컨트랙트를 이용해 도난 자산을 L1으로 전송할 수 있다. 사기 증명이 없기 때문에 OP의 전체 노드는 오류 트랜잭션에 대한 이의 제기를 할 수 없으며, 따라서 이론적으로 OP 정렬기는 L2 사용자의 자산을 훔칠 수 있다(정말로 그렇게 하겠다는 의지만 있다면 말이다).

2023년 7월 24일 기준, Bedrock 업그레이드 후의 OP는 여전히 사기 증명 시스템을 출시하지 않았다
이 문제를 해결하는 방법은 “사회적 합의(social consensus)”(커뮤니티 구성원과 소셜 미디어 등을 통한 여론 감시) 또는 OP 공식팀의 신용 담보에 의존하는 것이다.
흥미롭게도, 최근 어떤 거래소는 Arbitrum과 Optimism 사용자가 거래소로 입금할 때의 지연 시간을 크게 단축했다(기존 L2 블록 100개에서 1개로 감소). 이는 ARB와 OP의 정렬기가 악의적인 행동을 하지 않을 것이라고 신뢰하는 것이며(즉, 공식 지원을 받는 중심화된 서버로 간주), 실질적으로는 신뢰를 전제로 하는 조치다.

옵티미스틱 롤업과 달리, L2 전체 노드에 의존하는 것 외에도 ZK 롤업(ZK Rollup)은 유효성 증명(Validity Proof)(종종 ZK 증명과 혼동됨)을 통해 정렬기의 사기 문제를 해결한다. ZK 롤업 네트워크에는 Prover라는 노드가 존재하며, 정렬기가 제출한 트랜잭션 배치(Batch)에 대해 유효성 증명을 생성한다. 동시에 L1에는 유효성 증명을 검증하는 전용 컨트랙트(Verifier라고 함)가 존재하며, 트랜잭션 배치와 StateRoot/State diff에 대한 증명이 Verifier 컨트랙트의 검증을 통과하면, 해당 트랜잭션은 최종 확정(Finalized)된다. ZK 롤업의 공식 브릿지는 유효성 증명 검증을 통과한 인출 요청만 승인하므로, 이는 Optimism보다 훨씬 더 신뢰할 수 있다.

Scroll이 정의한 트랜잭션 데이터의 3단계
이론적으로, OP 롤업의 보안은 L2 전체 노드에 의해 보장된다(적어도 하나 이상의 정직한 노드가 사기 증명을 제출할 수 있어야 함). 반면 ZK 롤업의 보안은 L1의 Verifier 컨트랙트에 의해 보장되며(L1 노드가 트랜잭션의 최종 확정을 수행), 겉보기에 두 방식 모두 “L1의 보안을 계승한다”(L1을 통해 트랜잭션의 최종 확정/결제를 완료)고 볼 수 있다. 이더리움 최대주의자들 사이에서는 이를 “L1 수준의 보안과 동등하다”(L1과 동일한 트랜잭션 최종성)고까지 표현하기도 하지만, 현실은 그렇지 않으며 오히려 매우 다르다.
늘 거론되는 '기존 문제점'
첫째, ZK 롤업의 유효성 증명 생성 속도가 매우 느리다. 정렬기는 1초 안에 수천 건의 트랜잭션을 처리할 수 있지만, 이 수천 건의 트랜잭션에 대한 증명을 생성하는 데 최대 수시간이 걸릴 수 있다. 하지만 이 문제는 비교적 쉽게 해결 가능하며, 주류 ZKR 프로젝트들은 증명 생성 작업을 분할해 여러 Prover 노드가 병렬 처리하도록 하여 생성 속도를 크게 향상시키고 있다.
둘째, L2 노드가 L1에 데이터를 게시하는 지연을 고려해야 한다. 정렬기나 Prover가 L1에 데이터를 전송할 때마다 고정 비용이 발생하기 때문이다(마치 매번 화물을 운송할 때마다 컨테이너를 소모하는 것과 같음). 따라서 L1에 자주 데이터를 게시하는 것은 비경제적이며 손해를 볼 수 있으므로, 정렬기와 Prover는 L1에 게시하는 빈도를 최소화하고, 데이터가 많이 모인 후 한꺼번에 묶어 전송하는 경향이 있다.
즉, 사용자 수가 부족하거나 발생하는 트랜잭션 수가 적을 경우, 정렬기는 L1에 데이터 게시를 지연시킨다. 예를 들어 작년 사용자 수가 적을 때, Optimism은 30분에 한 번씩 L1에 트랜잭션 배치를 전송했다. 현재는 사용자가 늘어나면서 이 문제가 어느 정도 해결되었다. OP와 달리 Starknet은 State diff 게시 빈도를 줄여 데이터 비용을 낮췄는데, 이로 인해 Starknet의 트랜잭션 최종 확인 지연이 7~8시간으로 길어졌다.
또한 대부분의 ZK 롤업은 비용을 더욱 절감하기 위해 “여러 개의 증명을 모아 한 번에 L1에 전송한다”는 방식을 사용한다. 즉, Prover는 증명 하나를 생성하자마자 바로 L1에 보내는 것이 아니라, 여러 증명이 생성된 후 하나로 통합하여 L1의 Verifier 컨트랙트에 전송한다.(사실상 증명을 집계하는 과정은 여러 증명을 검증하는 계산 단계를 하나의 증명으로 포함하는 것임)

Scroll의 증명 집계 개념도
이런 방식의 결과는 증명 게시 빈도가 더욱 낮아지고, 트랜잭션이 발생한 후 최종 확정되기까지의 지연이 더욱 길어진다는 것이다.
블록 탐색기 정보에 따르면, Polygon ZKEVM의 트랜잭션 확정 지연은 약 30~50분이며, Starknet과 Zksync Era는 7시간 이상이다. 분명히 이는 “부분적으로 L1의 보안을 계승”한 것이며, 이더리움 지지자들이 주장하는 “L1과 동등한 보안”과는 큰 차이가 있다.

물론 위의 문제들은 기술 발전을 통해 해결 가능하며, 가까운 미래에 실현될 수 있다. 예를 들어 많은 프로젝트가 고성능 하드웨어를 개발해 유효성 증명 생성 시간을 단축하고 있으며, Optimism도 곧 사기 증명 시스템을 출시하겠다고 약속했다. 또한 이더리움의 Danksharding 방안은 롤업의 데이터 비용을 수십 배 이상 낮춰 위에 열거한 문제들을 효과적으로 해결할 수 있다.
해결하기 어려운 '인간 중심' 문제
DeFi 등의 애플리케이션 프로젝트와 마찬가지로, 롤업 네트워크의 운영은 L1 상의 관련 컨트랙트에 의존하며, 이러한 컨트랙트는 “업그레이드 가능(upgradable)”하다. 즉 일부 코드를 교체할 수 있으며(대부분의 롤업이 프록시 컨트랙트 사용), 멀티시그 또는 보안위원회의 승인 하에 즉시 업데이트될 수 있다. 결론부터 말하자면: 少数인이 통제하는 멀티시그 또는 보안위원회를 통해 롤업은 L1 상의 컨트랙트 코드를 신속히 변경한 후 사용자 자산을 훔칠 수 있다.

출처: L2BEAT 연구 보고서
먼저 “왜 롤업 컨트랙트는 업그레이드가 필요한가”와 “어떻게 업그레이드하는가”를 살펴보자. 이더리움 상의 컨트랙트 코드는 배포 후 변경할 수 없지만, 롤업 개발 과정에서 다양한 버그가 발생할 수 있으며 이는 잘못된 결과를 초래할 수 있다. 또한 롤업은 빈번한 제품 반복을 진행하며 새로운 기능을 추가해야 하며, 더 극단적인 경우 해커가 롤업 컨트랙트를 공격할 가능성도 있다. 따라서 롤업 컨트랙트는 업그레이드 가능성이 필요하며, 이는 일반적으로 프록시 컨트랙트를 통해 구현된다.

출처: wtf academy
프록시 컨트랙트(proxy contract)는 이더리움 컨트랙트 개발에서 흔히 사용되는 방법으로, 컨트랙트의 데이터와 비즈니스 로직을 분리하여 서로 다른 컨트랙트에 저장하는 방식이다. 데이터(상태 변수)는 프록시 컨트랙트에 저장되고, 비즈니스 로직(함수)은 로직 컨트랙트(Implementation)에 저장된다. 프록시 컨트랙트는 delegatecall을 통해 함수 실행을 전적으로 로직 컨트랙트에 위임한 후, 최종 결과를 호출자(Caller)에게 반환한다.
프록시 패턴 하에서의 컨트랙트 업그레이드는 단순히 프록시 컨트랙트가 새로운 로직 컨트랙트를 가리키도록 주소를 변경하면 된다. 대부분의 롤업 프로젝트는 이러한 컨트랙트 업그레이드 방식을 채택하고 있으며, 매우 단순하고 직접적이다.

출처: wtf academy
쉽게 짐작할 수 있듯이, 롤업 컨트랙트의 업그레이드 가능성은 사실상 거대한 위험 요소다. 만약 업그레이드된 컨트랙트에 악성 코드가 포함되어 롤업 내장 브릿지 컨트랙트의 출금 조건을 수정하거나, Verifier 컨트랙트가 유효성 증명을 판단하는 기준을 변경한다면, 정렬기는 자산을 훔칠 수 있다(앞서 원리를 설명함).
문제는 롤업 컨트랙트의 업그레이드를 허용하지 못한다는 것도 현실성이 없다는 점이다. 앞서 이유를 충분히 설명했으므로, 이 두 가지 사이에서 균형을 맞추기 위해 대부분의 롤업은 DAO 거버넌스, 보안위원회 또는 멀티시그 승인을 통해 인간 중심의 방식으로 컨트랙트 업그레이드 여부를 결정한다. 또한 타임락(Timelock)을 도입하여 컨트랙트 업그레이드에 지연 창구를 설정한다.

출처: L2BEAT 연구 보고서
대부분의 DAO 제안은 자동 실행 프로세스(체인 상의 컨트랙트로 구현)를 갖추고 있기 때문에, 컨트랙트를 업그레이드하더라도 충분한 투표 수를 확보한 후 타임락(TimeLock)이 규정한 지연 시간(보통 수일 이상)을 거쳐야 비로소 업그레이드 작업이 실행된다. 누군가 악의적인 컨트랙트 업그레이드를 시도한다면, 거버넌스 공격(governance attack)을 통해 DAO 거버넌스 관문을 통과해야 한다(예: Tornado Cash에서 발생한 거버넌스 공격). 그러나 이는 매우 높은 비용이 들며, 충분한 양의 토큰을 확보해야 하므로 정상적인 상황에서 성공하기 어렵다. 설사 거버넌스 공격이 성공하더라도 타임락 제한 덕분에 사용자는 자산을 L2에서 충분히 빠르게 인출할 수 있으며, 롤업 공식팀도 충분한 시간을 갖고 긴급 조치를 취할 수 있다.

타임락은 일정 시간의 지연 후에야 특정 작업을 허용하는 것
타임락이 악의적인 컨트랙트 업그레이드를 막는 마법의 해결책처럼 보인다. 그러나所谓 “롤업 공식팀이 취할 수 있는 긴급 조치”란 실질적으로 DAO 거버넌스와 타임락을 우회하여 멀티시그 또는 보안위원회의 승인을 받아 즉시 컨트랙트를 업그레이드하는 것이다. 현재 주류 롤업들이 수십억 달러에 달하는 사용자 자산을 보유하고 있다는 점을 고려하면, 멀티시그와 보안위원회가 승인하는 “즉시 컨트랙트 업그레이드”는 궁극적인 비상 조치이지만, 동시에 모든 사용자 머리 위에 매달린 다마스커스의 검과도 같다.
명백히 이것은 신뢰 최대화(trust maximization) 문제다: 당신은 롤업 공식팀이 당신의 자산을 훔길 생각이 없을 것이라는 점을 신뢰해야 한다. Trustless 관점에서 고려해보면(닉 사보의 시각), 멀티시그와 보안위원회가 통제하는 모든 롤업은 안전하지 않다. 애벌랜치(Avalanche) 창립자 에민 건 시어(Emin Gun Sirer)와 솔라나 창립자 아나톨리(Anatoly), 그리고 유명한 비평가 저스틴 본스(Justin Bons) 모두 이 문제를 강조한 바 있다.


어떤 롤업들이 멀티시그/위원회에 의해 통제되고 있는가?
유명한 L2 연구기관 L2 BEAT의 보고서 “Upgradeability of Ethereum L2s” 및 L2BEAT 데이터 시각화 웹사이트에 따르면, Arbitrum, Optimism, Loopring(루핑), ZKSync Lite, ZkSync Era, Starknet, Polygon ZKEVM 등 주요 롤업들은 모두 멀티시그 또는 위원회 승인을 통한 업그레이드 가능한 컨트랙트를 보유하고 있으며, 타임락 제한을 우회할 수 있다.


dYdX는 EOA 주소 하나가 DAO 거버넌스를 우회해 컨트랙트를 업그레이드할 수 있지만, 타임락 제한(최소 2일 지연)이 적용된다. Immutable X는 14일의 컨트랙트 업그레이드 지연이 존재하므로, L2BEAT의 평가에 따르면 dYdX와 Immutable X는 메인넷에 이미 출시된 다른 주류 롤업보다 더 Trustless하다.


출처: L2BEAT 연구 보고서
그렇다면 멀티시그와 보안위원회로 인한 신뢰 리스크를 어떻게 낮출 수 있을까? 답은 사실상 Multichain 사건과 유사하다: 결국 시르바 문제(Sybil resistance)로 귀결된다. 멀티시그/위원회가 서로 다른, 이해관계가 높게 중복되지 않고, 공모 위험이 낮은 실체들로 구성되어야 한다는 것을 보장해야 한다. 현재로서는 DAO의 탈중앙화 거버넌스 성숙도를 높이고, 명망과 신용이 있는 유명 인사나 기관을 멀티시그/위원회에 참여시키는 것 외에는 특별히 좋은 방법이 보이지 않는다. 그런데 이러한 상황은 현실 세계의 민주 정치에서 이미 오랫동안 반복되어온 모습이다.
물론 멀티시그/위원회가 관리하는 컨트랙
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














