본문 바로가기
DeFi 뿌수기

DeFi - UniSwap 리서치

by gun_poo 2022. 4. 11.

유니스왑이란

  • 유니스왑 프로토콜은 이더리움 블록체인 기반위의 (ERC-20 토큰) 크립토쿼런시의 교환을 위하여 p2p 시스템으로 설계되었다. 프로토콜은 지속적이고 업그레이드 할 수 없는 스마트 계약으로 구현되었다.
  • v1, v2는 오픈 소스이다

Introduction of AMM

  • 오더북 거래 : 거래자의 모든 매도 및 매수 주문을 기록한 목록을 의미한다. 오더북 기반 거래소는 구매자와 판매자의 주문을 연결하여 입찰 가격이 주문의 최저가격 보다 같거나 높으면 거래를 체결하게 된다
    • 오더북 기반 DEX 에 치명적인 단점 존재
      • 거래를 체결하기 위해 너무 많은 가스를 필요로 한다. 특히 오더북은 거래를 미리 등록하는 방식이기 때문에 거래를 만들거나 취소하는데 모두 많은 가스가 소모되었다
      • 낮은 확장성으로 인해 사용자 경험이 현저하게 낮았다. 오더북 기반 거래소는 주문을 생성하는 메이커의 역할이 무엇보다 중요한데 낮은 확장성은 이를 생성하고 관리하는 것을 매우 어렵게 만들었다
      • 유동성 부족. 1, 2 번과 같은 이유로 유저가 많지 않았고 이는 유동성 부족으로 이어졌다. 유동성 부족은 다시 유저의 수를 저하시키는 악순환의 고리로 이어졌다
    • AMM
      • AMM을 도입함으로써 유니스왑에서는 누구나 자유롭게 유동성을 공급 할 수 있었고 알고리즘으로 결정된 가격으로 언제든지 사용자들이 거래 할 수 있게 되었다. 
      • AMM이란
        • 자동화된 마켓 메이커로 말 그대로 마켓 메이킹, 즉 쉽게 말해 매수자와 매도자간의 거래를 이어주는 것을 탈중앙화된 방식으로 자동화 한것을 의미한다. 
        • 주요 요소 : 가격 결정 알고리즘, 유동성 공급자, 토큰 페어, 트레이더
          • 가격 결정 알고리즘 : CPMM 모델 사용, CPMM은 어떠한 곱이 항상 동일하게 유지되는 모델
            • X*Y = K
            • X, Y는 토큰 페어의 각 토큰의 리저브 수량을 의미한다. K는 X,Y를 곱한 값을 의미한다.
            • ex) 풀에 공급된 x,y의 수량이 각 10, 500 이라면 k는 5000이 된다
            • CPMM에서 모든 거래는 거래 후 변경된 X, Y의 곱이 항상 일정하게 K로 유지되어야 한다.
            • 그리고 이 곱의 값이 일정하게 유지되도록 X,Y의 변화량이 이에 맞게 결정된다.
              • ex) X를 지불하여(풀에 넣고) Y를 구매하고자(풀에서 빼고) 할 때 풀의 X의 양은 줄어들고 Y의 양은 늘어난다 이 행동을 반복하면 X*Y=K에 의해 점점 동일한 X로 구매할 수 있는 Y의 양이 줄어들 것이다. 이로 인해 y토큰의 가격은 상승하고 x 토큰은 가격이 하락한다.
              • 아래 그림에서 예시를 들어보겠다.
          • 토큰 페어: 거래되는 토큰 쌍. ex) 유저가 KRW로 ETH를 구매하거나 ETH를 KRW로 판매하는 것은 모두 ETH/KRW 페어에서 거래 하는 것. 이 토큰 페어로 구성된 유동성을 '풀'이라고 한다.
          • 유동성 공급자: 토큰 페어를 이루는 두가지 토큰에 대한 유동성을 풀에 공급하는 주체를 의미한다. 이렇게 공급된 유동성은 AMM의 가격 결정 알고리즘에 따른 가격으로 거래된다.
          • 트레이더 : 토큰 페어를 이루는 두가지 토큰을 거래하는 주체, 트레이더는 유동성 공급자가 조성한 유동성을 바탕으로 거래 할 수 있다.
           
    •  현재 트레이더는 ETH를 지불하고 OMG를 구매하고자 한다. 유니스왑의 ETH/OMG 풀에는 10ETH와 500OMG의 유동성이 공급되어 있는 상황이다. 알고리즘에 의하여 k값은 5000이다. 오직 유동성이 추가로 공급되거나 제거 될 때만 변경 될 뿐 아무리 많은 거래를 하더라도 변경되지 않는다. 트레이더는 1 ETH를 지불하고 OMG를 구매하려고 한다. 트레이더는 1ETH로 구매 할 수 있는 OMG의 양은 45.5(500-5000/11) 
      • 여기서 주목할 점은 거래 이전의 1ETH의 가격은 50 OMG 였지만 막상 거래를 하면 45.5OMG의 가격으로 거래되었다는 점이다. 이처럼 처음에 의도했던 가격과 실거래 가격 사이의 유의미한 차이가 발생 하는 것을 슬리피지라고 하는데 유니스왑의 CPMM은 특성상 슬리피지가 발생할 수 밖에 없게 되어있다. 하지만 풀에 공급된 유동성의 양이 클 수록 동일한 규모의 거래를 수행할 때의 상대적인 슬리피지 규모는 점점 줄어들게 되는데 이는 곧 각 풀에 공급된 유동성의 규모라는 것을 의미한다.
        • 왜 유동성의 규모가 클수록 슬리피지가 줄어드는 것일까?
        •  
      •  
    •  
    • 이처럼 유동성의 규모가 커질수록 동일한 규모의 거래에 대해 슬리피지가 줄어든다는 것을 직접 확인하였다.
    • 동일한 규모의 거래가 체결될 때 유동성 규모에 따라 곡선 상의 점의 변화가 달라지는 것을 확인 할 수 있을 것이다.
    • 이러한 점 때문에 모든 DEX거래소는 TVL로 표현되는 많은 유동성을 확보하기 위해 혈안이다
    • 슬리피지를 해결 할 방법이 유동성 뿐일까? 유니스왑은 v3에 집중화된 유동성을 이용하여 해결하였다 
    • Liquidity Provider
      • 유니스왑에서는 유동성 공급자의 역할이 매우 중요하다. 때문에 통상적으로 주문을 등록하는 주체에게 수수료 할인등의 혜택을 제공한다.
      • 유니스왑은 유동성 공급자들이 거래 수수료에 대부분을 가져갈 수 있도록 설계하였다. 각 유동성 공급자가 공급한 유동성의 양에 비례하여 LP 토큰을 지급받게 되고 이 LP 토큰은 곧 해당 풀의 거래 수수료에 대한 일종의 지분이 되는 구조, 쉽게 말해 누구나 유동성을 공급하여 유니스왑의 주인이 될 수 있다는 의미. 이로 인해 상당한 규모의 유동성을 확보 할 수 있었다.
    • V2 사용성 개선
      • V1에서는 ERC20 토큰 페어를 지원하지 않았다. DAU/USDC의 거래를 위해서는 반드시 ETH로 환전하는 과정을 거쳐야한다는 것을 의미한다. 때문에 V2에서는 이를 개선해 ERC20 토큰 페어를 지원 할 뿐 아니라 거래 페어들의 루트를 사용자가 집적 정의하여 사용할 수 있도록 업데이트 되었다
    • v2 에서는 위 그림과 같이 DAI/USDC를 그대로 스왑 가능하게 함과 동시에 ETH를 통해 스왑하는 것 또한 가능하도록 기능을 개선했다. 커스텀패스를 설정하여 여러페어를 거쳐 스왑하는 기능도 도입하였다. V2에서는 V1과 달리 Native ETH를 사용하지 않고 Wrapped ETH를 사용하게 했다.

