본문 바로가기
- 디파이/- 디파이 기초

LP 풀 (liquidity pool) 을 이해하자

by C0FFEE_ 2022. 7. 25.

안녕하세요 C0FFEE 입니다.

바로 LP 풀 원리를 보고싶으신 분은 여기를 눌러주세요.

 


모든 거래는 수요와 공급에 의해 거래가 발생합니다.

그리고 수요량과 공급량에 따라 가격이 형성되며 우리는 이를 호가창이라고 하죠.

주식 거래소의 경우 매수금액과 매도금액의 밸런스를 통해 우리는 원하는 거래에 주문을 넣을 수 있습니다.

비트코인 매수매도 거래 호가창의 모습

블록체인 생태계에서 비트코인이 탄생하고 그 가치가 인정되었을 때 중앙 거래소 (centralized exchange, cex)에서 위와 같은 형태로 비트코인의 거래가 이루어졌습니다. 이때까지만 해도 중앙 거래소는 암호화폐를 거래할 수 있는 유일한 수단이었습니다.

 

그런데 이더리움의 탄생과 함께 '스마트 컨트렉트'가 생기면서 더 이상 중앙 거래소를 통해서 거래를 할 필요가 없어졌습니다.

 

스마트 컨트랙트란?


스마트 컨트랙트란 블록체인 상에서 실행되는 프로그램입니다. 이는 코드로 쓰여 있으며 특정 계약조건을 만족하면 계약 조건이 실행되며 중개자가 필요하지 않습니다.

 

먼... 소리고!???

 

네.. 기술 설명은 가장 명확하게 표현해주고 있지만 해당 분야가 아닌 사람들은 무슨 말인지 이해하기 어렵습니다.

쉽게 풀어서 얘기하면

  • 정해진 규칙을 (또는 규칙을 달성하면)
  • 해당 계약을 '강제'로 실행합니다.

실물 경제로 예시를 들어볼까요?

  • 전세금을 임대인에게 지불하면 (계약 내용) 향후 2년간 집의 거주 권리를 임차인에게 양도한다.(계약 실행)
  • 500만 원을 지불하면 (계약내용) 그 가치에 맞는 비트코인을 양도받는다. (계약 실행)

이러한 예시로 인해 많은 실물 경제가 '스마트 컨트랙트'로 계약이 될 수 있고 때문에 블록체인의 가치를 높게 보는 견해가 많습니다.

 

무엇보다 제가 보여드린 예시에서 가장 중요한 것은 '중개자'가 필요하지 않습니다.

우리는 많은 실물 경제에서 중개수수료라는 명목으로 많은 비용을 지불하게 됩니다. 첫 번째 예시에서는 부동산 중개 수수료가 있겠고 두 번째 예시에서는 중앙 거래소의 거래 수수료가 되겠지요.

 

하지만 스마트 컨트랙트는 계약조건을 만족하면 (규칙을 달성하면) 해당 계약을 강제로 실행하기 때문에 중개자가 필요하지 않습니다.

이러한 스마트 컨트랙트의 특성 때문에 탈중앙 거래소(decentralized exchange, dex)가 생기게 됩니다.

 

DEX 란?


DEX는 탈중앙 거래소로 스마트 계약에 의존하여 암호화폐의 거래를 가능하게 합니다.

아래는 클레이튼 생태계에서 효율적으로 토큰 스왑을 가능하게 하는 유명한 swapscanner라고 하는 서비스입니다.

스왑스캐너에서 스왑을 하는 예시

클레이튼 100개의 가격이 25 usdt라고 하네요. 내 클레이튼..

그런데... 암호화폐의 가격은 어떻게 알 수 있을까요?

 

앞에서 소개한 예시를 다시 가져와볼까요?

  • 500만 원을 지불하면 (계약내용) 그 가치에 맞는 비트코인을 양도받는다. (계약 실행)

그렇다면 우리는 의문이 들게 됩니다. '그 가치'에 맞는 비트코인이 얼마지? 어떻게 알 수 있지? 그 가격이 정당한가?

 

여기서 LP라는 개념이 들어갑니다.

 

 

 

LP 란?


LP는 liquidity pool의 약자로 유동성 풀이라고 합니다. 

우리가 경제에 대해 이야기하면 많이 나오는 이야기가 '유동성이 충분하다. 유동성이 부족하다'입니다.

 

아래의 글은 유동성의 의미를 간단하게 설명하는 글입니다.
이미 알고 계신 분들은 여기를 누르시면 본 글로 향하게 됩니다.


