Vitalik:RAI 시스템을 예로 들어 오라클 공동 스테이킹의 가능성을 탐구하다
편집: DeFi之道
RAI가 직면한 주요 도전 중 하나는 LP 역할을 할 의사가 있는 ETH 보유자를 찾기 어렵다는 것입니다. 특히 현재 약 -5%에서 -10%의 수준보다 높은 금리가 있을 때 더욱 그렇습니다. 이 문제의 주요 원인 중 하나는 현재 RAI CDP가 스테이킹과 수익원으로서 경쟁하고 있다는 점입니다.
오늘날 ETH 보유자는 ETH를 CDP에 넣고 RAI를 인출하여 1% DAI의 저축률로 DAI로 전환하고 약 10%의 금리 차익 또는 약 5%의 연간 수익률(2배의 담보 마진을 고려할 때)을 얻을 수 있습니다. 또는 그들은 단순히 ETH를 스테이킹하고 더 낮은 위험으로 동일한 5%의 연간 수익률을 얻을 수 있습니다. 만약 RAI 금리가 -3%로 증가한다면, 계산 결과는 스테이킹에 더욱 유리해질 것입니다.
누군가는 다중 담보 RAI를 이 문제의 해결책으로 탐색하고 있습니다. 개인적으로 제 생각은 DAI가 이미 임의의(포함하여 "실제 자산") 다중 담보 알고리즘 스테이블코인의 틈새 시장을 채우고 있기 때문에 RAI 생태계가 이 분야에서 경쟁하는 것은 의미가 없다는 것입니다. 따라서 제 생각에는 "다중 담보"가 극히 좁은 다중 담보 형태(ETH 및 스테이킹 ETH)를 의미할 때만 RAI(또는 포크)를 다중 담보로 만드는 것이 의미가 있습니다.
이 글에서는 이를 달성하기 위한 몇 가지 다른 방법을 탐구합니다.
우리는 모든(단독) 스테이커가 그들의 스테이킹 권리를 CDP 담보로 이중 사용하도록 할 수 있을까요?
Eigenlayer는 출금 주소를 특정 조건이 충족될 때만 자금을 반환하는 계약으로 설정함으로써 스테이커가 다른 애플리케이션에서 스테이킹 권리를 재사용할 수 있도록 하는 도구 모음입니다. 사람들은 Eigenlayer를 사용하는 RAI 버전을 만들 수 있다고 상상할 수 있습니다: 사용자는 출금 주소를 계약으로 설정하여 그들이 스테이킹한 ETH를 CDP에 입금하고, 그 계약은 그들이 RAI 부채를 상환한 후에만 반환됩니다. 만약 사용자가 청산된다면, 계약의 논리는 ETH의 소유권을 청산인에게 이전합니다(프로토콜에서 가능할 때 즉시 출금이 촉발됩니다).
이 방법의 주요 도전 과제는 정상적인 상황에서는 잘 작동하지만, 처벌이 매우 드물고 낮은 경우에도 극단적인 상황에서는 시스템의 안전성을 크게 저하시킬 수 있다는 점입니다. 특히 공격자가 51% 공격을 계획하고 있다면(혹은 더 온건한 공격으로 일부 제안자의 몰수와 관련된 경우), 그들은 공격 시스템에 사용되는 모든 검증기를 RAI-CDP에 넣고 가능한 한 많은 RAI를 인출하는 것이 합리적이 됩니다.
만약 공격자가 이렇게 한다면, 그들은 실제로 시스템에서 RAI를 "탈취"하여 RAI로 평가된 부채를 발생시킵니다. 시스템은 FLX 또는 ETH 준비금을 사용하여 RAI를 재구매하기 위해 경매를 통해 빠르게 재조정하려고 시도할 수 있지만, 여전히 파산의 위험이 있습니다.
RAI는 Lido의 stETH만 사용할 수 있을까요?
이는 위의 문제를 해결하면서 RAI가 최소한의 작업으로 필요할 수 있는 방법입니다. 그러나 저는 이 방법에 대해 우려를 표명하고 싶습니다. 왜냐하면 stETH와 같은 스테이킹 시스템을 더욱 공고히 하면 이더리움 수준의 시스템적 위험을 초래할 수 있기 때문입니다. 만약 그것이 더 큰 시장 지배력을 얻는다면, 이는 stETH를 관리하는 시스템에 많은 신뢰를 부여하여 새로운 공격 벡터를 전체 이더리움 스테이킹에 도입할 수 있습니다. stETH에 대해서는 중앙화된 스테이킹 파생상품만큼 현실적이지 않지만, 여전히 위험이 존재합니다.
이러한 이유로 저는 단일 주도 유동성 스테이킹 파생상품 주위에 네트워크 효과가 형성되는 것을 피하기 위해 스테이킹 ETH를 담보로 사용하는 방법을 찾으려는 시도를 강력히 지지합니다. 또한 RAI는 담보 자산의 대체 가능성을 필요로 하지 않기 때문에(CDP는 대체 불가능하므로), RAI는 실제로 해결책의 일부가 될 수 있습니다.
아이디어 1: 오라클을 스테이커로 사용하기
RAI CDP(또는 RAI)를 보유한 사람은 누구나 RAI의 오라클 시스템이 그들의 자금을 탈취하지 않을 것이라고 매우 확신합니다. 만약 RAI 오라클이 ETH/USD 가격을 거의 0에 가깝게 보고하기 시작한다면, 모든 CDP는 청산되고 그 보유자는 아무것도 남지 않게 됩니다. RAI 보유자(가상의 공격자가 그 중 가장 큰 보유자가 될 수 있음)는 CDP를 구매하고 그 안의 ETH를 매우 저렴한 가격에 얻을 수 있습니다.
이러한 이유로 오라클 시스템에 대한 신뢰는 극히 중요하게 여겨져야 합니다. 특히, 51%의 프로토콜 투기 토큰(여기서는 FLX)은 장기간의 지연 없이 즉시 오라클 제공자를 변경하기 위해 투표할 수 없습니다(그렇지 않으면 시스템이 위험 자금 총액이 FLX 시장 한도를 초과하는 환경에서 안정적으로 운영될 수 없습니다). 제가 생각하는 최적 모델에 대한 제 의견은 대략 이렇습니다.
어쨌든, 중요한 관찰은 RAI 보유자가 이미 오라클이 이런 방식으로 그들을 망치지 않을 것이라고 믿고 있기 때문에, 우리가 다른 위험이 적은 방식으로 오라클을 신뢰하더라도 시스템의 취약성이 증가하지 않을 것이라는 점입니다.
자연스러운 선택은: RAI 자체가 Lido의 복사본을 생성하여 CDP를 생성하는 사용자가 이 자금을 스테이킹하고 RAI 오라클을 스테이킹 키로 설정하는 것입니다(어쩌면 RAI 오라클이 분산 검증기를 공동 운영할 수 있지만, CDP는 출금 주소로 설정됩니다).
여기서 신뢰의 정도는 보이는 것만큼 높지 않습니다: 나쁜 RAI 오라클은 자금이 파괴되도록 만들 수 있으며, 몰수되거나 오프라인 처벌(inactivity-leaked)을 받을 수 있지만, 자금을 탈취할 수는 없습니다. 극히 드문 예외적인 경우, 특정 MEV 공격을 수행하여 공격자가 이중 제안으로 인해 몰수당하는 경우를 제외하고는 말입니다.
하지만 여전히 완벽하지는 않습니다: 이러한 드문 특별 공격이 가능하며, 오라클이 스테이커가 되고 싶어하는지 여부는 불확실합니다. 스테이킹의 법적 위험은 오라클 제공자가 되는 법적 위험보다 높아 보이며, 후자는 많은 관할권에서 명확한 표현의 자유 "정보 제공만" 범주에 속합니다. 이는 그들을 공격할 더 큰 동기를 생성할 수 있습니다.
아이디어 2: 오라클을 2-of-2 스테이커로 사용하기
이는 사용자가 더 많은 제어권을 유지하고 오라클에 대한 신뢰를 줄일 수 있는 대안입니다. 오라클에 속한 스테이킹 키 대신, 스테이킹 키는 P + Q
로, 여기서 Q
는 오라클에 속한 키이고, P
는 CDP 보유자가 소유한 키입니다. BLS 서명의 알고리즘 특성 덕분에, 오라클은 Q
로 서명할 수 있고, CDP 보유자는 P
로 스스로 서명하여 두 서명을 결합하여 P + Q
를 검증하는 서명을 생성할 수 있습니다. 이것은 기본적으로 2-of-2 DVT입니다.
이는 신뢰 속성을 강화합니다:
a. 오라클만으로는 CDP 보유자를 몰수할 수 없다;
b. 오라클 자체는 제안자 공격을 수행할 수 없으며, 블록 제안에는 CDP 보유자의 서명이 필요하다;
c. CDP 보유자는 몰수되거나 공격당하지 않으므로 시스템의 담보를 이런 방식으로 파괴할 수 없다;
d. 오라클이나 CDP 보유자가 오프라인일 수 있다; 이 경우, 다른 쪽이 퇴출을 촉발하고 CDP에서 나가며 손실은 적다;
e. 극단적인 경우, 오라클이나 CDP 보유자가 비활동 누수 기간(inactivity leak) 동안 오프라인일 수 있다. 이 경우, 어느 한 쪽이 다른 쪽에 손실을 초래할 수 있다.
실행
이 설계는 DVT의 특별한 경우입니다:
a. 이것은 2-of-2이므로 네트워크 관점에서 가장 간단한 경우입니다;
b. 2개 중 1개(오라클)는 수천 개의 파트너에게 서비스를 제공합니다. 그러나, 그것은 단순히 동일한 데이터를 서명하고, 이를 다운로드할 수 있도록 모든 CDP와 공유할 수 있습니다;
c. 블록 생산의 자율성을 유지하기 위해, 이 특정 경우에 제안자는 서명할 내용을 선택하고 오라클에게 공동 서명을 요청할 수 있습니다. 오라클은 동일한 도메인의 동일한 슬롯에서 두 개의 서로 다른 데이터를 동시에 서명해서는 안 되며, 이는 CDP를 몰수하는 데 사용될 수 있는 블라인딩 트릭(blinding tricks)과 결합될 수 있습니다.
이는 구현해야 할 새로운 기술이므로, 실제로 구현하기 위해 DVT 팀의 협력이 필요할 수 있습니다. 일단 구축되면, 운영하기는 그리 어렵지 않을 것입니다.
아이디어 2의 약점
이 시스템의 가장 큰 취약점은 비활동 누수(inactivity leaks)입니다. 이러한 누수는 오라클이 오프라인일 때만 발생할 수 있습니다. 그러나 저는 이러한 위험을 감수하는 것이 괜찮다고 생각합니다. 잔액이 16 ETH 미만이면 검증자는 자동으로 퇴출되고 ETH를 회수합니다. 따라서 우리는 일반 ETH의 1.5배를 제공하는 대신 2배 담보 요구 사항을 가진 스테이킹 ETH를 수용할 수 있습니다.
극단적인 경우, 많은 검증자가 동시에 누수되면, 한 번에 소수만 퇴출될 수 있으므로 일부 검증자는 16 ETH 미만으로 추가 누수 처벌을 받을 수 있지만, 수요가 있다면 이는 이더리움 스테이킹 프로토콜에서 발생할 수 있는 변화입니다. 수정을 하지 않더라도, 매우 극단적인 공격(50% 이상의 사람들이 오프라인)이 필요하며, 정직한 검증자가 통제하는 잔액 비율이 2/3 이상으로 돌아오기 전에 많은 검증자가 16 ETH 미만으로 누수되는 것은 드문 일입니다.
또 다른 주요 단점은, 주요 우려가 오라클의 악의적인 몰수보다는 오라클의 악의적이거나 부주의한 오프라인 상태인 세계에서 잘 작동하지 않는다는 것입니다. 이는 우리가 (i) 오라클이 낮은 품질의 스테이커가 되기를 기대하거나, (ii) 오라클이 신뢰할 수 있는 하드웨어를 사용하고 사용자가 이것을 (부분적으로) 신뢰 가정으로 받아들이기 때문일 수 있습니다(참조: Puffer). 이러한 약점을 해결하기 위해, 우리는 아래의 아이디어 3을 제안합니다.
아이디어 3: 계층적 보안을 위한 반신뢰할 수 있는 오라클
대부분의 오라클이 정직하다고 보장할 수 있는 경우, 다른 방법은 남은 신뢰 문제를 제거합니다.
우리는 세 가지 상수를 정의합니다:
N: 오라클 시스템의 오라클 총 수;
k1: CDP 보유자와 함께 메시지를 서명할 수 있는 오라클 수(예: k1 ~= 0.2 * N)
k2: CDP 보유자 없이 협력하여 메시지를 서명할 수 있는 오라클 수(예: k2 ~= 0.8 * N)
우리는 오라클이 두 개의 비밀 공유 키를 유지하도록 요구합니다:
a. Q1, k1-of-N 비밀 공유에서
b. P + Q2, k2-of-N 비밀 공유에서(후자는 각 CDP 보유자에게 하나씩)
Q1의 경우, 오라클은 CDP 보유자와 공동 서명할 수 있고, Q2의 경우 독립적으로 서명할 수 있습니다.
k1 + k2 = N인 경우(예: k1 = N/5 및 k2 = 4N/5), 이는 두 가지 경우 모두 몰수 및 비활동 누수가 발생하지 않도록 보장합니다:
a. k2를 초과하는 오라클은 정직하다(왜냐하면 그들은 독립적으로 메시지를 서명할 수 있으며, 악의적인 CDP 보유자는 k1의 법정 인원을 찾아 공동 서명할 수 없다);
b. 최소한 k1개의 오라클이 정직하고 CDP 보유자도 정직하다(왜냐하면 이 두 그룹은 함께 메시지를 서명할 수 있으며, 나머지 오라클은 서명할 수 없고 그들을 방해할 수 없다);
이 스타일은 Rollup의 1단계 훈련 라운드와 유사하며, 두 가지 보안 모델 간에 선형 혼합을 생성하여 둘 다 부분적으로 신뢰하지만 한 쪽에 과도하게 신뢰하지 않는 방식입니다.
이 설계는 아이디어 1과 2의 일반화로 볼 수 있습니다(심지어 "CDP 보유자가 스스로 서명할 수 있다"는 제안): k1과 k2는 필요에 따라 조정하여 누가 신뢰할지를 탐색하는 전체 균형 공간을 탐색할 수 있습니다.
이러한 방법의 일반적인 이점(아이디어 1의 2 또는 3)
a. 신뢰할 수 있는 중립적이며 외부 의존성을 도입하지 않습니다: 그것은 참여자만 신뢰하며, 이미 더 높은 정도의 신뢰를 부여받았습니다;
b. 사용자가 동시에 CDP를 스테이킹하고 보유할 수 있는 이점을 실현합니다;
c. 기존 유동성 스테이킹 파생상품의 네트워크 효과를 불필요하게 촉진하는 것을 피합니다. 반대로, 이 계획이 유지하는 스테이블코인은(안정적인) 유동성 스테이킹 파생상품입니다.
아이디어 1, 아이디어 2 및 아이디어 3 비교
a. 구현의 용이성에 따라 순위를 매기면, 아이디어 1 > 아이디어 2 > 아이디어 3
b. 나쁜 오라클을 방지하는 데 따라 순위를 매기면, 아이디어 3 > 아이디어 2 > 아이디어 1
c. 나쁜 CDP 보유자를 보호하는 데 따라 순위를 매기면, 아이디어 3 > 아이디어 2 > 아이디어 1
d. 오라클이 실행을 두려워하지 않도록 하는 데 따라 순위를 매기면, 아이디어 2 > 아이디어 3 > 아이디어 1
결론적으로, 아이디어 1은 단기적으로 더 쉽게 구현할 수 있을 것 같고, "다른 스테이킹 수익을 동시에 얻는" 공간에 흥미로운 추가 요소가 될 것입니다. 그러나 아이디어 2와 아이디어 3은 더 신뢰가 필요 없고, 더 지속적이며, 오라클에 대한 신뢰도가 낮고, 스테이킹의 분산화를 더 잘 유지하기 때문에 장기적으로 더 매력적으로 보입니다.