플래시 스왑

V2에서는 풀에서 원하는 만큼의 토큰을 빌린 뒤 이를 이용해 원하는 곳에 사용한 뒤 해당 금액과 이자를 한 트랜잭션 내에서 상환한다. 구체적으로 하나의 플래쉬 스왑 트랜잭션 내에서 사용자는 빌려간 토큰에 대한 모든 값을 지불하거나 일부만 지불하고 일부는 그대로 상환하거나, 빌려간 토큰 모두를 상환해야한다. 그렇지 않을 경우 플래시 스왑 트랜잭션은 취소 된다.

디파이 해킹 사례의 주요 수단으로 많이 언급이 되지만 유니스왑 팀은 기능 자체에는 문제가 없다고 판단을 하고 현재 까지 계속 유지중이다.

 

V3 집중화된 유동성 도입

유니스왑의 AMM 을 근본적으로 변경하는 대대적인 업데이트가 이뤄졌다.

주요 특징

  • 집중화된 유동성
  • 높은 자본 효율성
  • 유효한 유동성
  • 고유한 유동성
  • 유연한 수수료 체계
  • 라이센스 도입

기존에는 곡선상 모든점에서 유동성을 공급했다면 V3에서는 표시된 폭 만큼의 가격대에 유동성을 공급한다

