ZK 사기 증명은 완벽한가? 1편

sm-stack · 2025.10.01 · Short

[ZK 사기 증명은 완벽한가? 1편] 어제 카테시(Cartesi)의 컨트리뷰터 가브리엘이 ZK 사기 증명에 대한 인상적인 리서치를 퍼블리시하였습니다. 해당 시리즈는 이에 대한 배경부터, 실제로 바운드리스 등이 주장하는 ZK 사기 증명의 보안 우수성이 진짜인지 알아봅니다. 아비트럼과 옵티미즘, 그리고 카테시를 포함한 옵티미스틱 롤업들은 일반적인 경우 L1

[ZK 사기 증명은 완벽한가? 1편] 어제 카테시(Cartesi)의 컨트리뷰터 가브리엘이 ZK 사기 증명에 대한 인상적인 리서치를 퍼블리시하였습니다. 해당 시리즈는 이에 대한 배경부터, 실제로 바운드리스 등이 주장하는 ZK 사기 증명의 보안 우수성이 진짜인지 알아봅니다. 아비트럼과 옵티미즘, 그리고 카테시를 포함한 옵티미스틱 롤업들은 일반적인 경우 L1에 제출되는 상태 루트를 기본적으로 믿으며, 잘못된 상태 루트가 제출되었을 때 분쟁 게임을 통해 ‘사기’를 감지하고 이를 증명해내는 메커니즘을 실행합니다. 이 사기 증명은 다음과 같은 과정을 통해 발생합니다. 1. L1에 제출된 상태 루트에 대해 서로 다른 의견을 가지고 있는 두 참여자는 서로 트랜잭션을 주고받으며 동의하지 않는 지점을 찾아내려갑니다. 1번부터 10번 블록 사이에서 무언가 서로 동의하지 않는 지점을 찾기 위해, 참여자 A와 B가 중간 블록들인 5번, 2번 등의 루트를 계속 L1에 제출해가는 것이죠. 서로 상대방이 제출한 블록의 루트를 보고, 어디부터가 잘못되었는지 좁혀나가는 방식입니다. 이를 바이섹션(bisection)이라고 합니다. 2. 두 참여자는 서로 동의하지 않는 가장 작은 단위(opcode)를 찾을 때까지 바이섹션을 진행합니다. 그 지점에 도달했다면, 찾은 opcode를 이더리움 위 스마트 컨트랙트를 통해 실행해보게 됩니다. 이 ‘분쟁 게임’에서 진 참여자는 미리 묶어둔 증거금을 잃게 되기 때문에, 잘못된 상태 루트를 계속해서 제출하는 방식으로 롤업을 공격하려는 사람은 결국 돈을 다 잃을 수밖에 없습니다. 위 과정도 그리 간단하진 않은 프로세스이지만, 실제로 옵티미스틱 롤업들의 메인넷에 적용된 솔루션들은 훨씬 더 복잡합니다. 특히, 단순한 증거금 삭감만으로 방어할 수 없는 공격 케이스들이 많습니다. 대표적으론 다음과 같은 공격들이 있죠. 1. 딜레이 공격: 분쟁 게임의 종결을 계속해서 미뤄, 사용자들이 출금을 매우 긴 시간 동안 하지 못하게 하는 공격입니다. 이 공격 벡터 때문에 아비트럼은 사기 방지 메커니즘을 허가된 형태로 몇 년 동안 유지해야 했습니다. 다행히 현재는 ‘시계 메커니즘’ 도입을 통해 해법이 어느 정도 자리잡은 상황이며, 아비트럼 및 옵티미즘, 카테시에서는 출금 대기 시간을 매우 길게 늘어뜨리는 딜레이 공격이 불가능합니다. 2. 소모 공격: 공격자가 방어자보다 돈이 더 많은 상황에서, 공격자가 반복적으로 악의적인 상태 루트를 제출하는 등의 액션을 통해 방어자의 자금을 모두 소모시키는 형태의 공격입니다. 이는 몇몇 롤업 옵티미즘의 현재 메커니즘은 이 공격에 취약하며 (보안 위원회의 개입으로 정상화될 수 있기 때문에 위협적인 공격 벡터는 아니지만, Stage 2에 도달하려면 해결해야 합니다), 아비트럼은 공격자의 자금이 방어자보다 6.5배 많지 않다는 가정 하에서 안전한 메커니즘을 지니고 있습니다. 카테시는 토너먼트 알고리즘을 통해 공격자가 공격을 지속할수록 지수적으로 더 많은 자금을 써야 하게 만들어 이를 해결했죠. 이러한 케이스들에 대응하기 위해 옵티미스틱 롤업들은 여러 부담을 안고 분쟁 게임을 운영하고 있습니다. - 소모 공격을 최대한 막기 위해, 분쟁 게임 진행에 필요한 증거금의 양이 매우 큽니다. 아비트럼의 경우 3,600 ETH이며, 옵티미즘은 분쟁 게임을 끝까지 진행한다는 가정 하에 약 700 ETH를 증거금으로 맡겨야 합니다. 즉, 아무나 챌린지를 진행할 수 없습니다. (반면 카테시의 경우는 토너먼트 알고리즘으로 소모 공격 문제를 해결했기 때문에, 1 ETH 정도의 작은 증거금으로도 안정적인 운영이 가능합니다). - 분쟁 게임의 완료를 위해 L1에 몇 십번의 트랜잭션을 보내야 합니다. 아비트럼과 옵티미즘 모두 총 70개 가량의 트랜잭션이 모두 L1에 보내져야 게임이 종료될 수 있죠. 비용도 비용이지만, L1에서의 검열에도 취약해질 수 있습니다. 이러한 상황에서, zkVM 및 프루버 네트워크를 구축한 서싱트 및 바운드리스는 각각 OP Succinct Lite, OP Kailua로 대표되는 ‘ZK 사기 증명’을 구축했습니다. 이는 다음과 같은 메커니즘을 통해 이뤄집니다. 1. 이제 분쟁 게임은 참여자 간 상호작용을 필요로 하지 않습니다. 먼저, 상태 루트 제출자는 루트를 제출하면서 ‘중간에 있는 루트들’을 모두 같이 올립니다. 2. 만약 검증자 중 이 루트에 동의하지 않는 사람이 있다면, 중간 루트들 중 어디가 틀렸는지와 올바른 상태 루트에 대한 ZK 증명을 제출합니다. 만약 컨트랙트에서 이 ZK 증명이 성공적으로 증명된다면, 원래 상태 루트는 무효화되며 상태 루트 제출자의 증거금은 몰수됩니다. 이러한 프로토콜을 만든 바운드리스 등이 주장하는 바는, 참여자 간 상호작용이 아예 없기 때문에, 딜레이 공격이나 소모 공격이 거의 불가능하다는 것입니다. 이에 따라 증거금의 양도 매우 적게 유지해도 되며, L1의 검열도 크게 걱정하지 않아도 되기 때문에, 챌린지 기간인 7일을 몇 시간으로 크게 줄일 수 있습니다. 그러나 이게 맞을까요? 카테시 컨트리뷰터인 가브리엘의 리서치에 따르면, 이는 사실이 아닙니다.

← Contents