유동성 풀이란 무엇인가?
유동성 풀이란?
유동성 풀(Liquid Pool)은 스마트 컨트랙트 안에서 시장 참여자가 판매하거나 판매하려는 디지털 자산의 양으로, 탈중앙 거래소(DEX)의 핵심 기술입니다. 이 유동성 풀은 디지털 자산의 교환(swap) 과정에서 비유동성으로 인해 발생하는 문제를 완화하기 위해 만들어졌습니다. 유동성 풀에서 유동성 공급하는 유동성 제공자(LP)는 유동성 풀에 동일한 가치를 갖는 2개의 토큰을 추가하고, 해당 토큰에 대한 유동성을 공급함으로써 시장을 생성합니다.
LP는 유동성 공급에 필요한 토큰을 보유한 자라면 누구나 될 수 있으며, AMM(자동화된 마켓 메이킹)을 통해 유동성 풀의 변화에 따라 토큰의 교환비율이 결정됩니다. 이더리움상에서 유동성 풀을 사용하는 대표적인 거래소는 스시스왑, 커브 등이 있으며, 이 거래소 내 유동성 풀은 ERC-20 토큰을 지원합니다.
유동성 풀은 어디에 사용될까요?
유동성 풀에 유동성을 공급하는 것은 간단합니다. 그리고 누구나 참여할 수 있기 때문에 다양한 방법으로 활용할 수 있습니다. 우선 유동성 풀은 토큰이 알고리즘에 따라 유동성 풀에 제공하는 사용자에게 분배할 수 있다는 원리를 이용해, 사용자가 풀에 자금을 추가하고 이자를 받을 수 있는 이자 창출 플랫폼으로 사용할 수 있습니다. 이를 유동성 마이닝(liquidity mining) 또는 이자 농사(yield farming)라고 말하기도 합니다.
그리고 유동성 공급자에게 제한된 리스크와 수익을 선택할 수 있게 함으로써 스마트 컨트랙트의 리스크를 보완할 수 있는 기반을 제공합니다. 또한, 블록체인상에서 합성 자산(synthetic asset)을 만드는 것도 가능하게 할 수 있는 기반으로 활용할 수 있습니다.
비영구적 손실
AMM(자동화된 마켓 메이킹)에 유동성을 공급할 경우 비영구적 손실(impermanent loss)을 주의해야 합니다. 비영구적 손실이란 유동성 공급자가 유동성 풀에 유동성을 공급한 이후 예치한 자산의 가격 변화와 함께 자연히 발생하는 손실을 말합니다. 쉽게 말해, 유동성을 공급했을 당시의 디지털 자산의 수량과 유동성 공급 이후 디지털 자산의 수량이 서로 달라질 수 있으며, 이로 인하여 손실이 발생할 수 있스빈다.
기본적으로 유동성 풀은 K=X*Y라는 공식에 의해 운영되고, 가격 변동폭은 코인별 수량에 따라 정해집니다. 이는 유동성 풀 전체 흐름에 따라서 개인이 보유한 시세도 변하게 됩니다. 이 과정에서 실질적으로 손실이 발생하게 됩니다.
예를 들어, A라는 유동성 공급자가 유동성 풀에 1 ETH와 100 DAI를 예치합니다. AMM 방식에서는 예치된 토큰 2개의 가치가 동일해야 하기 때문에, 1 ETH와 100 DAI의 가격이 동일하다고 볼 수 있습니다. 이는 A가 예치한 금액의 가치가 총 200 DAI라는 의미이기도 합니다.
또한 이 유동성 풀에 A와 같은 유동성 공급자가 예치한 총액수로 10 ETH와 1000 DAI가 존재한다고 가정해 보겠습니다. A는 해당 유동성 공급풀의 10% 지분을 보유하게 됩니다. 여기서 1 ETH의 가격이 100 DAI에서 400 DAI로 상승했고, 풀 내 ETH와 DAI의 비율이 바뀌었다고 가정합니다. 재정 거래(Arbitrage) 트레이더 덕분에 유동성 공급풀에 예치된 토큰들은 10 ETH 와 1000 DAI에서 5 ETH와 2000 DAI로 변동됩니다.
A는 이러한 상황에서 예치된 자금을 출금하기로 합니다. 앞서 A의 지분은 10%를 보유하고 있기 때문에 가격이 400 DAI로 오른 상황에서 출금하면 0.5 ETH와 200 DAI, 총 400 DAI를 출금할 수 있습니다. 이는 예치할 당시보다 더 많은 DAI를 출금하는 것이지만, 유동성 공급 풀에 유동성을 공급하지 않고 그대로 1 ETH와 100 DAI를 보유하고 있을 경우 해당 토큰의 총가치는 500 DAI로서 단순히 자산을 보유하는 것이 유동성 풀에 예치하는 것보다 이익이었다는 것을 알 수 있습니다. 이렇게 발생하는 손실이 바로 비영구적 손실입니다.
두 토큰의 가격 상승분 차이에 따라서 비영구적 손실 변화폭이 커집니다. 다만 대다수 경우 이러한 비영구적 손실은 스왑에 따른 수수료로 상쇄되며 유동성 공급을 통해 이자 등의 수익을 올릴 수 있어 큰 위험은 아닐 수 있습니다. 하지만 비영구적 손실은 탈중앙금융 프로토콜에 유동성을 공급하기 전에 반드시 이해해야만 합니다.
비영구적 손실 위험뿐만 아니라 스마트 컨트랙트 개발자가 유동성 풀을 관리할 수 있는 권한을 갖고 있는 프로젝트인지 아닌지도 확인할 필요가 있습니다. 개발자가 임의로 관리자 키나 스마트 컨트랙트 코드에 접근하여 자금을 통제할 수 있기 때문입니다. 이는 향후 악의적인 행위로도 이어질 수 있습니다.
유니스왑은 어떻게 작동할까?
다음 글해시 함수는 무엇인가?