Solidly에 이르기까지 DeFi의 흐름

Solidly에 이르기까지 DeFi의 흐름

written by CaptainK / reviewed by 돌비콩


목차

  1. 들어가며
  2. 거래 유동성 공급의 방법론
  3. Curve의 거버넌스 토큰 솔루션 — Vote Escrow
  4. Curve의 한계 — 이해관계의 불일치와 거버넌스 토큰의 가치 희석
  5. Solidly가 고안한 문제해결 방법 — ve(3, 3)
  6. 결론

  1. 들어가며

Solidly는 2022년 초 DeFi의 초신성 Andre Cronje가 Fantom 체인에서 내놓은 마지막 DApp이다. Solidly는 Uniswap, Compound에 이어 코드 포크 수 기준 3위에 있으며, 직접적인 포크가 아니더라도 Solidly의 메커니즘을 도입한 DApp(Camelot DEX 등)들까지 합하면 그 수가 더 많을 것으로 예상된다.

Fork 수 기준 DApp 순위, DeFillama

또한, Solidly를 포킹 한 프로젝트들인 Velodrome, Thena, Satin, Stering, Solidlizar 등은 최근 가격 강세를 보이기도 했다. Solidly는 이러한 흥행에 힘입어 아비트럼까지 영역을 확장하려 하고 있다. 이번 게시물에선 Solidly가 어떤 장치를 사용했고 또 어떤 문제를 해결하려 했는지 살펴보고자 한다. 이를 위해선 DeFi DApp들이 어떤 배경에서 나왔고, 무슨 문제를 해결하기 위해 발전해 왔는지 알아야 할 필요가 있겠다.

체인 별 Solidly 포크

2. 거래 유동성 공급의 방법론

DEX와 CEX, 어떤 가상자산 거래소건 간에 가장 우선적으로 해결해야 하는 숙제가 있다. 바로 유저의 거래를 원활하게 하기 위한 유동성 공급이다. 오더북 기반 거래소, 즉 중앙화 거래소(CEX)의 유동성이 부족하다는 것은, Taker가 거래를 체결할 수 있는 호가가 비어있는 상황을 의미한다. 이런 환경의 거래소에서 시장가 주문을 사용한다면 가격 급등락이 발생, 차트 상에서의 흡사 피뢰침 같은 형상이 종종 나타나기도 한다.

유동성이 부족한 거래 환경에서 나오는 차트 피뢰침

이러한 사태를 방지하기 위해, 상황에 맞는 유동성을 적절하게 공급하는 것이 Jump Trading과 같은 마켓 메이커(Market Maker, MM)의 역할이다. 그런데 탈중앙화 거래소(DEX)는 이러한 MM에 의존하지 않고도 유동성을 공급하고자 한다. 이를 위해 Uniswap은 유동성을 공급한 유저에게 별도의 인센티브를 제공한다. 바로 Trading Fee(Swap 사용자로부터 징수하는 수수료, Fee)를 유동성 공급자(Liquidity Provider, LP)에게 제공하는 것이다.

Swap 시 발생하는 Trading Fee, Uniswap

유동성 공급자는 토큰 페어를 만들어 유동성을 공급하고 그 대가로 거래 수수료를 받는다. 거래는 자연스럽게 더 많이 일어나고, Fee가 많이 발생하는 풀(예: ETH-USDT)에는 더 많은 유동성이 제공된다. 이를 통해 주문한 가격과 실제 체결되는 가격이 다를 때 생기는 거래비용인 ‘슬리피지(Slippage)’는 줄어들고, 이용자의 거래 환경은 개선된다.

이렇게 초기 DeFi는 ‘유동성 공급에 대한 대가 제공→유동성 공급→슬리피지 최소화’ 구조로 발전한다. 그런데 수수료 지급만으로는, 가격 하락과 비영구적 손실(Impermanent Loss, IR) 등의 리스크를 감당하면서까지 Pool에 유동성을 공급한 대가로 부족할 수 있다. 때문에 DEX는 DApp에서 발행한 토큰을 추가로 지급하여 보다 충분한 보상을 제공했다. Uniswap의 UNI, Sushiswap의 SUSHI가 바로 그것들이다.

