Uniswap

유니스왑이란…

유니스왑은 **이더리움과 ERC-20 토큰 간의 자동 교환 거래를 용이하게 하도록 설계된 탈중앙화 거래소(DEX)**이다.

업비트나 빗썸, 코인원과 코빗 등은 중앙화된 주체가 거래를 중개하는 거래소이다.

이러한 중앙집권 거래소는 사용자의 디지털 자산을 거래소가 수탁하고, 사용자는 거래소가 제공하는 장부 위에서 거래를 한다.

이 때 거래를 한다고 진짜 블록체인 위에서 체결이 되지는 않는다는 것이다.

가스비가 들지 않고 빠르게 거래가 체결된다는 장점이 있지만, 이런 중앙집권 거래소는 무허가성이라는 블록체인의 특성에 반하기 때문에 블록체인 커뮤니티에서는 탈중앙화 거래소를 만들기 위해 노력해 왔다.

탈중앙화 거래소는 비영리 목적이기 때문에 수수료가 거의 없고 별도의 인증 절차 없이 토큰 간 거래를 할 수 있다.

초기 탈중앙화 거래소는 과도한 가스비 초래, 확장의 한계성, 부족한 유동성 등의 문제가 있어 큰 관심을 받지 못했다.

유니스왑은 이러한 한계성을 보완하여 출시했는데, 특히 AMM 알고리즘 기반으로 유동성 풀(스마트 컨트랙트 내에 동결되어 있는 자금)을 제공하여 낮은 유동성이라는 한계점을 보완했다.

유니스왑은 유동성을 공급하는 자들에게 별도의 보상을 지급하는 방식으로 유동성 공급 문제를 해결했다.

유니스왑은 유동성 마이닝이라는 시스템으로 성립되어 있어 토큰을 특정 풀에 맡기면 전용 거버넌스 토큰인 UNI를 보상으로 받을 수 있다.

UNI는 일종의 거버넌스 토큰(Governance Token)으로서 가격이 결정되어 있으며 디지털자산 거래소에서 간편하게 교환할 수 있다.

또한, 유니스왑은 중앙관리자가 없어 디지털자산의 상장 이라는 개념이 존재하지 않는다.

이에 누구나 유니스왑에 ERC-20 토큰의 유동성을 공급하여 해당 토큰의 교환을 용이하게 만들 수 있다.

작동 원리

유니스왑은 어떻게 작동할까?

소위 말해 거래 시스템, 거래소에서 거래가 체결되거나, NFT 마켓 플레이스에서 거래가 체결될 때 흔히 쓰이는 방식은 오더북이다.

Order Book : 구매자와 판매자의 모든 매수 및 매도 주문을 기록한 목록

다만 유니스왑은 디지털 자산간의 교환(swap)을 구현하기 위해 AMM 알고리즘을 선택했다.

AMM (Automated Market Making)

AMM을 직역하면 자동화된 시장 형성이다. 말이 조금 어렵지만, 결국 개인들이 토큰을 교환할 때 (스왑할 때) 수학 공식에 의해 자산의 가격이 자동으로 결정되도록 하는 알고리즘이다.

업비트를 예시로 생각을 해보자. 매수를 원하는 A와 매도를 원하는 B가 있다.

각자가 제출한 호가가 일치하였을 때 거래가 성립되고, 거래소는 해당 거래를 중개하는 역할을 수행한다.

반면, AMM 방식의 DEX에서는 이용자들이 유동성 풀(Liquidity Pool)이라는 것을 공급하고, 디지털 자산의 교환을 원하는 자는 해당 풀에서 가상 자산을 교환하는 방식으로 교환이 이루어진다.

이 때 거래의 상대방이 명확히 존재하는 것이 아니다.

교환비율이나 디지털자산의 가치는 수학적인 알고리즘에 의하여 형성된다.

유니스왑은 AMM의 한 종류인 CPMM(Constant Product Market Maker)을 사용한다.

K = X * Y