유동성을 저는 정말 쉽게 '호가창의 탄탄함'이라고 생각합니다.

간단한 예를 들어볼까요?

죄송합니다.. 제가 디자이너는 아니라서..

저는 비트코인 10개를 팔고 싶습니다.

위의 예시에서는 99만 원에 비트코인을 구매하려는 매수 수량이 21개, 98만 원에 6개가 있군요.

 

그럼 저는 10개의 가진 입장에서 '유동성' 이 충분하여 많은 가격 하락 없이 개당 99만 원의 가격에 매도하여 990만 원의 수익을 보았습니다.

하지만 만약 제가 비트코인 40개를 팔고 싶다면 99만 원에 21개, 98만 원에 6개, 97만 원에 13개 를 팔아야 합니다.

이 때문에 평균 98.2 만원의 가격에 매도를 했습니다.

만약 유동성이 충분했다면 평균 99만 원에 매도를 할 수 있었을 텐데 유동성이 부족하여 개당 0.8만 원의 손해가 생겼습니다.

 

이는 매수자 입장에서도 마찬가지이며 유동성이 충분하다는 것의 의미는 곧 가격의 안정성을 의미합니다.

유동성이 탄탄해야 많은 물량으로 매수/매도 가 이루어져도 가격의 변동이 크지 않게 되죠. 


 

그럼 다시 dex의 입장에서 돌아가 보죠.

dex는 유동성 풀(LP)을 통해 거래를 수행합니다. LP는 스마트 컨트랙트로 되어있으며 사용자는 중개자없이 자신의 자산을 다른 자산으로 교환을 가능하게 합니다.

 

유동성 풀(LP)이란 스마트 컨트랙트 안에서 시장 참여자가 판매하거나 판매하려는 디지털 자산의 양을 의미합니다.

유동성 풀(LP)에서는 크게 두 가지로 나뉩니다.

  • 유동성 공급자
  • 유동성 풀을 이용하는 자

유동성 공급자는 유동성 풀에 동일한 가치를 가지는 2개의 토큰을 추가하고 해당 토큰에 대한 유동성을 공급함으로써 시장을 형성하며 그 보상으로 dex 코인을 받게 됩니다. 우리는 이러한 형태의 보상을 이자라고 하며 이러한 행위를 이자 농사 (yield farming)라고 말하기도 합니다.

유동성 풀을 이용하려는 자는 이렇게 공급된 유동성 풀에 하나의 토큰을 제공하고 그 가치에 맞는 다른 코인을 얻게 됩니다.

이를 통해 '가격'이 형성됩니다. 너무 어렵습니다. 예시로 이해해 봐요.

 

A 유동성 풀에 제가 다음과 같은 자산을 최초로 예치한다고 가정해봅시다.

  • 10 ETH
  • 1000 USDT

제가 예치를 했다는 증서로 pool-eth-usdt라는 토큰을 100개 받았습니다. 그리고 제가 최초로 유동성 풀에 공급했기 때문에 전체 pool-eth-usdt의 개수는 100개로 제가 100% 지분을 가지고 있습니다.

 

A 유동성 풀에는 10 ETH와 1000 USDT를 동일한 가치라고 판단합니다. 즉 1 ETH = 100 USDT 죠.

뽀글이는 이 유동성 풀을 이용해서 1 ETH를 USDT 로 바꾸고 싶습니다.(매도하고 싶습니다)

 

정말 간단하게 설명드리겠습니다. 아래의 예시는 엄밀하게 이야기하면 잘못된 예시이나 더 쉽게 설명하기 위하여 아래의 형태로 설명합니다.

  1. 유동성 풀에 1 ETH 를 예치한다.
  2. 유동성 풀에서 1 ETH는 100 USDT라고 판단하기 뽀글이에게 100 USDT를 준다
  3. 유동성 풀에는 11 ETH와 900 USDT 가 있으므로 1 ETH ~= 81 USDT라고 판단한다.

뽀글이가 1 ETH를 매도하였기 때문에 A 유동성 풀에서 ETH의 가치는 81 USDT로 내려가게 되었습니다.

유동성을 공급한 저의 입장에서는 ETH의 가격이 급격하게 내려갔기 때문에 유동성 풀에 공급한 물량을 회수하고 싶습니다. 

 