문제는 이런 토큰들의 별다른 가치가 없다는 것이다. 일례로, Uniswap의 UNI는 오직 투표권만으로 활용되는 ‘거버넌스 토큰’이다. 거버넌스 토큰에 가치를 부여하기 위해 높은 이율로 예치하는 방법도 제시되었으나, 이는 더 많은 거버넌스 토큰 발행을 초래하기 때문에 근본적인 문제 해결이 될 수 없었다. 결국 거버넌스 토큰이 더 많은 거버넌스 토큰의 채굴만을 위해 쓰이는 곡괭이에 불과해지기 때문이다.

3. Curve의 거버넌스 토큰 솔루션 — Vote Escrow

Curve Finance는 거버넌스 토큰에 좀 더 다양한 기능을 부여하여 이러한 문제를 해결하고자 했다. Curve의 거버넌스 토큰인 CRV는 락업이 가능하고, 그 기간에 따라 일정 비율로 veCRV를 지급한다. 이 veCRV는 다양한 활용처를 갖고 있는데, 그중 하나가 Fee의 청구권이다.

veCRV의 Fee 청구권, Curve

Trading Fee는 Curve에서 Swap 하면서 발생한 Fee를 말하는데, 여기서 50%를 veCRV 홀더(락업 홀더)에게 제공하는 것이다. 주식에서 배당을 지급받는 것과 유사하다. 이 경우 유동성 공급자는 거버넌스 락업 홀더들과 수익을 나눠야 한다. Fee의 100%를 수령하는 Uniswap과 비교했을 때 상대적인 손해를 보기 때문에, Curve에서는 보상을 위한 ‘Gauge(게이지)’를 도입한다.

Gauge는 유동성 공급자에게 Fee와는 별개로 추가로 제공하는 보상이다. 이는 앞서 말한 UNI나 SUSHI처럼 DApp에서 자체적으로 발행하는 토큰을 말하는데, Curve에선 CRV를 통해 제공한다. 모든 풀에 할당되는 Gauge의 총량, 즉 CRV의 발행량은 정해져 있다. 이 Gauge는 1/n로 나눠지는 것이 아니라 투표에 따라 가중치가 달라지며, 이를 Gauge Weight라고 한다.

여기서 다시 veCRV의 유틸리티가 나오는데, veCRV 홀더에게는 투표 권한이 주어진다. 다양한 수많은 풀 중 본인이 원하는 풀에 표를 던질 수 있으며, 표를 많이 받은 풀의 경우 더 많은 CRV가 제공된다. 이처럼 토큰을 락업하고 투표권을 얻는 방식을 ‘Lock Voting’이라고 부른다.

veCRV의 Lock Voting 기능, Curve

정리하자면 Curve에선 유동성 공급자(LP)와 veCRV 홀더가 Fee를 반씩 나눠갖고, LP 입장에서 줄어든 수수료 수익은 Gauge를 통해 대신 보상받을 수 있게 된다. 그리고 이 Gauge를 어떤 페어가 더 많이 가져가는지는 veCRV 홀더가 결정한다. 투표를 많이 받은 풀은 높은 Gauge를 받게 되고, 해당 풀에 유동성을 공급한 주체는 더 많은 CRV를 보상으로 받는다. 이는 유동성 공급자가 더 많은 유동성을 제공하는 인센티브가 된다. 여기서 파생된 개념이 ‘뇌물 시장(Bribe Market)’이며, 과거 많은 사람들의 주목을 받은 ‘커브 전쟁(Curve Wars)’이 바로 이러한 구조에서 기인한다.

Uniswap과 Curve의 수익 분배 구조 차이

4. Curve의 한계 — 이해관계의 불일치와 거버넌스 토큰의 가치 희석