K = 상수

X = 토큰 X 수량

Y = 토큰 Y 수량

위의 식을 보면 너무 간단해서 이게 되나? 싶을 정도이다.

위 식에서 변수 X와 Y의 곱이 K이고, 유니스왑은 이 상수 K값을 유지하려고 한다.

이는 전체 유동성이 일정하다는 의미로 해석할 수 있다.

X와 Y 값은 각각 유동성 풀에 존재하는 토큰 가치의 비중을 나타내며, 두 비중의 곱에 의해 풀의 유동성이 결정되고 이를 K값으로 나타낸다.

유동성 풀이 뭔데?

탈중앙 거래소(DEX)의 핵심 기술인 유동성 풀(liquid Pool)은 스마트 컨트랙트 안에서 시장 참여자가 판매하거나 판매하려는 디지털자산의 양을 말한다.

이 유동성 풀은 디지털자산의 교환(swap) 과정에서 비유동성으로 인해 발생되는 문제를 완화하기 위해 만들어졌다.

유동성 풀에서 유동성 공급하는 유동성 제공자(LP)는 유동성 풀에 동일한 가치를 갖는 2개의 토큰을 추가하고, 해당 토큰에 대한 유동성을 공급함으로써 시장을 생성한다.

LP는 유동성 공급에 필요한 토큰을 보유한 자라면 누구나 될 수 있으며 AMM을 통해 유동성 풀의 변화에 따라 토큰의 교환비율이 결정된다.

AMM(자동화된 마켓 메이킹)에 유동성을 공급할 경우 비영구적 손실(Impermanent Loss)을 주의해야 한다.

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

쉽게 말해, 유동성을 공급했을 당시의 디지털자산의 수량과 유동성 공급 이후 디지털자산의 수량이 서로 달라질 수 있으며 이로 인하여 손실이 발생할 수 있다는 것이다.

기본적으로 유동성 풀의 가격 변동폭은 각 코인별 수량에 따라 정해진다.

이는 유동성 풀 전체 흐름에 따라서 개인이 보유한 시세도 변하게 된다.

이 과정에서 실질적으로 손실이 발생하게 되는 것이다.

예를 들어 A라는 유동성 공급자가 유동성 풀에 1ETH와 100DAI를 예치한다.

AMM 방식에서는 예치된 토큰 2개의 가치가 동일해야 하기 때문에 1ETH와 100DAI의 가격이 동일하다고 볼 수 있다.

이는 A가 예치한 금액의 가치가 총 200DAI라는 의미이기도 하다.

또한 이 유동성 풀에 A와 같은 유동성 공급자 B가 예치한 총 액수로 10ETH와 1000DAI가 존재한다고 가정해 보자.

A는 해당 유동성 공급풀의 10% 지분을 보유하게 된다.

여기서 1 ETH의 가격이 100DAI에서 400DAI로 상승했고 풀 내 ETH와 DAI의 비율이 바뀌었다고 가정한다.

재정 거래(Arbitrage) 트레이더 덕분에 유동성 공급풀에 예치된 토큰들은 10ETH 와 1000DAI에서 5ETH와 2000DAI로 변동된다.

A가 이러한 상황에서 예치된 자금을 출금하기로 하면 어떨까?

앞서 A의 지분은 10%를 보유하고 있기 때문에 가격이 400DAI로 오른 상황에서 출금하면 0.5ETH와 200DAI, 총 400DAI를 출금할 수 있다.

이는 예치할 당시보다 더 많은 DAI를 출금하는 것다.

그러나 유동성 공급 풀에 유동성을 공급하지 않고 그대로 1ETH와 100DAI를 보유하고 있었다면?

해당 토큰의 총 가치는 500DAI로서 단순히 자산을 보유하는 것이 유동성 풀에 예치하는 것보다 이익이었다는 것을 알 수 있다.

두 토큰의 가격 상승분 차이에 따라서 비영구적 손실 변화폭이 커진다.