저는 A 풀에 유동성을 공급한 증거인 pool-eth-usdt 100개를 반환하고 유동성을 회수를 시도합니다.

  1. 유동성 풀에 pool-eth-usdt 100개를 반환한다.
  2. 해당 유동성 풀에 100% 지분에 해당하는 부분이므로 11 ETH와 900 USDT 를 반환합니다.

엇? 제가 유동성을 공급한 시점과 회수한 시점에서 제가 받은 가상자산의 개수가 변화하였습니다.

저는 최초에 10 ETH 와 1000 USDT 가 동일한 가치로 판단하고 유동성 공급을 하였습니다. ($2000)

하지만 유동성을 회수하고 나서는 11 ETH와 900 USDT 를 반환받았습니다. ($1800, 11 ETH 와 900 USDT는 동일 가치이므로)

 

단순히 저는 유동성을 공급했을 뿐인데 ETH의 가격 변동으로 인해(또는 유동성 풀을 이용하는 사람 때문에) 10%의 손해가 발생하였습니다.

 

이렇게 손해가 발생한 것을 통념적으로 비영구적 손실이라고 합니다. (정말 그럴까요? 이후에 설명이 있습니다.)

비영구적 손실이란 유동성 공급자가 유동성 풀에 유동성을 공급한 후 예치해 둔 자산의 가격 변화와 함께 발생하는 손실을 뜻합니다.

 

때문에 유동성 공급은 정말 위험합니다. 하지만 이럼에도 왜 우리는 유동성 공급을 할까요?

klayswap 에서 제공하는 eth-usdt 풀의 이자율

dex에서는 많은 유동성 풀 제공자를 모으기 위하여 높은 이자율을 유동성 제공자에게 보상으로 지급합니다. 또한 거래로 인해 수수료(보통 0.3%) 가 발생하는데 이 수수료를 유동성 제공자에게 보상으로 지급합니다.

연이율 19.57% 는 현 은행에서 볼 수 없는 수익이죠.

 

dex 에서는 유동성 제공자에게 높은 보상을 제공하여 유동성 풀을 이용하려는 사람들에게 효과적으로 자산 교환(유동성이 충분한 상태)을 가능하게 합니다.

 

즉 우리가 예치한 자산을 이용할 권리를 제공하게 되는 것이죠. 

 

 

그럼 유동성 공급은 무조건 위험하겠네요?


하지만 유동성 공급이 100% 위험하기만 한 것은 아닙니다.

유동성 풀이 충분하고 ETH를 매수하고 싶어 하는 자와 매도하고 싶은 자가 균형을 이룬다면 ETH의 가치는 유지가 됩니다.

그럼 저희는 비영구적 손실이 적을뿐더러 연이율 19.57%의 이자도 받을 수 있습니다.

 

자산의 시장 가격이 박스권에서 횡보한다면 저희는 유동성을 공급함으로써 최대의 이익을 취할 수 있습니다.

하지만 암호화폐의 변동성은....

 

Q: 비영구적 손실이 예치한 자산의 가치가 오를 때는 어떻게 되나요?

같은 예시를 들어보죠.

 

저는 최초로 10 ETH와 1000 USDT를 유동성 풀에 공급했습니다.

뽀글이는 100 USDT로 ETH를 바꾸고 싶습니다. (매수하고 싶습니다.)

  1. 유동성 풀에 100 USDT를 예치한다.
  2. 유동성 풀에서 1 ETH는 100 USDT라고 판단하기 뽀글이에게 1 ETH를 준다
  3. 유동성 풀에는 9 ETH와 1100 USDT 가 있으므로 1 ETH ~= 122 USDT 라고 판단한다.

가격이 변동했습니다. 과연 비영구적 손실이 발생하였을까요?

저는 9 ETH 와 1100 USDT를 회수하였습니다. 와우! $2000의 금액을 예치했는데 $2200 이 되었으니 비영구적 손실이 발생하지 않았어! dex는 신이야!

 

하지만 똑똑한 C0FFEE는 다시 계산해봤습니다.

내가 10 ETH와 1000 USDT를 들고 있었는데 이걸 유동성 풀에 공급을 안 했다면 ETH의 가치가 122 USDT로 상승했으므로 $2220 이 되었다는 사실을 깨닫게 됩니다!

 

결국 유동성 풀에 공급한 대가로 20 USDT 만큼 손해가 발생하였습니다.

 

우리는 이것을 비영구적 손실이라고 합니다. 가격이 변동함에 따라서 '자연히' 발생하는 손실을 비영구적 손실이라고 하며 가격이 변동하면 반드시 비영구적 손실이 발생합니다.

 