Curve는 이 구조를 통해 기존 거버넌스 토큰에 가치를 부여했고, 이를 통해 거버넌스 토큰의 무의미한 곡괭이화를 방지할 수 있게 되었다. Uniswap이 해결하지 못 한 ‘거버넌스 토큰의 무용성 딜레마’를 타파한 것이다. 그런데 이런 Curve 역시 해결하지 못 한 문제가 있다. 락업 홀더의 이해관계가 Gauge 인센티브 구조와 일치하지 않는다는 점이다. 락업 홀더의 경우, 어떤 풀에 투표를 하는지에 대해 큰 관심이 없다. 투표 결과가 어떻게 되든 Fee의 50%를 보장받기 때문이다. 이렇게 되면 유동성이 엉뚱한 곳으로 흘러갈 수 있다.

예를 들어, 거래가 많이 일어나서 100의 Fee가 발생하는 A-B 풀과 거래가 적어 10의 Fee가 발생하는 C-D 풀이 있다고 가정해 보자. Fee가 100% 유동성 공급자에게 돌아가는 경우, Fee가 10배 차이 나므로 A-B 페어와 C-D 페어의 TVL 역시 10배 차이가 나야 한다. 그런데 Curve에서 유동성 공급자의 Fee는 50%이고, Gauge에 의해 추가적인 보상을 받을 수 있다. 결과적으로 A-B로 얻을 수 있는 총보상이 80(Fee 100*50%=50 + Gauge 30)이 되고, C-D로 얻을 수 있는 보상이 35(Fee 10*50%=5 + Gauge 30)가 되는 것이다. 이렇게 되면 총보상이 2.3배가량만 차이가 나기에, A-B와 C-D의 TVL 역시 겨우 2.3배 정도만 차이 나게 될 것이다.

Uniswap과 Curve에서 유동성 공급자의 선택

유동성 공급자 입장에서 줄어든 Fee만큼 Gauge가 벌충을 해줘야 타산이 맞게 된다. 그러나 락업 홀더의 이해관계와 Gauge 인센티브가 일치하지 않기에 문제가 발생한다. Locking Vote의 2차 시장인 Bribe Market 때문에 이러한 왜곡 현상은 지속되고 있다.

다시 처음으로 돌아가보자. 가장 이상적인 DeFi는 ‘거래가 많이 일어나는 풀일수록, 높은 유동성이 공급’될 수 있는 형태다.

Uniswap은 Fee의 100%가 유동성 공급자에게 보상해 목표를 달성했지만, 추가적인 보상으로 제공되는 거버넌스 토큰은 곡괭이로 전락했다. Curve는 Fee의 50%를 거버넌스 락업 홀더에게 나누어서 곡괭이화는 방지했지만, 유동성 공급자는 50% 만큼의 유동성 공급 인센티브를 잃게 돼 Fee와 유동성이 비례하지 않는 문제가 발생했다.

또 하나의 중대한 문제는, 어떤 DEX도 거버넌스 토큰의 가치 희석을 방지하지 못한다는 점이다. Curve가 거버넌스 토큰인 CRV에 기능을 넣으면서 가치를 부여하긴 했지만, 정해진 기간 동안 일정량이 지속적으로 발행되는 거버넌스 토큰의 특성상 계속해서 가치가 희석될 수밖에 없다. 수요와 상관없이 공급이 늘어나게 되는 것이다.

5. Solidly가 고안한 문제해결 방법 — ve(3, 3)

이처럼 기존 DEX엔 ‘인센티브 구조의 왜곡’과 ‘토큰의 가치 희석’이라는 두 가지 문제가 있다. Solidly는 이 두 가지 문제를 해결하기 위해서 등장했다.

이상적인 상황에선 거래(Volume)가 많을수록 높은 유동성(Total Value Locked, TVL)이 공급되어야 한다. TVL이 낮으면 Swap 시 슬리피지가 발생하게 되고, 이는 결국 DEX의 본래 목표인 ‘안정적인 거래’를 달성할 수 없게 된다.

Volume과 TVL, DEX에서 이 두 가지를 이어주는 것이 바로 Fee다. ‘거래 발생 → Fee 발생 → Fee를 유동성 공급자에게 제공’의 구조를 통해 거래량과 유동성을 연결한 것이다. 그런데, 토큰 가치 유지를 위해 이 Fee를 락업 홀더에게 나눠줌으로써 나눠준 만큼의 TVL 공급 유인이 떨어진다. 받아야 될 Fee를 절반밖에 못 받게 되기 때문이다.

