출처: 비트코인 매거진, 파이브바트, 골든 파이낸스 편집
롤업은 최근 비트코인 확장성 측면에서 주목받고 있으며, 라이트닝 네트워크에서 가장 먼저 '천둥'을 훔친 것이 되었습니다. 롤업은 최종 사용자가 자금을 받기 위해 미리 자금을 할당(또는 "대여")해줄 사람이 필요하거나 중간 라우팅 노드가 발신자에서 수신자로의 결제 흐름을 원활하게 하기 위해 채널 잔액이 필요한 라이트닝 네트워크의 핵심 유동성 제약에 구속되거나 제한되지 않는 오프체인 세컨드 레이어로 고안된 것입니다.
이러한 시스템은 원래 이더 및 기타 튜링 완성 시스템에서 실행되었지만, 최근에는 UTXO 기반 블록체인(예: 비트코인)으로 포팅하는 데 초점을 맞추고 있습니다. 이 백서는 비트코인에서 현재 구현된 롤업의 최신 기술을 논의하기 위한 것이 아니라, 비트코인에서 현재 지원되지 않는 기능, 즉 비트코인에서 직접 영지식 증명(ZKP)을 검증하는 기능에 의존하는 이상화된 롤업의 오랫동안 추구되어 온 기능에 대해 논의하기 위한 것입니다.
롤업의 기본 구조는 다음과 같습니다: 단일 계정(비트코인의 UTXO)이 롤업에 있는 모든 사용자의 잔액을 보유합니다. 이 UTXO는 머클 트리의 머클 루트 형태로 롤업에 있는 기존 계정의 모든 현재 잔액에 대한 약속을 포함합니다. 이러한 모든 계정은 공개/개인 키 쌍을 사용해 승인되므로, 오프체인 지출을 시작하려면 사용자가 키를 사용해 서명해야 합니다. 이러한 구조 덕분에 사용자는 언제든지 자신의 계정이 머클 트리의 일부임을 증명하는 트랜잭션을 생성하여 운영자의 허가 없이 일방적으로 롤업에서 탈퇴할 수 있습니다.
롤업의 운영자는 오프체인 트랜잭션을 완료할 때 온체인 계정 잔액의 머클 루트를 업데이트하기 위해 트랜잭션에 ZKP를 포함해야 하며, 그렇지 않으면 트랜잭션이 유효하지 않으므로 블록체인에 포함될 수 없습니다. 이 증명을 통해 오프체인 계정의 모든 변경 사항이 계정 소유자에게 적절하게 승인되었는지, 운영자가 사용자의 자금을 훔치거나 다른 사용자에게 부정하게 재분배하기 위해 악의적으로 잔액을 업데이트하지 않았는지 확인할 수 있습니다.
문제는 머클 트리의 루트만 체인에 게시되어 있고 사용자가 이를 보고 접근할 수 있다면, 사용자가 원할 때 무단으로 트리를 빠져나갈 수 있도록 가지를 어떻게 넣을 수 있느냐는 것입니다.
올바른 롤업
올바른 롤업에서는 새로운 오프체인 트랜잭션이 확인되고 롤업 계정의 상태가 변경될 때마다 해당 정보가 블록체인에 직접 기록됩니다. 전체 트리가 아니라 트리를 재구축하는 데 필요한 정보만요. 간단한 구현에서는 롤업에 있는 모든 기존 계정의 요약에 잔액이 포함되며, 계정은 롤업을 업데이트하는 트랜잭션에서만 추가됩니다.
더 고급 구현에서는 잔액 차이가 사용됩니다. 이는 기본적으로 업데이트 프로세스 중에 어떤 계정에 자금이 추가되거나 차감되었는지를 요약한 것입니다. 이를 통해 각 롤업 업데이트에는 발생한 계정 잔액 변경 사항만 포함할 수 있습니다. 그런 다음 사용자는 롤업의 시작부터 간단히 체인을 스캔하고 "계산"을 통해 계정 잔액의 현재 상태를 도출하여 현재 잔액의 머클 트리를 다시 구축할 수 있습니다.
이를 통해 많은 오버헤드와 블록 공간(따라서 비용)을 절약하는 동시에 사용자가 일방적인 옵트아웃에 필요한 정보에 액세스할 수 있도록 보장합니다. 롤업 규칙은 이 데이터가 블록체인을 사용하여 사용자에게 제공되는 공식 롤업에 포함되어야 하며, 즉 계정 요약이나 계정 불일치가 포함되지 않은 거래는 유효하지 않은 것으로 간주합니다.
만료일
사용자 인출 데이터의 가용성 문제를 해결하는 또 다른 방법은 데이터를 블록체인이 아닌 다른 곳에 저장하는 것입니다. 이 경우 데이터를 다른 곳에서 사용할 수 있도록 하기 위해 롤업을 강제로 수행해야 한다는 미묘한 문제가 발생합니다. 전통적으로 롤업과 같은 시스템의 데이터 가용성 레이어 역할을 하도록 특별히 설계된 다른 블록체인이 이러한 목적으로 사용되어 왔습니다.
그러다 보니 보안이 그만큼 강력해지는 딜레마가 생깁니다. 데이터가 비트코인 블록체인에 직접 게시될 때는 합의 규칙에 따라 데이터가 절대적으로 정확하다는 것을 보장합니다. 그러나 외부 시스템에 게시될 때는 데이터가 다른 시스템에 게시되었다는 SPV 증명을 검증하는 것이 최선입니다.
이를 위해서는 데이터가 다른 체인에 존재한다는 증거를 확인해야 하는데, 이는 궁극적으로 예언 기계의 문제입니다. 비트코인의 블록체인은 자체 블록체인에서 일어나는 일 외에는 완벽하게 검증할 수 없으며, 최선은 ZKP를 검증하는 것이지만, ZKP는 롤업 데이터가 포함된 블록이 생성된 후 실제로 공개적으로 게시되었는지 여부를 검증할 수 없습니다. 외부 정보가 실제로 모든 사람에게 공개적으로 사용 가능한지 확인할 수 없습니다.
이 때문에 데이터를 공개하겠다는 약속이 생성되어 롤업을 진행하는 데 사용되지만 실제로는 데이터를 사용할 수 없는 데이터 보류 공격의 문이 열리게 됩니다. 이로 인해 사용자는 자금을 인출할 수 없게 됩니다. 유일한 해결책은 비트코인이 아닌 다른 시스템의 가치와 인센티브 구조에 전적으로 의존하는 것입니다.
딜레마
이것은 롤업에 딜레마를 낳습니다. 데이터 가용성과 관련해서는 기본적으로 비트코인 블록체인에 데이터를 게시할지 다른 곳에 게시할지 이분법적으로 선택할 수 있습니다. 이러한 선택은 롤업의 보안과 주권, 그리고 확장성에 중대한 영향을 미칩니다.
한편으로 비트코인 블록체인을 데이터 가용성 계층으로 사용하면 롤업의 확장성에 제한이 생깁니다. 블록 공간은 유한하기 때문에 한 번에 존재할 수 있는 롤업의 수와 모든 롤업이 오프체인에서 처리할 수 있는 트랜잭션의 수가 총합으로 제한됩니다. 각 롤업 업데이트에는 마지막 업데이트 이후 잔액이 변경된 계정 수에 비례하는 블록 공간이 필요합니다. 정보 이론에 따르면 특정 지점까지만 데이터를 압축할 수 있으며, 이 지점에서는 더 이상 확장할 수 있는 가능성이 없습니다.
반면, 데이터 가용성을 위해 다른 레이어를 사용하면 확장성 이득에 대한 하드 캡이 제거되지만 새로운 보안 및 주권 문제가 발생합니다. 비트코인을 사용해 데이터 가용성을 구현하는 롤업에서는 사용자가 추출해야 하는 데이터가 블록체인에 자동으로 게시되지 않으면 롤업의 상태가 변경될 가능성이 거의 없습니다. 밸리디움에서는 스푸핑과 데이터 은닉을 방지하는 데 사용되는 외부 시스템의 능력에 전적으로 의존합니다.
이제 외부 데이터 가용성 시스템의 블록 생산자는 실제로 블록을 방송하는 대신 블록을 생성하여 데이터를 사용할 수 있게 함으로써 비트코인 롤업 사용자의 자금을 탈취할 수 있습니다. 그렇다면 비트코인에서 실제로 사용자의 일방적인 인출을 가능하게 하는 이상적인 롤업이 구현된다면 어떤 모습일까요?