다만 대다수 경우 이러한 비영구적 손실은 스왑에 따른 수수료로 상쇄되며 유동성 공급을 통해 이자 등의 수익을 올릴 수 있어 큰 위험은 아닐 수 있다.

하지만 비영구적 손실은 탈중앙금융 프로토콜에 유동성을 공급하기 전에 반드시 이해해야만 한다.

비영구적 손실 위험뿐만 아니라 스마트 컨트랙트 개발자가 유동성 풀을 관리할 수 있는 권한을 갖고 있는 프로젝트인지 아닌지도 확인할 필요가 있다.

개발자가 임의로 관리자 키나 스마트 컨트랙트 코드에 접근하여 자금을 통제할 수 있기 때문이다.

이는 향후 악의적인 행위로도 이어질 수 있다.

유니스왑의 거래 예시

유니스왑의 거래 계약을 예시로 알아보자.

  • 이더리움(X) 10개와 ERC-20(Y) 토큰 200개가 교환 풀에 초기화 되었다고 가정.

  • 이 둘의 곱은 2000(K)이다. 이에 모든 교환에 있어 두 디지털자산의 곱은 2000을 유지해야 한다.

  • 이러한 상황에서 ERC-20 토큰을 구매하기 위해 1 ETH를 보내면 컨트랙트의 이더리움 수량이 10개에서 1개가 더 추가되어 11개로 변한다.

  • K는 2000으로 일정하므로 ERC-20 토큰의 수량은 181.82(2000/11)로 변한다. 다시 말해 1 ETH를 주고받는 ERC-20 토큰의 양은 18.18(200-181.82)인 것이다.

  • 이 다음 상황에서 누군가 1 ETH를 또 넣는다면 컨트랙트 상의 이더리움은 총 12개가 된다.

  • ERC-20 토큰의 양은 166.67(2000/12)이다.

  • 즉, ETH를 한 개 더 넣으면 1 ETH를 주고받는 ERC-20 토큰수량은 15.15(181.82--166.67)이다.

  • 이더리움 한 개로 얻을 수 있는 ERC-20 토큰의 양이 줄었으므로, ERC-20 토큰의 구매 가격이 높아진 것으로 볼 수 있다.

이때 ERC-20을 비싸게 팔고 이더리움을 저렴하게 매수하려는 차익거래자가 나온다.

이러한 차익거래자 때문에 이더리움/ERC-20 비율이 효율적인 선까지 맞춰진다.

즉, 유니스왑은 CPMM(X*Y=K)을 통해 ETH와 ERC-20 토큰의 비율을 중앙집권 거래소 가격과 수렴할 수 있게 한 것이다.

유동성 공급자에 대한 보상

유니스왑을 마치 은행과 같다고 생각하면 편하다. 내가 원화를 달러로 바꾸고 싶다면 아마 대부분 은행에 가서 환전을 하게 될 것이다. (온라인이건, 오프라인이건)

근데 은행에 달러가 없다면 어떻게 될까? 원화를 달러로 못바꿔준다. 당연히 은행에서는 이런 사태를 대비하기 위해 달러를 미리 쌓아놓는다.

근데 은행은 중앙화된 주체가 관리하니까 가능하지만, 탈중앙화된 DEX에서는 어느 한 화폐가 물량이 모자라면 어떻게 하겠는가?

그래서 유동성을 공급하는 유동성 공급자(Liquidity Provider)들에게 보상으로 UNI를 주는 것이다. 유동성을 공급해서 보상을 받아가고, 다른 이용자들은 이들이 제공한 유동성으로 스왑을 할 수 있도록.

유동성 공급자(LP, Liquidity Provider)는 자신이 제공한 유동성을 회수할 때 그 시점까지 수수료를 보상받을 수 있다.

이때 받게 될 보상은 토큰교환 수수료율, LP가 제공한 유동성의 비중, 건당 거래금액이라는 3가지 변수에 의해 정해진다.