이를 통해 스테이블 코인간의 스왑을 매우 효율적으로 할 수 있게 되었다

V2의 경우 유동성이 모든 가격대에 걸쳐 공급되는 CPMM의 특성상 항상 1달러의 가격에 페깅되는 스테이블 코인 간의 거래에서 많은 슬리피지가 발생 할 수 밖에 없었다. 이러한 단점은 커브 파이낸스가 시장에서 성공을 거둘수 있었던 주요 요인이긴하다

하지만 안정적인 가격을 제공하는 V3의 스테이블간 거래량이 커브파이낸스를 능가했다. 

 

Capital Efficiency

 

유동성을 특정 가격 구간에 집중해서 공급함으로써 자본 효율성 또한 크게 개선되었다. 

기존 곡선상 모든점에서 유동성을 공급했을 경우와 표시된 폭 가격대 만큼 유동성을 공급 할 시 유저가 가지고 갈 수 있는 양에 대한 효율의 차이가 엄청나다. 

 

Active Liquidity

 만약 실제 토큰 가격이 지정 가격 범위 내에서 변동하지 않고 범위를 벗어나게 된다면 Active Liquidity의 개념이 적용된다

예로들어 내가 DAI와 USDC의 유동성을 공급했다고 가정하고, 현재 1 DAI의 가격은 1USDC 이다. 유동성을 공급할 가격대를 0.984USDC~ 1.016USDC로 설정했다. 실제 DAI의 가격이 1.02 USDC로 올라가면 내가 공급한 유동성은 더 이상 유요하지 않게된다. 내가 공급한 유동성은 모두 USDC로 변환되고 DAI는 하나도 남아있지 않게된다. 따라 거래 수수료도 얻지 못하게 된다. DAI의 가격이 다시 정상으로 돌아온다면 나의 유동성은 유효하게 변하게 되고 거래 수수료 또한 얻을 수 있다. 

  • V3에서는 각 가격대별로 공급된 유동성이 현재 시장가격에 따라 유효성을 결정한다.

Non-Fungible Liquidity

 V3에서는 유동성을 공급 할 때 가격대를 지정한다고 했다. 이는 달리 말하면 각 유동성이 모두 제각기 다른 가격대에 공급 될 수 있다는 것을 의미한다. 하여 V3에서의 유동성 포지션은 V2와 달리 Non-Fungible한 특성을 갖는다

 실제로 V2까지 유동성을 공급 할 경우 이에 대한 지분으로 LP 토큰을 ERC-20 형태로 지급 받았으나 V3에서는 각 LP토큰이 고유한 ERC-721 형태로 발급 받게 된다.

실제로 오픈씨에서 거래되고 있는 유니스왑 V3 유동성 포지션 토큰이고 NFT 형태로 발급 되기 때문에 개별 포지션을 이와 같이 개별적 판매가 가능하다.

 

Flexible Fees

유니스왑 V3는 거래 수수료 또한 업데이트 하였다. 기존 수수료는 어떤 페어든 일괄적으로 0.3%가 거래 마다 부과되었지만 V3에서는 유동성을 공급할 시 3가지 수수료중 하나를 지정 할 수 있게 되었다

일반적 경우 0.3%를 지정하지만 스테이블 코인 페어의 경우 0.05%, 유동성이 부족한 토큰의 경우 1%의 수수료율을 지정 할 수 있게 되었다.

 

License

V2까지의 유니스왑은 오픈소스 정신을 이어 받아 개방하고 있었으나 스시 스왑등과 같은 프로젝트들이 유니스왑의 코드를 그대로 사용하였고 여러 이슈들이 있었기 때문에 V3 부터 Business Source Licence 1.1을 도입했고 이는 약 2년간 유지 될 예정이다.

블록체인 커뮤의 많은 반발을 샀지만 유니스왑 커뮤 UNI 홀더들의 라이센스 도입 찬성에 따라 결과적으로 정당성을 얻게되었다.

이러한 행보는 다른 프로젝트들에게 어떠한 영향을 끼칠지 지켜볼 필요가 있어 보인다.

'DeFi 뿌수기' 카테고리의 다른 글

유니스왑 v2 백서 분석  (0) 2023.02.28
유니스왑 V2 해체하기 Factory Contract  (0) 2022.04.14
유니스왑 V2 해체하기 ERC-20 Contract  (0) 2022.04.11

댓글