비영구적 손실의 정의를 살펴보면 영구적이지 않은 손실이라는 뜻입니다. 해석하자면 내가 공급한 시점의 자산가치의 비율이 같아지는 시점에서는 손실이 발생하지 않기 때문에 비영구적 손실이라고 합니다.

어떤 놈이 네이밍 했는지는 모르겠지만 그냥 유동성 제공으로 인한 손실이잖아..

 

이러한 비영구적 손실은 토큰의 가격 상승/하락분의 차이에 따라서 비영구적 손실의 변화 폭이 커집니다.

때문에 항상 유동성 공급을 할 때는 보상이 위험을 감당할 가치가 있는지 판단하고 공급하시기를 추천드립니다.

 

아래는 좀 더 LP의 원리를 기술적으로 설명합니다. 

 

약간만 자세한 설명


위의 내용 설명은 예시 중심으로 되어있습니다. 좀 더 기술적으로 설명하겠으나 논문 수준의 내용의 설명은 지양합니다.

 

1세대 dex는 CPMM (constant product market maker)의 방식으로 마켓 메이킹을 시도합니다.

X * Y = K

변수 x와 y의 곱에 있어서 상수 k는 항상 유지되어야 합니다.

  • X: x 토큰의 리저브 개수
  • Y: y 토큰의 리저브 개수
  • K: x/y 토큰의 리저브 개수

앞선 예시에서 X는 ETH, Y는 USDT, K는 유동성 공급의 증서인 pool-eth-usdt 토큰이 되겠습니다.

 

CPMM

만약 10 ETH와 1000 USDT 가 유동성 풀에 공급이 되어있다면

  • X: 10
  • Y: 1,000
  • K: 10,000 

이 되게 됩니다.

 

여기서 뽀글이가 1 ETH를 매도하고 싶다면 어떻게 가격이 산정될까요?

추가적인 유동성 공급자가 없기에 상수 K는 10000으로 유지가 되어야 합니다.

 

매도 후 풀에 남아있는 자산은

  • X: 11
  • Y: K / X ~= 909
  • K: 10,000

가 되게 되며 (1000 - 909) ~= $91의 가치로 1 ETH를 매도한 것이 됩니다.

물론 여기에는 스왑 할 때 발생하는 수수료도 있습니다.

 

만약 유동성이 탄탄하다면 어떻게 될까요? 다음 예시를 봅시다

  • X: 100
  • Y: 10,000
  • K: 1,000,000

뽀글이는 1 ETH를 매도하고 싶습니다.

  • X: 101
  • Y: K / X ~= 9900.9
  • K: 1,000,000

즉 뽀글이는 1 ETH 를 매도하여 (10000 - 9900.9) ~= $99.1의 수익을 보았습니다. 

유동성이 크기 때문에 큰 손해를 보지 않고 거래를 할 수 있게 되었습니다.

 

 

마무리


이렇게 예시 중심으로 LP의 원리에 대해서 설명해보았습니다.

혹시라도 LP 풀에 대해서 추가적인 질문사항이 있으시면 댓글로 남겨주시면 감사하겠습니다.

 

블록체인을 잘 모르는 분의 입장에서는 이해가 될 수 있는 설명이겠지만 블록체인을 잘 이해하고 있는 사람에 입장에서는 틀린 내용이 있을 수 있습니다.

하지만 개인적으로 블록체인을 이해하는 데 있어서 사용자는 개념, 원리에 대해서 어느정도의 오류가(치명적이지 않는) 있어도 쉽게 이해를 할 수 있으면 괜찮다고 생각합니다.

 

혹시나 치명적인 틀린 내용이 있으면 댓글을 달아주신다면 저도 다시 공부해보고 내용을 보충하겠습니다. (정말 감사하겠습니다.)

 

제 블로그가 첫 포스팅임에도 감사하게 많은 분들이 방문해주셔서 글을 올린 지 72시간 만에 약 1500명의 방문자를 달성했습니다.

앞으로 겸손한 마음으로 쉽게 설명하도록 노력하겠습니다. 다시 한번 방문해주셔서 감사합니다.

 

주의하실 점


  • 어떠한 투자도 100% 안전할 수는 없습니다.
  • 꼭 투자 전 본인 스스로 확인이 되시면 투자를 진행하시기 바랍니다.
  • 러그, 탈취, 해킹 등 투자 자본의 피해는 누구도 책임지지 않습니다