프라나브 가리미디, 스콧 듀크 코미너스, 팀 러프가든
출처: a16z
많은 web3 프로젝트는 무허가 투표를 위해 대체 가능하고 거래 가능한 기본 토큰을 사용합니다. 무허가 투표는 더 낮은 장벽에서 진입, 경쟁 증가에 이르기까지 많은 이점이 있습니다. 토큰 소유자는 토큰을 사용하여 간단한 매개변수 조정에서 거버넌스 프로세스 자체의 점검에 이르기까지 다양한 문제에 대해 투표할 수 있습니다. 그러나 무허가 투표는 공격자가 법적 수단(예: 공개 시장에서 토큰 구매)을 통해 투표권을 획득하고 해당 투표권을 사용하여 공격자 자신의 이익을 위해 프로토콜을 조작하는 거버넌스 공격에 취약합니다. 이러한 공격은 순전히 "프로토콜 내" 공격이므로 암호로 해결할 수 없습니다. 대신 이러한 공격을 방지하려면 신중한 메커니즘 설계가 필요합니다. 이를 위해 DAO가 위협을 평가하고 잠재적인 거버넌스 공격에 대응하는 데 도움이 되는 프레임워크를 설계합니다.
실제 거버넌스에 대한 공격
거버넌스 공격의 문제는 단지 이론적인 것이 아닙니다. 현실 세계에서 일어날 수 있을 뿐만 아니라 계속해서 일어날 것입니다.
이 명백한 예를 살펴보겠습니다. Steemit은 20명의 증인이 제어하는 온체인 거버넌스 시스템을 갖춘 블록체인 Steem에 분산형 소셜 네트워크를 구축하는 스타트업입니다. 유권자는 증인을 선출하기 위해 STEEM 토큰(플랫폼의 기본 토큰)을 사용합니다. Steemit과 Steem이 점점 더 매력적으로 보이자 Justin Sun은 Steem을 Tron에 병합할 계획을 세웠습니다. Tron은 그가 2018년에 설립한 블록체인 프로토콜입니다. 투표권을 얻기 위해 Sun은 Steem의 창립자 중 한 명에게 접근하여 총 공급량의 30%에 해당하는 토큰을 구입했습니다. Steem 증인이 그의 거래를 발견했을 때 그들은 즉시 Sun의 토큰을 동결했습니다. 그 다음에는 그가 원하는 상위 20명의 증인을 선택할 수 있도록 충분한 토큰을 제어하기 위해 Sun과 Steem 사이의 공개적인 전후 관계가 있었습니다. 주요 거래에 참여하고 토큰에 수십만 달러를 지출한 후 Justin Sun은 궁극적으로 승리를 거두었고 효과적으로 네트워크를 자유롭게 통치했습니다.
Beanstalk 예제를 다시 살펴보십시오. 스테이블 코인 프로토콜인 Beanstalk는 Flashloan 거버넌스 공격에 취약한 것으로 나타났습니다. 공격자는 Beanstalk의 1억 8,200만 달러 준비금을 몰수할 수 있는 악의적인 제안을 즉시 통과시키기 위해 충분한 Beanstalk 거버넌스 토큰을 얻기 위해 대출을 받았습니다. Steem에 대한 공격과 달리 이번 공격은 단일 블록 규모로 발생했습니다. 즉, 끝났고 아무도 아직 대응할 시간이 없었습니다.
이 두 가지 공격은 공개 및 대중 앞에서 발생했지만 거버넌스 공격은 장기간 비밀리에 수행되었을 수도 있습니다. 공격자는 많은 수의 익명 계정을 생성하고 거버넌스 토큰을 천천히 축적하면서 다른 소유자처럼 정상적으로 행동하여 포기하지 않도록 할 수 있습니다. 실제로 많은 DAO의 유권자 참여율이 낮은 경우가 많기 때문에 이러한 계정은 의심을 불러일으키지 않고 장기간 휴면 상태를 유지할 수 있습니다. DAO의 관점에서 볼 때 공격자의 익명 계정은 건강한 수준의 분산된 투표 권한을 입증하는 데 도움이 될 수 있습니다. 그러나 공격자는 결국 이러한 Sybil 지갑이 커뮤니티가 대응할 수 없는 상태에서 일방적으로 거버넌스를 제어할 수 있는 권한을 갖는 임계값에 도달할 수 있습니다. 마찬가지로 투표율이 충분히 낮으면 악의적인 행위자가 거버넌스를 장악할 수 있는 충분한 투표권을 얻은 다음 다른 많은 토큰 보유자가 비활성 상태일 때 악의적인 제안을 통과시키려고 시도할 수 있습니다.
우리는 모든 거버넌스 활동을 단순히 시장 세력의 결과라고 생각할 수 있지만 실제로 거버넌스는 인센티브 실패 또는 프로토콜 설계의 다른 허점으로 인해 때때로 비효율적인 결과를 낳을 수 있습니다. 정부 정책 결정이 이익 집단이나 단순한 관성에 의해 좌우될 수 있는 것처럼 DAO 거버넌스가 적절하게 구조화되지 않으면 좋지 않은 결과를 초래할 수 있습니다.
그렇다면 메커니즘 설계를 통해 이러한 종류의 공격에 어떻게 대처해야 할까요?
근본적인 과제: 구별 불가능
토큰 배포를 위한 시장 메커니즘은 프로젝트에 가치 있는 기여를 하려는 사용자와 방해 등을 통해 프로젝트를 제어하려는 공격자를 구분하지 못합니다. 공개 시장에서 토큰을 사고 팔 수 있는 세상에서 어느 그룹도 시장 관점에서 구별할 수 없게 행동합니다. 둘 다 점점 더 높은 가격으로 대량의 토큰을 기꺼이 구매할 의향이 있습니다.
이 구별 불가능성 문제는 탈중앙화된 거버넌스가 대가를 치른다는 것을 의미합니다. 대신 프로토콜 설계자는 개방형 분산 거버넌스와 거버넌스 메커니즘을 악용하려는 공격으로부터 시스템을 보호하는 것 사이에서 근본적인 절충안을 만들어야 합니다. 커뮤니티 구성원이 거버넌스 권한을 얻고 프로토콜에 영향을 미칠 수 있는 자유가 많을수록 공격자가 동일한 메커니즘을 사용하여 악의적인 변경을 하기가 더 쉬워집니다.
이 구별 불가능성 문제는 지분 증명 블록체인 네트워크 설계에서 일반적입니다. 또한 토큰의 유동성이 높은 시장은 공격자가 네트워크 보안을 손상시킬 수 있는 충분한 지분을 쉽게 확보할 수 있도록 합니다. 그럼에도 불구하고 토큰 인센티브와 유동성 설계의 조합은 지분 증명 네트워크를 가능하게 합니다. 유사한 전략이 DAO 프로토콜을 보호하는 데 도움이 될 수 있습니다.
취약점 평가 및 해결을 위한 프레임워크
다양한 프로젝트가 직면한 취약점을 분석하기 위해 다음 공식으로 캡처된 프레임워크를 사용합니다.
프로토콜이 거버넌스 공격에 면역이 되도록 하려면 공격자의 이익을 부정적으로 만들어야 합니다. 프로젝트에 대한 거버넌스 규칙을 설계할 때 이 공식을 사용하여 다양한 설계 선택의 영향을 평가할 수 있습니다. 프로토콜을 악용하려는 인센티브를 줄이기 위해 방정식은 세 가지 명확한 선택을 의미합니다. 공격 가치 감소, 투표권 획득 비용 증가, 공격 수행 비용 증가입니다.
공격의 가치를 낮추십시오
공격의 가치를 제한하는 것은 어려울 수 있습니다. 프로젝트가 성공할수록 공격의 가치가 높아지기 때문입니다. 분명히 프로젝트는 공격의 가치를 줄이기 위해 의도적으로 성공을 방해해서는 안 됩니다.
그럼에도 불구하고 설계자는 거버넌스 범위를 제한하여 공격의 가치를 제한할 수 있습니다. 거버넌스가 프로젝트의 특정 매개변수(예: 대출 계약의 이자율)를 변경할 수 있는 권한만 포함하는 경우 거버넌스가 스마트 계약에 대한 완전한 제어를 허용할 때보다 잠재적인 공격 범위가 훨씬 좁아집니다.
거버넌스 범위는 프로젝트 단계의 기능일 수 있습니다. 프로젝트 초기에 기반을 찾으면 더 광범위한 거버넌스를 가질 수 있지만 실제로 거버넌스는 창립 팀과 커뮤니티에 의해 엄격하게 통제될 수 있습니다. 프로젝트가 성숙해지고 제어가 분산됨에 따라 거버넌스에 일정 수준의 마찰을 도입하는 것이 긍정적일 수 있습니다. 가장 중요한 결정을 내리려면 최소한 많은 정족수가 필요합니다.
의결권 획득 비용 증가
또한 프로젝트는 공격자가 공격에 필요한 투표 권한을 얻는 것을 더 어렵게 만드는 조치를 취할 수 있습니다. 토큰의 유동성이 높을수록 의결권을 주장하기가 더 쉬워집니다. 따라서 거의 역설적이게도 프로젝트는 거버넌스를 보호하기 위해 유동성을 줄이고자 할 수 있습니다. 우리는 토큰의 단기 거래 가능성을 직접적으로 줄일 수 있지만 기술적으로 실현 가능하지 않을 수 있습니다.
유동성을 간접적으로 줄이기 위해 프로젝트는 개별 토큰 보유자가 토큰을 판매할 의향이 없도록 인센티브를 제공할 수 있습니다. 이것은 스테이킹을 장려하거나 토큰에 순수한 거버넌스와 독립적인 가치를 부여함으로써 이루어질 수 있습니다. 토큰 보유자가 더 많은 가치를 받을수록 프로젝트의 성공과 더 일치합니다.
독립형 토큰 혜택에는 대면 이벤트 또는 사회적 경험에 대한 참여가 포함될 수 있습니다. 결정적으로 이러한 혜택은 프로젝트에 참여하는 개인에게는 높은 가치가 있지만 공격자에게는 쓸모가 없습니다. 그러한 혜택을 제공하면 공격자가 토큰을 획득할 때 직면하는 유효 가격이 증가합니다. 공격자가 토큰을 얻은 후 얻을 수 있는 값.
공격 수행 비용 증가
투표권 비용을 높이는 것 외에도 공격자가 토큰을 얻었더라도 투표권을 행사하기 어렵게 만드는 마찰이 도입될 수 있습니다. 예를 들어 디자이너는 투표를 위해 KYC 확인 또는 평판 점수 임계값과 같은 일종의 사용자 인증을 요구할 수 있습니다. 인증되지 않은 참가자가 처음에 투표 토큰을 얻을 수 있는 능력을 제한하는 것도 가능하며, 일부 기존 검증자가 새로운 참가자의 합법성을 확인하도록 요구할 수 있습니다.
어떤 의미에서 이것은 정확히 얼마나 많은 프로젝트가 초기 토큰을 배포하여 신뢰할 수 있는 당사자가 투표권의 상당 부분을 제어하도록 보장합니다. (많은 지분증명 솔루션은 자신을 보호하기 위해 유사한 기술을 사용합니다. 누가 초기 지분을 갖게 될지 엄격하게 통제하고 거기서부터 점진적으로 탈중앙화합니다.)
또는 프로젝트는 공격자가 많은 양의 투표권을 제어하더라도 여전히 악의적인 제안을 전달하는 데 어려움을 겪도록 할 수 있습니다. 예를 들어 일부 프로젝트에는 타임락이 있으므로 스왑 후 일정 기간 동안 토큰을 투표에 사용할 수 없습니다. 결과적으로 많은 양의 토큰을 사거나 빌리려는 공격자는 투표를 기다리는 추가 비용과 그 동안 투표 회원이 잠재적인 공격을 알아차리고 차단할 위험에 직면합니다. 대표단도 이와 관련하여 도움이 될 수 있습니다. 적극적이지만 악의적이지 않은 참여자에게 투표 권한을 부여함으로써 거버넌스에서 특히 적극적인 역할을 원하지 않는 개인도 자신의 투표를 사용하여 시스템을 보호할 수 있습니다.
일부 프로젝트는 비활성 유권자에게 잠재적으로 위험한 제안에 대해 경고하기 위해 일정 기간 동안 투표를 연기할 수 있는 거부권을 사용합니다. 이 방식에 따르면 공격자가 악의적인 제안을 하더라도 유권자는 응답하고 닫을 수 있습니다. 이러한 설계 및 유사한 설계의 기본 아이디어는 공격자가 악의적인 제안을 통해 잠입하는 것을 막고 프로젝트 커뮤니티에 대응할 시간을 주는 것입니다. 이상적인 세상에서 분명히 계약의 이익에 맞는 제안은 이러한 장애물에 직면할 필요가 없습니다.
예를 들어 Nouns DAO에서 거부권은 DAO 자체가 대체 거버넌스 모델을 구현할 준비가 될 때까지 Nouns Foundation에 있습니다. 그들은 웹 사이트에 "명사 재단은 명사 DAO 또는 명사 재단에 중대한 법적 또는 실존적 위험을 초래하는 제안에 대해 거부권을 행사할 것입니다."라고 적었습니다.
프로젝트는 악의적인 제안 허점을 허용하지 않으면서 커뮤니티 변화에 어느 정도 개방성(때로는 반갑지 않을 수 있음)을 허용하는 균형을 유지해야 합니다. 일반적으로 프로토콜을 무효화하는 데는 악의적인 제안만 필요하므로 제안 수락 및 거부의 위험 상충 관계를 명확하게 이해하는 것이 중요합니다. 물론 거버넌스를 확보하는 것과 거버넌스를 가능하게 하는 것 사이에는 높은 절충안이 있습니다. 잠재적인 공격자를 저지하기 위해 마찰을 도입하는 모든 메커니즘은 물론 거버넌스 프로세스를 더욱 어렵게 만듭니다.
여기에서 설명하는 솔루션은 완전히 분산된 거버넌스와 프로토콜의 전반적인 건강을 위해 일부 바람직한 분산을 부분적으로 희생하는 것 사이의 어딘가에 있습니다. 우리의 프레임워크는 거버넌스 공격이 수익성이 없는지 확인하기 위해 프로젝트가 취할 수 있는 다양한 경로를 강조합니다. 우리는 커뮤니티가 이 프레임워크를 활용하기 시작하고 자체 실험을 통해 이러한 메커니즘을 추가로 개발하여 향후 DAO를 더욱 안전하게 만들기를 바랍니다.