대신 유동성 공급자는 Gauge라는 장치를 통해 토큰 보상을 추가적으로 받는데, 이 Gauge의 크기는 락업 홀더들이 투표를 해서 결정한다. 이에 따라 유동성 공급자들은 높은 인센티브(Fee+Gauge)를 제공하는 풀에 유동성을 공급하게 되므로, Gauge의 방향에 따라 유동성을 공급하게 된다.

문제는 이 Gauge를 결정하는 락업 홀더에게는 Volume이 많은 풀에 투표를 할 동기가 없다. 투표를 어떻게 하든 Fee의 50%를 받을 수 있기 때문에, Bribe Market의 뇌물 같은 별도의 인센티브에 따라 움직이게 된다.

이 때문에, ‘높은 Volume → 높은 Fee → 깊은 TVL’이라는 공식이 깨지게 된다. ‘(거래량 상관없이) 높은 Gauge → 깊은 TVL’의 구조가 끼어들기 때문이다. 인센티브에서 Gauge의 비중이 커지면 커질수록 이러한 문제는 더욱 심각해진다.

한 마디로 정리하면 ‘락업 홀더의 수익 추구와 유동성 공급의 인센티브가 분리되는 것’이다. 이러한 구조가 고착화되면, DApp에 쌓인 TVL을 효율적으로 활용할 수 없게 된다. 거래가 많이 일어나는 풀의 TVL이 충분하지 않다면, Swap을 이용하는 유저들은 불필요한 슬리피지를 겪게 될 것이다. 높은 슬리피지는 유저 이탈을 만들고, 그렇게 유저가 DApp을 사용하지 않으면 Fee는 줄어든다. 그렇게 되면 Fee의 일정 부분을 받는 락업 홀더들의 수익도 낮아지게 된다. 즉, 잘못된 인센티브 구조로 인해 DEX가 가지고 있는 자본이 효율적으로 운영되지 않는 것이다.

Solidly는 이에 대한 해결책으로 락업 홀더의 이해관계와, Gauge 인센티브의 방향을 일치하는 방법을 고안해 냈다. 바로 락업 홀더가 본인이 투표한 풀에 대해서만 Fee를 받아갈 수 있도록 하는 것이다. Solidly에선 Curve와 마찬가지로 SOLID를 락업해 veSOLID를 받을 수 있다. 그런데 Curve와는 달리 Solidly에선 전체 Fee의 50%가 아니라, 본인이 Lock Voting을 한 풀의 Fee를 100% 받아갈 수 있다.

이렇게 되면 구조적으로 다음과 같은 형태로 동작하게 된다.

  • 특정 풀이 높은 Volume과 많은 Fee를 발생 → 락업 홀더들이 높은 Fee를 얻기 위해 해당 풀에 Gauge 투표 → 해당 풀의 Gauge 상승 → 유동성 공급자들의 유인 동기 상승 → TVL 상승

이는 Uniswap과 달리 토큰의 곡괭이화도 방지하고 인센티브 구조도 왜곡하지 않는 시스템으로, ‘높은 Volume → 높은 Fee → 높은 TVL’의 구조가 완성되는 형태다.

그러나 이렇게 좋은 구조를 짜놨어도, Gauge에서 제공되는 토큰의 가치 희석엔 대응하기가 어렵다. 특히 유통 물량을 줄어주는 락업 홀더들의 경우, 지속적인 가격 하락으로 인한 피해를 받게 된다. 락업으로 벌어들이는 Fee보다 토큰 인플레이션으로 겪는 손해가 더 큰 것이다. 이런 구조에선 락업을 하려는 사람들이 적어지게 된다. 이는 곧 유통 물량을 줄일 수 없다는 의미로, 더 많은 토큰 가치 하락이 발생할 수 있다.