토큰 교환 수수료율이란 토큰 페어 별로 교환 시점에 발생하는 수수료로, 토큰 페어 별로 수수료가 다르게 선정되어 있다.

LP가 제공한 유동성의 비중은 유동성 풀 전체에서 LP가 공급한 토큰의 비중을 말한다.

건당 거래 금액은 교환되는 토큰의 총 가치로, 토큰을 더 많이 교환할수록, 혹은 더 비싼 토큰을 교환할 수록 커진다.

결국 오더북 구현한 유니스왑 V3

2021년 5월 6일, 유니스왑은 새로운 버전인 V3를 이더리움 메인넷 위에 런칭했다.

유니스왑 V3 버전에서 업데이트된 대표적인 사항은 다음과 같다.

집중화된 유동성 그리고 오더북 구현

유니스왑이 V3 버전으로 업데이트 되면서 기존의 오더북을 사용하는 방식과 유사한 방식으로 유니스왑에서 토큰을 거래할 수 있게 되었다.

기존 유니스왑은 오더북을 제공하는 중앙집권 거래소와 달리 사용자 사이에 토큰을 교환하는 방식으로 거래가 이루어지기에 토큰 가격이 매 순간 유동성 물량에 따라 달라졌다.

때문에 유동성 공급자(LP) 입장에서 보면 코인이 언제 얼마에 거래될지 모르는 위험이 존재했다.

하지만 V3는 LP가 가격대를 정해서 공급할 수 있도록 하여 LP가 효율적으로 자산을 운용할 수 있게 된 것이다.

유니스왑은 토큰 가격이 책정되는 K=X*Y 관계식 범위도 대폭 축소했다.

가격 곡선의 범위를 제한하면 어떤 토큰의 시장가가 급락하는 상황에서도 사용자가 추가적인 손실을 볼 가능성이 줄어든다.

실제로 유니스왑에서 한쪽 토큰의 가격이 0이 되면 다른 토큰 가격도 0이 되는 리스크가 존재했다.

또한 포지션이라는 개념을 도입해 오더북과 유사한 기능을 탑재했다.

포지션은 거래가 실제로 이뤄질 수 있는 유효한 가격 범위를 말한다.

동시에 해당 구간을 더욱 세밀하게 구분해 매매할 수 있게 구분했다.

이로 인해 거래자는 자신이 원하는 가격에 매매를 진행하기 한결 더 쉬워졌다.

유연한 수수료

유니스왑은 LP의 효율성을 올리기 위해 수수료 체계를 재정비했다.

기존에는 수수료가 0.3%로 일괄 적용됐다.

V3는 0.05%, 0.1%, 1% 등으로 세분화했다.

리스크에 따라 더 보상하겠다는 취지로, 유니스왑은 수수료 개편과 오더북 기능 구현으로 LP의 효율성이 이전보다 4000배 이상 증가한다고 강조했다.

유동성 공급 방식 개편

기존 V2는 사용자나 LP가 토큰을 페어(pair)으로 등록하는 방식으로만 유동성을 공급할 수 있었다.

하지만 V3는 사용자나 LP가 단일한 토큰을 예치하는 방식으로도 거래소에 유동성을 공급할 수 있게 바꾸었다.

다시 말해, 유동성 풀에 포지션 개념을 적용하는 또 다른 방식인 것이다.

가스비가 많이 들지 않나?

이렇게 많은 로직이 컨트랙트 상에서 이루어진다고 하면 응당 가스비에 대한 걱정을 할 수 밖에 없다.

실제로 2020년 이더리움 상의 트랜잭션 수수료가 급증하면서 많은 사용자들은 유니스왑을 비싸게 사용해야만 했다.

이에 유니스왑 V3는 레이어2 솔루션인 옵티미스틱 롤업(Optimistic Rollup)을 서비스에 탑재해 사용자가 탈중앙화 거래소에서 발생하는 수수료를 상대적으로 저렴하게 지불할 수 있도록 했다.

Last updated