스탠포드 연구자가 이더리움에서의 가역 거래를 구상하다: ERC-20R 및 ERC-721R
작성자: Kaili Wang, 스탠포드 대학교 블록체인 연구자
편집: 0x11, Foresight News
블록체인 거래의 불가역성은 축복이자 재앙입니다. BAYC 피싱, PolyNetwork 공격, Harmony Bridge 타협, Ronin 해킹 등 2021년 한 해에만 140억 달러의 암호화폐가 도난당했습니다. 이렇게 많은 "부인할 수 없는" 도난 사건이 빈번하게 발생하지만, 거래를 취소할 수 있는 "철회 버튼"(예: 신용카드 결제 취소)은 없으며, 모든 사람이 Wormhole처럼 행운이 있는 것도 아닙니다. Jump Crypto가 필요할 때 그들을 지원해주지 않습니다.
하지만 이러한 도난 사건을 되돌릴 수 있는 공정한 방법이 있다면 어떨까요?
이것은 스탠포드 대학교의 몇몇 사람들(Dan Boneh, Qinchen Wang, 그리고 저)이 지난 몇 달 동안 답하기 위해 노력해온 질문입니다. 우리는 ERC-20 및 ERC-721을 위한 역 거래를 지원하는 토큰 표준을 설계했으며(충분한 증거가 있을 때), 이에 대한 논문을 작성하고 이들의 코드 프로토타입을 구현했습니다. 우리는 이 토큰 표준을 각각 ERC-20R 및 ERC-721R이라고 부릅니다.
이제 여러분은 아마 이렇게 생각할 것입니다: 가역 토큰? 이것은 블록체인의 목적에 위배되지 않나요? 사실, 그렇지 않습니다. 이 제안은 블록체인에서 거래를 삭제하지 않으며, 단지 사후에 분산된 사법 투표 절차를 통해 자금을 합법적인 소유자에게 돌려줄 수 있도록 허용합니다.
작동 원리
거래 취소 프로세스
가정해봅시다. 공격자가 피해자로부터 자금을 도난당했습니다. 자금은 아래 그림 1과 같이 다른 주소로 추가로 전송될 수 있으며, 다음과 같은 일이 발생합니다:
- 피해자는 도난당한 자금을 동결해달라고 요청합니다. 피해자는 거버넌스 계약에 동결 요청을 제출하고 관련 증거 및 일부 담보 자산을 제출합니다. 논란이 있는 거래는 최근에 발생한 것이어야 합니다(고정된 가역 시간 창이 있습니다).
- 판사가 동결 요청을 수락하거나 거부합니다. 일정 수의 판사가 분산 투표를 통해 자산을 동결할지 여부를 결정하며, 이 심의 기간은 최대 1~2일이 걸릴 수 있습니다. 그들이 요청을 거부하면 거래 취소 프로세스는 중단되며, 피해자는 담보 자산을 잃게 됩니다. 요청을 수락하면 거버넌스 계약이 ERC-20R/ERC-721R 계약의 freeze 함수를 호출합니다.
- 동결 실행. NFT의 경우, 동결은 NFT의 전송을 방지하는 것뿐입니다. ERC-20R의 경우, 도난당한 자금을 추적하고 이 자금의 전송을 금지합니다. 계좌 소유자의 잔액이 동결 금액 이상인 한, 계좌 소유자는 여전히 다른 사람과 거래할 수 있습니다. 이 과정은 복잡해질 수 있으며, 다음 섹션에서 설명하겠습니다.
- 재판. 양측은 분산 법원에 증거를 제출할 수 있으며, 최종적으로 판사가 판결을 내립니다. 이때 그들은 거버넌스 계약에 영향을 받는 ERC-20R/ERC-721R 계약의 reverse 또는 rejectReverse 함수를 호출하도록 지시합니다. rejectReverse 함수를 호출하면 논란이 있는 자산의 동결이 해제됩니다. 재판 과정은 오랜 시간이 걸릴 수 있으며, 몇 주가 걸릴 수 있습니다.
- 거래 역전. reverse 함수를 호출하여 동결된 자산을 피해자에게 반환합니다.
그림 1: 거래 그래프
도난 자금 추적
도난당한 자산은 대개 한 곳에만 보관되지 않습니다. 공격자는 일반적으로 자산을 한 계좌에서 다른 계좌로 전송하는 방법을 사용합니다. 이 경우, 공격자는 mempool을 모니터링하고 동결 요청이 제출되는 것을 보았을 때 자산을 프론트 거래로 전송할 수 있습니다. 이러한 상황을 피하기 위한 해결책은 단일 거래에서 전체 동결을 체인 상에서 수행하여 공격자가 동결에서 "탈출"할 수 없도록 하는 것입니다.
하지만 우리는 모든 관련 자산의 계좌를 단순히 비활성화할 수는 없습니다. 그렇다면 우리는 무엇을 동결하고 누구의 계좌를 동결할지를 어떻게 결정할까요? NFT인 경우, 동결은 매우 간단합니다: 현재 NFT를 소유하고 있는 사람을 확인하고 해당 계좌를 동결하면 됩니다. 그러나 ERC-20 자산의 경우, 화폐의 분할 가능성 때문에 동결이 매우 복잡해집니다. 이 자금은 수십 개의 계좌에 분산될 수 있으며, Tornado와 같은 익명 믹서에 투입되거나 다른 암호화폐로 교환될 수 있습니다. 여러 계좌를 통해 전송되면, 그 중 일부는 해커와 관련이 있을 수 있지만, 일부는 무고할 가능성이 높습니다. 각 계좌의 유죄 여부를 항상 정확하게 판단하는 것은 불가능합니다. 따라서 우리는 도난당한 자금을 추적하고 잠금 해제하는 기본 동결 프로세스를 제공합니다. 우리의 알고리즘은 다음을 보장합니다:
- 파괴가 없다고 가정할 때, 도난 금액을 지불하기 위해 충분한 자산을 동결합니다.(반환된 금액에서 파괴된 자산을 차감)
- 계좌 자금은 도난 자산과 직접 거래 흐름이 있는 경우에만 동결됩니다.
- 거래 그래프(그림 1)에 비례하여, 알고리즘은 합리적인 실행 시간 복잡도로 작동합니다.
우리는 논문에서 알고리즘에 대한 더 많은 세부 사항을 논의합니다.
가역성은 전염병
거래에서, 평소처럼 두 가지 다른 가역 토큰을 교환하는 것은 안전합니다; 한 쪽이 동결을 요청하면, 다른 쪽에서 자금을 회수할 가능성이 있습니다. 그러나 가역 토큰을 불가역 토큰으로 교환하는 것은 위험합니다; 자신을 역전으로부터 보호하기 위해 거래는 가역 시간 창이 지나고 나서만 완료될 수 있습니다. 이는 가역→불가역 거래에 긴 지연이 발생함을 의미합니다. 따라서 몇 가지 주요 토큰이 가역적으로 변하게 되면, 다른 토큰들도 큰 가역 압박에 직면하게 됩니다.
분산 사법 시스템
이 문제의 다소 모호한 부분은 "판사의 법정 인원수"에 관련됩니다. 이 판사들은 누구인가요? 그들은 어떻게 투표하나요? 그들은 어떻게 보상을 받나요?
이 작업은 궁극적으로 ERC-20R/ERC-721R 인스턴스를 생성한 거버넌스에 달려 있습니다. 그러나 일반적으로 판사는 거래 풀에서 무작위로 사례를 선택해야 하며(이더리움의 랜덤 비콘 사용), 그들의 보상은 그들의 투표 결정과는 독립적입니다. 보상은 동결 요청과 함께 제출된 피해자의 초기 지분에서 나옵니다. 판사의 선거는 비밀리에 진행되는 것이 가장 좋으며, 투표가 제출되기 전까지 공개되지 않아야 판사가 독립적으로 투표할 수 있습니다. 마찬가지로, 논문을 참조하여 추가 논의를 진행하십시오.
더 알고 싶으신가요?
우리의 논문에서는 판사가 부정직할 위험을 줄이는 방법, 거래소 및 믹서에 대한 영향, 관련 작업, 알고리즘 및 구현에 대한 심층 설명 등 더 많은 세부 사항을 논의합니다. 관심이 있으시다면, 살펴보시기를 권장합니다. 우리는 이것이 토큰의 가역성에 대한 논의를 촉발하고, 여러분 중 일부가 생태계의 손실을 줄이는 데 도움이 되는 더 나은 가역 솔루션을 찾기를 바랍니다.