Solidly에선 락업을 독려하기 위한 지분희석 방지 장치인 ‘Dilution Protection’을 만들었다. Dilution Protection은 Olympus DAO의 (3, 3) 구조를 차용한다. Olympus는 OHM을 하나의 기축 통화로 만들고자 하는 프로젝트로, OHM의 공급량 증가와 가치 하락 방지를 위해 게임 이론을 도입했다. Olympus 유저들은 보유한 OHM을 통해 Staking, Bonding, Selling의 3가지 행동을 취할 수 있는데, Staking을 할 경우 Rebase를 통해 내가 가진 자산의 가치를 유지할 수 있게 된다. Rebase란 목표 가격에 따라 토큰의 개수가 자동으로 조절되는 것으로, 쉽게 생각하면 액면분할과 유사하다.

예를 들어 10개의 OHM을 Staking했을 때, 시간의 경과에 따라 전체 OHM 물량이 2배로 늘어난다면, 스테이킹 보상 역시 10개의 OHM을 추가로 받아 총 20개의 OHM을 보유할 수 있다. OHM의 활용처가 늘어나면 공급량도 늘어나고, 공급량이 늘어나면 가격이 떨어지기 마련이다. 그런데 OHM을 Staking할 경우, 늘어난 공급량에 비례하여 OHM을 보상으로 받기 때문에, 가격 하락에도 가치를 유지할 수 있게 된다. 핵심은 이러한 Rebase 보상은 락업 홀더들에게만 제공된다는 것이다.

만약 모두가 Staking을 선택하게 된다면 OHM 공급량이 늘어나도 가격은 떨어지지 않을 것이고, 여기에 락업 홀더들은 Rebase 보상까지 받게 되니 보상은 더욱 커지게 된다. 이처럼 토큰 홀더들이 Staking이라는 액션을 취해 함께 승리하는 구조를 (3, 3)이라고 칭한다. 이러한 (3, 3)은 일종의 상징으로 사용되고 있는데, (숫자, 숫자), (기호, 기호) 형태가 보인다면, ‘Staker한테 Rebase 등의 인센티브를 주는 구조’라고 받아들여도 무방하다.

Olympus DAO의 (3, 3), Olympus DAO

Solidly 역시 (3, 3)을 활용하여 토큰 가치의 희석을 방지한다. 유동성 공급자에게 제공되는 보상 토큰, SOLID의 매주 발행량(Emission)은 고정되어 있다. 예를 들어 100개의 Emission을 갖고 있을 때, 이는 매주 감소하는 구조를 갖는다. 이를테면 첫 주엔 100개, 둘째 주엔 80개, 셋째 주엔 60개가 될 수 있다. Solidly에선 이 Emission이 락업 비중에 의해 변화한다. 다시 말해 유동화되어 있는 SOLID의 총량, 유통 공급량(Circulating Supply)에 의해 결정된다. 비유동화된 SOLID인 veSOLID의 총량과 반비례하는 것이다.

Solidly의 Emission, Rebase Flow

이렇게 결정된 Emission은 유동성 공급자에게 공급(Gauge) 후, Circulating Supply에 산입 되어 토큰 인플레이션을 일으키고, 락업 홀더들은 이 인플레이션만큼 Rebase 보상을 받는다. 예를 들어 Circulating Supply가 1,000이고 이번 주에 100개의 Emission이 발생하는 상황에서, 전체 SOLID의 50%가 락업된 상태로 존재(=veSOLID)한다고 가정하면, Emission은 100(Emission) * 50%(유통 물량)=50 SOLID가 된다. 그렇다면 Circulating Supply는 1,050개가 될 것이고 인플레이션은 5%이므로, 락업 홀더들의 Rebase 보상은 5%가 된다. 100 veSOLID를 들고 있는 경우, 보상을 받아 105 veSOLID가 되는 것이다.

이처럼 락업 홀더는 유통 물량의 증가분에 비례하여 Rebase로 보상을 받으므로, 본인들이 락업한 SOLID에 대한 가치 보존을 할 수 있게 된다. 쉽게 말하면 초기에 전체 유통량의 3%를 갖고 있었고 여기에 락을 걸어뒀다면, 인플레이션과 상관없이 계속해서 3% 비중의 토큰을 소유할 수 있게 되는 것이다.

