TIL 45 - DeFi - AMM, CSMM, CPMM

프동프동·2023년 1월 18일
1

TIL

목록 보기
45/46
post-thumbnail

DeFi

탈중앙화 금융(DeFi) | ethereum.org

구성 요소

유동성 공급자(Liquidity Provider)

  • 매수자가 토큰을 구매할 수 있도록 물량을 제공하는 사람

AMM(Autonomous Market Maker)

  • 호가창 없이 거래 토큰의 가격을 결정하는 방식
  • AMM은 디지털 자산의 가격을 수학적 공식을 이용해 산출한다.
    • CPMM, CMMM 등
  • LP Token, Slippage, Impermanent Lose

보상

유동성 공급자에게는 유동성을 공급 하였기에 보상을 주어야한다.

  • 자신의 돈이 거래소에 묶이기 때문이다.
    • 스테이킹과 같은 개념
  • 보상이 없다면 유동성을 공급할 이유가 없다.
  • 일반적으로 상응하는 토큰을 발급해준다.
    • 토큰을 받아 팔거나
    • 디파이 풀에 유동성을 공급하여 추가로 이자를 얻는다.

CSMM(Constant Sum Market Maker)

유동성 풀의 합이 일정한 알고리즘

  • 특징
    • 슬리피지가 없다
      • 항상 토큰을 1:1 비율로 교환
    • 풀의 유동성이 0이 될 수 있다.
      • ex.
        • 1000개의 이더리움, 100개의 x토큰을 가진 풀
        • 사용자가 100개를 넣고 x토큰을 다 가져가 해당 풀에서의 x토큰 유동성을 0으로 만들수 있다.
  • 공식
    • x + y = k (x, y: 유동성 풀에 있는 토큰의 개수)
    • 스왑 후에도 k는 변하지 않는다.
  • CSMM은 슬리피지가 없다는 장점이 있기에 단독적으로 쓰일 수는 없지만 다양한 수식을 통해 어느정도

CPMM(Constant Product Market Maker)

🦄 Uniswap Whitepaper - HackMD

DEX 중 하나인 Uniswap은 x * y = k이라는 공식을 사용해 디지털 자산의 가치를 산출한다.

Uniswap

  • 특징
    • 풀 내의 두 토큰 유동성의 곱이 일정
  • 공식
    • x, y는 각각 풀에 존재하는 토큰의 개수.(유동성 총량)
    • k는 상수
      • xy = k
      • 스왑 후
      • xy = (x + Δx)(y - Δy)
        • (x + Δx)(y - Δy) = xy
        • xy - xΔy + Δxy - ΔxΔy = xy
        • xy = xy
        • Δxy = xΔy + ΔxΔy
        • yΔx = Δy(x+Δx)
        • Δy = yΔx / x + Δx
      • Δx는 input 토큰의 개수
      • Δy는 ouput 토큰의 개수
      • input 값인 Δx는 사용자가 입력한 값으로 정해져있다.
      • output 값인 Δy를 구하는 것이 핵심이다.
      • Δy는 결국 사용자가 받아야할 토큰의 수
  • 시나리오(프로젝트에서 사용하는 ERC20 토큰인 WEMEXToken(MEX)으로 가정합니다.)
    • DeFi거래소

      • x: MEX토큰과 y: USDT를 스왑할 수 있는 MEX/USDT 풀을 만든다.
    • 유동성 공급자

      • x1,000개의 MEX토큰 공급
      • y10,000 USDT 공급
      • MEX 토큰 가격은 공급량 비례하여 10분의 1가격이 된다.
        • 1 MEX토큰 = 10 USDT
      • 이때
        • x = 1,000
        • y = 10,000
        • x * y = k 식에 의하여
          • k= 10,000,000
    • 사용자
      - 100 USDT로 MEX 토큰을 사고 싶다.
      - y(USDT)에 100USDT가 더해져 10000 + 100 = 10100개
      - k는 상수이므로
      - 10000000개 / 10100개
      - (k / y) = x
      - x는 990.1개
      - x는 스왑 후 풀에 남은 x토큰의 개수로 990.1개
      - 사용자는 100USDT로 결국 9.9(1000개 - 990.1)개만 가져간다.

      ⇒ 사용자는 100 USDT를 예치하면 10개의 MEX 토큰을 받을 줄 알았지만 예상한만큼 받지 못했다. 이를 슬리피지(Slippage)라고 한다.


Slippage

거래를 요청했을 때의 가격과 실제 처리된 가격의 차이를 의미한다.

거래를 요청하고자 하는 풀에 충분한 유동성이 있다면 슬리피지는 적어질 것이다.

단순히 유동성이 많을 수록 받지 못하는 양은 적어진다.

⇒ 슬리피지가 적은 거래소가 유동성이 풍부한 거래소이다.

profile
좋은 개발자가 되고싶은

0개의 댓글