#스테이킹 #디파이 #비영구적손실
# LP Pool #유동성공급자 #LP토큰
스테이킹이나 디파이를 통한 이자
수익을 얻기 위해 LP 풀에(유동성
공급) 자산을(코인) 예치했을 때
예치한 시점과 다시 회수한 시점의
LP풀에 있는 코인들의 수량과 시세에
변동이 있을 떄 [LP pool에 참여하지
않는 경우] 보다 [LP pool에 참여할 경우]
의 자산 가치가 하락한 경우 발생한
손실.(전자의 자산 가치와 비교해)
(비영구적이라는 것은 주식처럼 매도
해야만, 회수해야만 그 손실이 확정되는
것이기 때문)
LP = Liquitity Provider
(유동성 채굴 혹은 시장조성의 댓가로
거래 수수료를 받기 위해 탈중앙화된
거래소에 암호화폐를 예치하는 투자자)
LP Pool = 스마트 컨트랙트에 잠긴 자금
(LP들이 코인을 넣는 곳)
비영구적 손실을 이해하기 위해서는
'AMM'이란 개념을 알아야 한다.
[ Automated Market Maker ]
= 자동화된 시장 조성자
LP Pool에서 환전이 가능한 2개 코인의
교환비율을(환율) 수학공식인 AMM을
통해서 결정한다. 보통 유니스왑을 비롯한
DEX에서는 AMM은 'X x Y = K' 모델을
사용한다.
* X는 LP Pool에서 A코인의 총량,
Y는 LP Pool에서 B코인의 총량이다.
==========================
[ 예시 ]
* 예시에서는 이해를 돕기 위해 X와Y를
예치시점과 회수시점으로 구분해 (X1,X2)
과 (Y1,Y2)로 표현한다.
# X x Y = K
# X와 Y는 LP Pool에서 각 코인의 총량.
# K = 고정상수
=> X와 Y값(각 코인의 총량)이 변하더라도
K는 이전과 동일한 값을 유지해야 하며
이를 AMM을 통해 유지한다.
(컴퓨터로 따지면 X와 Y라는 변수이름은
고정되고 여기에 넣는 데이터값만 변한
다고 보면 된다)
유동성 공급시 항상 우리는 해당 지갑에
보유한 자산을 1:1 비율(각 절반)로 나눠
2개 코인으로 예치를 하기 때문에 B코인에
대한 A코인의 교환비는 Y(B코인 총량) /
X(A코인 총량)가 된다.
위의 2개의 공식을 활용해 X와 Y의 값을
구할 수 있다 ->
# X x Y = K(고정상수)
# Y / X = A코인 가격)
* A코인 가격 = A코인 1개에 해당하는 B코인 갯수
* X와 Y는 각 풀의 총량이다.
* ' x ' 는 곱하기, ' / '는 나누기
=> X = 루트( K / A코인 가격)
Y = 루트( K x A코인 가격)
* 루트는 제곱근
* 계산시 A코인 가격은 위 설명대로 A코인
1개에 해당하는 B코인 갯수로 넣는다.
============================
[ 구체적 예시 1단계 : 예치 ]
# X1 = 예치시 LP Pool에 있는 A코인의 총량
X2 = 회수시 Lp Pool에 있는 A코인의 총량
# Y1 = 예치시 Lp Pool에 있는 B코인의 총량
Y2 = 회수시 Lp Pool에 있는 B코인의 총량
(가격 = 교환가능한 A or B코인의 갯수)
A코인 10개/ B코인 100개로 채워진
LP Pool에 본인이 A코인 1개와 B코인
10개를 넣었다. (이것도 마찬가지로
넣은 자산을 1:1비율로 각 코인에 절반을)
=> (A코인 1개가 B코인 10개 가치이므로
B코인으로 환산시 본인이 넣은 자산은
B코인 20개라고도 할 수 있다)
즉, 본인은 LP pool에 기존 총량의 10%
만큼의 (LP Pool의 A코인 총량 10개에 1개,
B코인 총량 100개에 10개를 넣었으므로)
유동성을 제공한 것이다.
여기서 X1 x Y1 = 10 x 100 = 1,000
=> K = 1,000(고정)
X1 = 10
Y1 = 100
-------------------------------------------
[ 구체적 예시 2단계 : 회수 ]
몇 주 뒤 본인은 다시 예치했던 자산을
빼려고 한다. 그런데 A코인의 시세가
(LP Pool에서는 교환비)가 기존에 B코인
10개의 교환비였는데 20개의 교환비로
변했다.(시세변동)
따라서 이제 LP Pool의 각 코인 총량은
10 : 100에서 10 : 200(= '1 : 20')으로
달라졌다. 여기서 처음에 본인이 예치한
LP Pool의 10%만큼 다시 회수할 수 있다.
회수할 A코인과 B코인을 계산해보면
=> X1 = 10
Y2 = 200
X2 x Y2 = K(1,000(고정상수))
X2 = 루트(K / A코인 가격)
Y2 = 루트(K x A코인 가격)
* A코인 가격 = A코인 1개 가치에
해당하는 B코인 갯수
=> X2 = 루트(1000 / 200) = 루트(5)
= 2.2360679775
Y2 = 루트(1000 x 200) = 루트(20만)
= 447.2135955
X2 x Y2 = K
=> 2.2360679775 x 447.2135955 = 1000
=============================
[ 정리 ]
처음 예치시에 A코인 총량 10개, B코인 총량
100개인 LP Pool에 A코인 1개와 B코인 10개를
넣었을 때(총량의 10%만큼) 시세는 A코인 1개
= B코인 100개의 교환비였으나
회수시에 LP Pool의 각 코인 총량은(사람들이
유동성을 공급하고 환전을 한 후) X1(A코인 갯수)
과 Y2(B코인 갯수)가 됐고 A코인의 시세가 기존
B코인 100개에서 200개로 상승한 상태의 LP
Pool에서 예치시 공급한 LP Pool의 10%만큼을
회수한다. 이때 사용하는 공식은 다음과 같다.
# X1 = 예치 시점의 A코인 총량
X2 = 회수 시점의 A코인 총량
Y1 = 예치 시점의 B코인 총량
Y2 = 회수 시점의 B코인 총량
# X1 x Y1 = K(고정상수) = X2 x Y2
# X2 = 루트(K / A)
Y2 = 루트(K x A)
*이때 A코인은 가치가 상승한 코인이다.
가치가 상승한 코인으로 K를 나누고
하락한 코인으로 K를 곱하는 것.
=> 최종적으로 X1과 Y1값이 회수 시점에
가져갈 수 있는 각 코인별 수량이다.
=> 위에서 산출한 자산(LP Pool에 넣은)
과 그대로 갖고만 있었을 경우의 자산을
비교해 후자가 더 높으면 손실 발생.
==========================
* 중요한 것은 비영구적 손실이 항상
위의 공식과 이론대로 발생하지 않는다는
것이다. 또한, 예치시 코인 시세와 회수시
코인 시세가(교환비가) 같다 해도 LP Pool
의 각 코인 총량이 변화하면 손실이 발생
할 수 있다.
---------------------------------------------
이 블로그는 네이버 카페 N타버스
코리아와 함께합니다.
* IL 계산 사이트 : https://baller.netlify.app/
'상식 창고' 카테고리의 다른 글
유동성 스왑(Liquid Swap)과 DAO 설명 (0) | 2022.01.06 |
---|---|
# ICO/ IEO/ IDO/ IUO 설명 (0) | 2022.01.01 |
# 디파이(Defi) 디파이코인 (0) | 2021.12.28 |
# 코인 스테이킹(Coin Staking) (0) | 2021.12.28 |
NFT마켓/ NFT거래소(코인별) (0) | 2021.12.17 |