위와 같은 특성, 락업 시에 똑같은 비중을 유지할 수 있다는 Solidly의 Rebase 기능 때문에 Solidly 형식의 거버넌스 토큰에는 강력한 초기 수요가 생긴다. Solidly 출시 초기, 0xDAO나 Solidex에 큰 수요가 생긴 것도 이러한 이유 때문이다. 이처럼 인플레이션에 대한 방지책을 제공하여 락업을 독려하고, 이를 통해 가치 희석을 방지한다는 것이 Solidly의 Dilution Protection의 목표다.

여기서 주목할만한 부분은, 락업 홀더가 많을수록 인플레이션이 작아지는 구조라는 것이다. 락업 물량이 많아질수록 락업한 홀더들은 가격 상승과 Rebase 보상 두 가지 혜택을 모두 누릴 수 있다. 다만 대신 Gauge가 작아지므로(Emission 하락) 유동성에 대한 토큰 보상 수량은 낮아진다. 물론 토큰의 가격이 방어되기 때문에 이자율은 낮아지지 않게 된다. $1 토큰을 100개 보상을 받는 것보다, $2 토큰 51개 보상을 받는 것이 더욱 이득이기 때문이다.

락업 홀더들의 물량은 연 단위의 긴 기간 동안 묶이기 때문에, 락업 물량이 늘어나도 단기간에 Circulating Supply에 들어가기 어렵다. 다시 처음으로 돌아가면, Uniswap은 토큰의 곡괭이화를 방지하지 못했고, Curve는 Vote Escrow(VE) 락업 메커니즘을 통해 이를 해결하고자 했다. Curve는 토큰의 곡괭이화 현상은 막았지만, 토큰 인플레로 인한 거버넌스 토큰의 가치 하락은 막지 못했다. 이에 Solidly는 토큰의 가치 하락을 막기 위해 Olympus DAO의 (3, 3) 메커니즘을 도입, 락업 홀더들에게 Rebase 보상을 제공하여 토큰의 락업을 유도했다.

Solidly의 평균 락업 기간

6. 결론

Solidly를 한 단어로 요약하면 ‘ve(3, 3)’이다. 심플한 단어 속에 많은 히스토리와 고민, 해결책이 담겨있는 것이다. 비록 혜성처럼 등장했다 사라진 Solidly이지만, 그 정신은 아직도 웹3 세계에 흐르고 있다. Solidly 이후 생겨난 대부분의 DEX는 Solidly의 Fork이거나, 직접적인 Fork가 아니더라도 그 구조를 차용하고 있기 때문이다.

Solidly는 탈중앙화를 이루고자 하는 웹3의 정신, 금융을 바꾸려는 DeFi, 소리 없는 금융 전쟁의 최전선에서 탄생했다. 이 글을 읽은 후 DeFi를 접하게 될 독자들은, 높은 이자율에만 집중하는 것이 아니라 Solidly가 미처 해결하지 못한 숙제를 어떻게 다뤄야 할지 고민해 봤으면 한다. 만약 이러한 난제를 해결한 DApp이 있다면, 분명 DeFi의 다음 페이지를 펴는 주인공이 될 것이기 때문이다.


CaptainK 강선장 트위터, 고로치 삿갓단, Treasure Hunt 텔레그램 운영

돌비콩고팍스 리서치 파트너. ‘돌비콩의 코인정복’ 텔레그램블로그 운영.

면책 조항: 해당 게시글은 단순한 정보 제공을 위해 작성되었으며, 특정 가상자산에 대한 추천을 하는 것이 아니고 내용상의 정합성과 정확성, 완전성을 보장하지 않습니다. 따라서 해당 내용을 바탕으로 투자 결정을 하지 마십시오. 작성된 내용은 작성자 본인의 견해이며, 고팍스의 공식 의견이 아닙니다. 본지는 어떠한 투자적, 법률적 책임 등을 지지 않습니다.