[UNISWAP SERIES] 1. 유니스왑 이해하기

Aiden Park
27 min readJul 27, 2021

--

Reviewed by 정현, 오영택

[UNISWAP SERIES]

  1. 유니스왑 이해하기
  2. CPMM 이해하기
  3. 유니스왑 V3 톺아보기
  4. AMM 이해하기

Intro

이 글은 [유니스왑 시리즈]의 첫번째 글로, 여러분들에게 유니스왑이 무엇이고, 어떻게 발전해 왔으며, 유니스왑 그 자체라고 할 수 있는 AMM이란 도대체 무엇인지에 대해 쉽고 간략하게 설명하고자 합니다. 이 글은 다음과 같은 궁금증을 갖고 계신 분들을 위해 작성되었습니다.

  • “유니스왑을 들어보긴 했지만, 정확히 무엇인지 잘 모르겠어요.”
  • “00 스왑이 그렇게 많은데 다 무엇을 하는 프로젝트인가요?”
  • “AMM, 유동성 공급자 등 유니스왑에서 자주 언급되는 단어를 이해하고 싶어요.”
  • “유니스왑 버전이 V1, V2, V3로 다양하던데, 각 버전은 뭐가 다른건가요?”
  • “유니스왑 V3가 그렇게 대단하다던데, 정확히 뭐가 그렇게 좋은건가요?”

그러면 이러한 궁금증을 갖고 유니스왑과 AMM의 세계로 함께 여행을 떠나보겠습니다.

Introduction of AMM

유니스왑은 여러분도 잘 알다시피 DEX입니다. DEX란 Decentralized Exchange의 준말로 암호화폐를 거래할 수 있는 탈중앙 거래소를 의미합니다. 이 글을 읽고 계시는 독자 분들은 아마 누구나 업비트, 빗썸 등에서 암호화폐를 거래해보신 경험이 있을겁니다.

우리에게 이미 너무나도 익숙한 화면

그런데, 이런 업비트, 빗썸과 같은 거래소들은 사용자들이 암호화폐를 쉽게 거래할 수 있도록 서비스를 제공하지만, 엄밀히 말하면 이는 블록체인 상에서 암호화폐를 거래할 수 있도록 하는것이 아닙니다. 암호화폐는 모두 거래소가 수탁하고 있고, 우리는 거래소가 제공한 인터페이스를 통해 거래소의 장부 위에서 암호화폐를 거래하고 있는것이죠.

때문에, 오래전부터 블록체인 커뮤니티는 블록체인 상에서 거래소를 만들고자 노력해 왔습니다. 그 이유에 대해서는 여기서 자세히 다루지 않도록 하겠습니다. 이러한 초기 시도중 하나가 바로 이더델타(EtherDelta) 였습니다. 이더델타는 이더리움 블록체인 위의 초기 DEX 프로젝트로 많은 주목을 받았습니다.

EtherDelta

이더델타는 위 이미지와 같이 기존 거래소(CEX; Centralized exchange)와 같은 오더북 기반의 거래소를 블록체인 상에서 구현하고자 했습니다. 오더북은 거래자의 모든 매도 및 매수 주문을 기록한 목록을 의미합니다. 쉽게 말해, 주식이나 암호화폐를 거래할 때 흔히 볼 수 있는 호가창을 오더북이라합니다. 오더북 기반 거래소는 구매자와 판매자의 주문을 연결하여 입찰 가격이 주문의 최저가격보다 같거나 높으면 거래를 체결하게 됩니다.

업비트 비트코인 호가창

위 이미지와 같이 특정 가격에 특정 물량을 거래하고자 하는 매수자, 매도자의 주문이 늘어서 있으며, 이를 기반으로 거래가 체결되는 것이 오더북 기반 거래소의 특징입니다.

이더델타와 같은 오더북 기반의 DEX 프로젝트들은 초기에 커뮤니티의 관심을 끌었지만, 결과적으로 유의미한 성공을 거두지는 못했습니다. 그 이유는 오더북 기반 DEX에 다음과 같은 치명적인 단점이 존재했기 때문입니다.

  1. 거래를 체결하기 위해 너무 많은 가스를 필요로 했습니다. 특히, 오더북은 매수 및 매도 거래를 미리 등록하는 방식이기 때문에, 거래를 만들거나 취소하는데 모두 많은 가스가 소모 되었습니다.
  2. 현재도 계속 문제로 제기되는 낮은 확장성으로 인해 사용자 경험이 현저하게 낮았습니다. 오더북 기반의 거래소는 주문을 생성하는 역할(Maker)이 무엇보다 더 중요한데, 낮은 확장성은 이를 생성하고 관리하는것을 매우 어렵게 만들었습니다.
  3. 유동성이 너무나도 부족했습니다. 유동성이 부족한것은 원인이면서 동시에 결과이기도 합니다. 1,2번과 같은 여러 이유로 DEX에 사용자가 많지 않았고, 이는 곧 유동성 부족으로 이어졌습니다. 이렇게 부족한 유동성은 다시 사용자 경험을 저하시키는 악순환의 고리로 이어졌습니다.

이런 여러 이유로 인해 이더델타를 비롯한 초기의 여러 DEX 프로젝트들은 성공을 거두지 못하고, 서서히 시장에서 관심을 잃게 되었습니다.

이러한 배경에서 기존 DEX의 한계를 극복하고 판도를 완전히 바꾼 프로젝트가 바로 오늘 살펴볼 유니스왑입니다.

데브콘 3에서 런칭을 발표한 유니스왑

유니스왑은 흥미롭게도 기존의 DEX 프로젝트와 완전히 다른 방식으로 접근했습니다. 유니스왑에는 더 이상 오더북이 존재하지 않았습니다! 대신에 자동화된 마켓 메이커(Automated Market Maker; AMM) 를 통해 사용자들의 거래를 AMM 알고리즘을 기반으로 자동으로 체결하도록 만들었습니다.

AMM이 무엇이고, 어떻게 동작하는지는 아래에서 자세히 다루도록 하겠습니다.

AMM을 도입함으로써 유니스왑에서는 누구나 자유롭게 유동성을 공급할 수 있고, 이 유동성을 바탕으로 알고리즘으로 결정된 가격으로 언제든지 사용자들이 거래할 수 있게 되었습니다. 이로 인해 DEX의 사용성을 종전에 비해 크게 개선할 수 있었고, 풍부한 유동성을 바탕으로 언제든지 원하는 양의 거래를 체결할 수 있게 되었습니다.

심플 그 자체인 유니스왑 인터페이스 — 재밌게도 원하는 거래량을 입력하는 칸 이외에는 아무것도 없다.

유니스왑의 성공 이후 수 많은 AMM기반의 DEX 프로젝트들이 런칭 되었고, 이제 모든 DEX의 표준은 AMM이 되었다고 해도 과언이 아닐정도로 유니스왑은 블록체인 생태계에 많은 영향을 끼쳤습니다. 그렇다면 도대체 AMM이란 무엇이고, 이를 이용하는 유니스왑은 대체 어떤것이기에 이처럼 DEX의 판도를 완전히 바꿀 수 있었을까요? 이제 유니스왑과 AMM에 대해 본격적으로 살펴볼 준비가 된 것 같습니다.

Uniswap V1 — AMM의 도입(CPMM과 유동성 공급자)

AMM — CPMM

유니스왑을 살펴보기 전에 먼저, AMM이라는 것이 도대체 무엇을 의미하는지 살펴볼 필요가 있습니다. AMM이란 자동화된 마켓 메이커로, 말 그대로 마켓 메이킹 즉, 쉽게 말해 매수자와 매도자간의 거래를 이어주는 것을 탈중앙화된 방식으로 자동화한 것을 의미합니다. 쉽게 말한다고 했지만, 여전히 이 설명을 통해서는 이해가 어려우실 것입니다. 예시를 통해 AMM이 어떻게 작동하는지 간단하게 살펴보도록 하죠!

AMM을 구성하는 주요 요소는 가격 결정 알고리즘, 유동성 공급자, 토큰 페어, 그리고 트레이더(토큰을 스왑하는 사용자)입니다. 가격 결정 알고리즘은 AMM의 꽃이라고 할 수 있습니다. 유니스왑은 여러 AMM 모델중 CPMM(Constant Product Market Maker)라고 하는 모델을 사용하고 있습니다. 그 이름에서 알 수 있듯 CPMM은 어떠한 곱(Product)이 항상 동일하게 유지되는(Constant) 모델임을 유추할 수 있습니다. 유니스왑은 CPMM을 통해 구성 요소 중 가격 결정 알고리즘을 결정합니다. CPMM을 알아보기에 앞서, 나머지 구성 요소에 대해 살펴보겠습니다.

  • 토큰 페어: 거래되는 토큰 쌍을 의미합니다. 예를 들어, 여러분이 거래소에서 KRW로 ETH를 구매하거나 ETH를 KRW로 판매하는것은 모두 ETH/KRW 페어에서 거래를 하는 것입니다. 이 토큰 페어로 구성된 유동성을 풀(Pool)이라고 합니다.
  • 유동성 공급자: 토큰 페어를 이루는 두가지 토큰에 대한 유동성을 풀에 공급하는 주체를 의미합니다. 이렇게 공급된 유동성은 AMM의 가격 결정 알고리즘에 따른 가격으로 거래됩니다.
  • 트레이더: 토큰 페어를 이루는 두가지 토큰을 거래하는 주체를 의미합니다. 트레이더는 유동성 공급자가 조성한 유동성을 바탕으로 거래를 할 수 있습니다.

여기서 여러분에게 생소한 개념은 바로 유동성 공급자라는 주체일 것입니다. 두가지 토큰 모두에 대해 유동성을 공급한다는게 도대체 무슨 말일까요? 이를 쉽게 이해하기 위해 잠시 블록체인을 벗어나 게임 세상으로 떠나보겠습니다.

한 게임의 상인에게서 유동성 공급자를 이해할 수 있는 단초를 얻을 수 있습니다. (Source)

혹시 여러분은 RPG 게임을 해보신적이 있으신가요? 이런 게임에는 대개 플레이어와 아이템을 거래하는 상인이 있습니다. 플레이어는 이 상인에게 골드를 지불하고 아이템을 사거나, 또는 아이템을 대가로 골드를 받을수도 있습니다. 재밌는 점은 상인은 아이템과 골드를 늘어놓고 플레이어에게 거래의 기회를 계속해서 제공한다는 것입니다.

여러분은 언제든지 상인에게 달려가 골드가 필요하면 아이템을 팔고, 아이템이 필요하면 골드를 지불하면 됩니다. 그런데, 위 이미지에 나온 게임에서는 이 상인 시스템이 독특하게 구성되어 있습니다. 상인이 보유하고 있는 아이템과 골드의 양에 한계가 있어, 이 이상으로는 거래를 할 수 없다는 것입니다.

사진상으로 현재 상인은 260 골드를 보유하고 있으나, 플레이어가 판매하고자 하는 아이템의 가격은 502 골드입니다. 따라서, 플레이어는 해당 아이템을 판매하여도 260 골드만 얻을 수 있습니다. 반대로, 플레이어가 아이템을 구매하고 싶어도 해당 아이템이 모두 매진되었다면 아무리 많은 골드를 주더라도 더 이상 구매할 수가 없습니다.

갑자기 게임 이야기를 꺼냈던 이유는 바로, 해당 게임 세상에서 상인이 수행하는 역할이 AMM의 유동성 공급자의 역할과 매우 유사하기 때문입니다.

상인이 항상 아이템과 골드라는 두가지 페어를 대상으로 플레이어에게 거래의 기회를 항상 열어주는 것처럼, 유동성 공급자 또한 두가지 토큰 페어를 대상으로 트레이더에게 항상 거래의 기회를 열어줍니다.

마치 상인의 아이템이나 골드가 동이 나면 더 이상 거래할 수 없는 것처럼, 유동성 공급자의 특정 토큰에 대한 유동성(아이템, 골드 재고)이 동이 나면 더 이상 거래를 할 수 없게 됩니다. (엄밀히 말하면 거래 가격이 천정부지로 치솟게 됩니다. 이는 아래에서 더 자세히 살펴보겠습니다.)

한가지 차이점은, 상인은 동일한 아이템에 대해 항상 동일한 가격으로 거래를 하는 반면, 유동성 공급자가 제공한 두가지 토큰은 수요와 공급에 따라 그 가격이 달라진다는 점입니다. 이 가격을 결정하는 것이 바로 AMM의 가격 결정 알고리즘입니다!

이제 AMM의 꽃인 가격 결정 알고리즘에 대해 자세히 살펴볼 준비가 된 것 같습니다. 유니스왑을 포함한 대부분의 DEX들이 사용하는 것은 가격 결정 알고리즘은 CPMM으로, 이는 X*Y = K 로 표현됩니다.

X와 Y는 토큰 페어의 각 토큰(x, y)의 리저브(Reserve) 수량을 의미합니다. K는 X와 Y를 곱한 값을 의미합니다.

예를 들어, 풀에 공급된 X와 Y의 수량이 각각 10, 500 라면 k는 5000이 됩니다.

CPMM에서 모든 거래는 거래후에 변경된 X와 Y의 곱이 항상 일정하게 K로 유지되어야 합니다(Constant Product). 그리고 이 곱의 값이 일정하게 유지되도록 X와 Y의 변화량이 이에 맞게 결정됩니다. 예를 들면 X를 지불하여(풀에 넣고) Y를 구매하고자(풀에서 빼고) 할 때, 풀의 X의 양은 줄어들고 Y의 양은 늘어날 것입니다. 그리고 이 행동을 반복하면 X*Y = K에 의해 점점 동일한 X로 구매할 수 있는 Y의 양이 줄어들 것입니다. 이로 인해, y 토큰의 가격은 상승하고, x 토큰의 가격을 하락합니다.

조금 어렵나요? 예시를 통해 살펴보면 금방 쉽게 이해하실 수 있을것입니다.

ETH to OMG Exchange in Uniswap — V1 Whitepaper

현재 트레이더는 ETH를 지불하고 OMG를 구매하고자 합니다. 유니스왑의 ETH/OMG 풀에는 10 ETH 와 500 OMG의 유동성이 공급되어 있는 상황입니다. 이를 다시 직관적으로 표현하면, 마치 게임세계의 상인처럼 유동성 공급자들은 10 ETH와 500 OMG를 CPMM에 의해 결정되는 가격을 기반으로 누구나 자유롭게 거래할 수 있도록 기회를 열어둔 것입니다. 다시 말해, 자신의 두가지 토큰들이 항상 시장가를 기반으로 거래될 수 있도록 유동성을 제공한 것이죠.

아까 CPMM의 핵심은 풀에 공급된 각 토큰의 수량의 곱이 항상 일정하게 상수 K를 유지해야 한다고 했습니다. 현재 그 값은 10*500 = 5000이며, 이는 오직 유동성이 추가로 공급되거나 제거될 때만 변경될 뿐 아무리 많은 거래를 하더라도 변경되지 않습니다. 위의 예시에서, 트레이더는 1 ETH를 지불하고(풀에 넣고), OMG를 구매하려고(풀에서 빼려고) 합니다. 따라서, 이 트레이더가 1 ETH로 구매할 수 있는 OMG의 양은 45.5가 됩니다. (500–5000/11)

여기서 주목할 점은 거래 이전의 1ETH의 가격은 50 OMG 였지만, 막상 거래를 하고 나니 1 ETH 당 45.5 OMG의 가격으로 거래가 되었다는 점입니다. 이처럼 처음에 의도했던 가격과 실제 거래 가격사이에 유의미한 차이가 발생하는 것을 슬리피지(Slippage)라고 하는데, 유니스왑의 CPMM은 그 특성상 슬리피지가 발생할 수 밖에 없게 되어 있습니다. 하지만, 풀에 공급된 유동성의 양이 클수록 동일한 규모의 거래를 수행할 때의 상대적인 슬리피지 규모는 점점 줄어들게 되는데, 이는 곧 유니스왑의 핵심은 각 풀에 공급된 유동성의 규모라는것을 의미합니다.

Note: 유니스왑 시리즈의 다음 글에서 유니스왑의 CPMM을 통한 가격 결정 방법을 더 상세하게 살펴볼 예정입니다.

그렇다면, 왜 유동성의 규모가 중요한지에 대해 아래에서 더 자세히 살펴보도록 하겠습니다.

Liquidity and Slippage

CPMM과 같은 AMM에서 슬리피지가 어떻게 발생되는지는 앞의 예시에서 간략하게 살펴보았습니다. 하지만 왜 유동성의 규모가 클수록 슬리피지가 줄어드는 것일까요? 이에 대해 예시를 통해 쉽게 살펴보겠습니다.

현재 ETH/DAI 풀에 아래와 같이 유동성이 공급되어 있다고 가정해보겠습니다.

  • x: ETH / y: DAI
  • 100 ETH : 1000 DAI (k = 100000)
  • 1 ETH : 10 DAI (현재 가격)

이 때, 두가지 토큰의 유동성을 기준으로 X*Y = K를 그래프로 나타내보면 위와 같은 형태를 갖게 됩니다. 중요한점은 곡선상의 어떤 점에서든지 X*Y는 일정하게 K가 되어야 한다는 것입니다.

이 예시에서 트레이더는 1000 DAI를 지불하고 ETH를 구매하고자 합니다. 현재 1 ETH 당 가격은 10 DAI이므로, 해당 사용자는 1000 DAI를 지불하고, 100 ETH를 얻는 것을 기대했을 것입니다. (거래 수수료는 없다고 가정하겠습니다)

하지만, 1000 DAI를 지불하고 받은 것은 50 ETH 밖에 되지 않습니다. 이는 계속해서 강조한 CPMM의 특징 때문인데, 각 토큰의 유동성의 곱이 항상 일정해야 하기 때문입니다.

100 * 1000 = 50 * 2000 = 100000

그렇다면 유동성의 규모가 늘어나면 슬리피지는 어떻게 줄어들 수 있는걸까요?

기존 예시에서 유동성의 규모를 1000배로 늘렸습니다. 즉 이제 ETH/DAI 풀에는 10,000 ETH와 100,000DAI가 공급되어 있는 상황입니다. 여기서 여기서 동일하게 50 ETH를 구매해보겠습니다.

놀랍게도 50 ETH를 503 DAI에 구매할 수 있다는 것을 확인할 수 있습니다. 즉, 기존 가격 1 ETH / 10 DAI 라는 수치와 거의 유사한 수준에서 거래가 체결된 것으로, 슬리피지는 단 3 DAI 수준에 그쳤습니다. 이처럼 유동성의 규모가 커질수록 동일한 규모의 거래에 대해 슬리피지가 줄어든다는 것을 직접 확인하였는데, 이는 사실 위의 그래프 상에서 직관적으로 확인할 수 있습니다. 동일한 규모의 거래가 체결될 때 유동성 규모에 따라 곡선 상의 점의 변화가 달라지는 것을 확인하실 수 있을 것입니다. 이러한 점 때문에 유니스왑을 포함한 모든 DEX는 TVL(Total Value Locked)로 표현되는 많은 유동성을 확보하기 위해 모두 혈안이 되어 있습니다.

하지만, AMM에서 단순히 유동성의 규모를 증가시키는 것만이 슬리피지를 해결할 수 있는 유일한 방법일까요? 그렇지는 않습니다. 이에 대한 유니스왑 팀의 해답이 바로 V3에서 도입된 집중화된 유동성(Concentrated Liquidity)이며, 자세한 내용은 이어지는 글에서 다룰 예정입니다. 지금 당장은 최근에 등장한 V3가 이러한 문제를 유동성의 규모가 아닌 다른 방식으로 해결하기 위해 집중했다는 점만 기억하고 있어도 충분합니다.

Gas Fee

이제 다시 유니스왑으로 돌아가보겠습니다. 유니스왑이 런칭 후 가장 중점적으로 내세운 두가지 부분 중 하나는 앞서 살펴보았던 CPMM이라는 AMM을 도입하였다는 점이고, 다른 하나는 이더리움이라는 확장성이 제약된 환경에서 보다 효율적인 거래 경험을 제공했다는 점이었습니다.

사실 AMM이라는 개념은 유니스왑 팀이 처음으로 고안해내거나 개발했던 것이 아니었습니다. 단지, CPMM이라는 아주 단순한 모델을 효율적으로 잘 적용했을 뿐, 이러한 비슷한 시도가 전혀 없었던것은 아니었습니다.

Note: AMM의 역사와 다양한 모델에 대한 이야기는 이어지는 후속 글에서 자세히 다룰 예정이니 많은 기대와 관심 부탁드립니다.

유니스왑의 가스 수수료가 상대적으로 매우 낮은것을 확인할 수 있습니다.

하지만 대부분의 경우 여러가지 이유로 사용성에 많은 한계가 있었고, 그 주요 원인은 바로 가스 수수료였습니다. 유니스왑은 AMM의 장점은 장점대로 살리면서 가스 수수료를 낮춰 일반 사용자들이 부담 없이 거래할 수 있도록 하였고, 이는 유니스왑이 초기에 성공할 수 있었던 주요 원인 중 하나가 되었습니다.

Liquidity Provider

앞서 슬리피지 설명에서 확인한바와 같이, 유니스왑에서는 유동성 공급자의 역할이 매우 중요합니다. 물론 유동성은 비단 암호화폐를 거래하는 곳 뿐만 아니라 다른 자산을 취급하는 거래소에서도 매우 중요한 요소입니다. 때문에 통상적으로 주문을 등록하는(Make order) 주체에게 수수료 할인등의 혜택을 제공합니다.

하지만 유니스왑은 여기에서 한 발 더 나아가 유동성 공급자들이 거래 수수료의 대부분을 가져갈 수 있도록 설계하였습니다. 각 유동성 공급자가 공급한 유동성의 양에 비례하여 LP 토큰을 지급받게되고, 이 LP 토큰은 곧 해당 풀의 거래 수수료에 대한 일종의 지분이 되는 구조였습니다. 이는 언뜻 보기에도 상당히 파격적인 구조인데, 쉽게 말해 누구나 유동성을 공급하여 유니스왑의 주인이 될 수 있다는 의미였기 때문입니다. 이로 인해 이더델타와 같은 초기의 DEX들이 유동성을 확보하는데 큰 어려움을 겪었던 반면, 유니스왑은 상대적으로 손쉽게 상당한 규모의 유동성을 확보할 수 있었습니다.

Uniswap V2 — 사용성 개선 (ERC20 페어 지원, Flash Swap 지원)

런칭 이후 큰 성공을 거두었던 유니스왑은 약 1년여 후 2020년 5월경 V2로의 업데이트를 알렸습니다. V2는 큰 틀에서는 V1과 차이가 없지만, 사용성을 개선하기 위해 여러가지 새로운 기능을 도입하였습니다. 여기서는 새롭게 도입된 기능들에 차례대로 간략하게 다뤄보겠습니다.

Support ERC20 — ERC20 Trade

유니스왑의 첫번째 버전인 V1에서는 ERC20 토큰 페어를 지원하지 않았습니다. 이는 다시 말해, DAI/USDC 의 거래를 위해서는 반드시 ETH로 환전하는 과정을 거쳐야 한다는 것을 의미합니다. 때문에, V2에서는 이를 개선하여 ERC20토큰 페어를 지원할 뿐만 아니라 거래 페어들의 루트를 사용자가 직접 정의하여 사용할 수 있도록 업데이트 되었습니다.

DAIdd

V2에서는 위 그림과 같이 DAI/USDC 를 그대로 스왑할 수 있게함과 동시에, ETH를 통해서 스왑하는 것 또한 가능하도록 기능을 개선하였습니다. 맨 아래의 예시와 같이 사용자 정의 경로를 지정하여 여러 페어를 거쳐 스왑을 하는 기능도 도입하였습니다. 또한, V2에서는 V1과 달리 거래에 Native ETH를 사용하지 않고, Wrapped ETH(ERC 20)를 사용하게 되었습니다.

Flash Swap

V2에서는 플래시 론(Flash Loan)과 유사한 기능인 플래시 스왑(Flash Swap)기능 또한 새롭게 추가하였습니다. 플래시 스왑은 해당 사용자가 현재 토큰 잔액이 전혀 없어도, 풀에서 토큰을 원하는 만큼 빌린 뒤 이를 하나의 트랜잭션 내에서 자유롭게 사용하고 이를 다시 상환할 수 있는 기능입니다.

위 그림에서 확인할 수 있듯, V1에서는 플래시 스왑이 지원되지 않았기 때문에 토큰 잔액이 없다면 거래를 할 수 없습니다. 하지만, V2에서는 풀에서 원하는 만큼의 토큰을 빌린 뒤 이를 이용하여 원하는 곳에 사용한 뒤 해당 금액과 이자를 한 트랜잭션 내에서 상환하게 됩니다. 구체적으로 하나의 플래시 스왑 트랜잭션 안에서 사용자는 빌려간 토큰에 대한 값을 모두 지불하거나, 일부만 지불하고 일부는 그대로 상환하거나, 또는 빌려간 모든 토큰을 상환해야만 합니다. 그렇지 않을 경우 플래시 스왑 트랜잭션은 취소(revert)되며, 쉽게 말해 처음부터 없던 일이 됩니다.

플래시 론 또는 플래시 스왑은 최근 1년간 지속적으로 발생한 디파이 해킹 사례의 주요 수단으로 많이 언급되며 이에 대한 부정적인 여론이 많이 형성되었습니다. 하지만, 유니스왑 팀을 비롯한 디파이 커뮤니티는 이러한 기능을 악용하여 공격에 사용한 것이 문제일 뿐 기능 그 자체에는 문제가 없다는 입장으로 보입니다. 이러한 맥락에서 유니스왑 팀은 수 많은 디파이 해킹 사건에도 불구하고 플래시 스왑 기능을 도입하였으며, 현재까지도 이를 계속해서 유지하고 있습니다.

UNI Token, Protocol Fee

V2에서는 거버넌스 토큰인 UNI 토큰을 발행하고, 거래 수수료의 일부를 프로토콜 수수료로 이전하여 UNI 토큰 보유자에게 지급할 수 있도록 하는 기능을 추가했습니다. 이러한 배경에는 스시스왑의 등장 이후, 유니스왑의 유동성이 스시스왑으로 대거 유출되는 뱀파이어 어택이라 불리는 일련의 사태가 있었습니다.

흥미로운 점은 뱀파이어 어택으로 촉발된 유니스왑과 스시스왑의 경쟁이 결과적으로 서로에게 긍정적인 영향을 주었으며, 특히 UNI 토큰을 발행한 유니스왑의 경우 그 전보다 더 강력한 커뮤니티를 형성할 수 있게 되면서 더 큰 발전의 계기가 되었습니다.

Uniswap V3 — 집중화된 유동성 도입

올해 3월 유니스왑은 V3로의 업데이트를 알렸습니다. V3는 V2와 달리 유니스왑의 AMM을 근본적으로 변경하는 대대적인 업데이트가 이뤄졌습니다. 이 글에서는 해당 변경사항에 대해 간략하게 소개해드리고, 자세한 내용은 이어지는 글에서 다룰 예정입니다.

V3의 주요 특징은 다음과 같습니다.

  • 집중화된 유동성(Concentrated Liquidity)
  • 높은 자본 효율성(Higher Capital Efficiency)
  • 유효한 유동성(Active Liquidity)
  • 고유한 유동성(Non-Fungible Liquidity)
  • 유연한 수수료 체계(Flexible Fees)
  • 라이센스 도입(License)

한 눈에 보기에도 변경된 내용이 정말 많습니다. 하지만 하나씩 차근차근 살펴보면 모두 이해가 쉽게 되실겁니다.

Concentrated Liquidity

V3의 가장 큰 변화는 바로 유동성을 다루는 방식이 달라졌다는 점입니다. 이전까지는 유동성을 모든 가격대에 걸쳐서 공급했다면, V3 에서는 가격의 폭을 지정해서 유동성을 “집중”해서 공급할 수 있습니다. 이를 유니스왑에서는 집중화된 유동성(Concentrated Liquidity)이라고 표현하고 있습니다.

source: Finematics

이제 이 모양의 그래프는 익숙하실겁니다. 기존에는 이 곡선상의 모든 점에 대해 유동성을 공급했다면, 즉 모든 가격대에 걸쳐 유동성을 공급했다면, V3에서는 그림에 표시된 폭 만큼의 가격대에 유동성을 공급할 수 있습니다.

이를 통해, 유니스왑에서도 스테이블 코인간의 스왑을 매우 효율적으로 할 수 있게 되었습니다. V2의 경우 유동성이 모든 가격대에 걸쳐 공급되는 CPMM(x*y = k)의 특성상, 항상 1달러의 가격에 페깅되는 스테이블 코인간의 거래에서 많은 슬리피지가 발생할 수 밖에 없었습니다. 이러한 단점은 스테이블 코인간의 스왑에 특화된 커브 파이낸스(Curve Finance)가 시장에서 성공을 거둘 수 있었던 주요 요인이기도 했습니다. 하지만 V3에서는 이러한 단점을 모두 극복했으며, 주요 스테이블 코인간의 거래량이 오히려 커브 파이낸스를 능가하는 기염을 토하기도 했습니다.

Note: 여담으로 최근 커브 파이낸스 또한 스테이블 코인간의 스왑에 한정되지 않은 새로운 AMM 모델을 발표하면서 유니스왑과의 전면전을 선포한 상황입니다. 스시스왑 또한 최근 새로운 AMM인 트라이던트(Trident)를 발표하며 이에 빠르게 발맞추는 양상입니다. 앞으로 주요 DEX들의 경쟁이 어떻게 이어질지 지켜보는것도 매우 흥미로운 주제가 될 것 같습니다.

​​Capital Efficiency

집중화된 유동성은 비단 스테이블 코인간의 스왑에만 도움이 되는 것은 아닙니다. 유동성을 특정 가격 구간에 집중해서 공급함으로써 자본 효율성 또한 크게 개선 되었습니다.

source: Finematics

Finematics에서 제시한 예시를 통해 이를 자세히 살펴보겠습니다.

여기 철수와 영희가 있습니다. 철수와 영희 모두 $10,000를 보유하고 있고, ETH의 현재 가격은 $1,750 인 상황입니다. 이 때 철수는 V2와 마찬가지로 모든 가격대에 유동성을 공급합니다. $10,000를 모두 사용해서 5,000 DAI와 2.85 ETH를 공급했네요. 반대로 영희는 V3의 집중화된 유동성 기능을 적극적으로 활용하여 ETH 가격을 $1,500~2,500 로 한정하여 $1,200 만큼의 유동성을 공급했습니다.

재밌는 점은 실제로 ETH 가격이 $1,500~2,500로 유지된다는 전제하에 영희가 600 DAI와 0.37 ETH, 즉 $1,200 규모의 유동성을 공급했음에도 마치 철수와 동일한 유동성을 공급한것 같은 효과를 낼 수 있다는 것입니다.

철수와 영희는 각각 $10,000와 $1,200를 투자했지만, 그 결과는 같습니다. 즉, 영희가 철수보다 8.34(10000/1200)배 만큼 자본을 효율적으로 사용했다고 볼 수 있습니다. 이제 영희는 나머지 $8,800 를 다른 곳에 사용하거나, 또는 추가로 투자를 할 수 있게 될 것입니다. 이것이 바로 유니스왑 V3에서 강조하는 자본 효율성의 힘입니다.

Note: 현재 유니스왑 V3의 24시간 거래량은 약 1.3조원 규모로 DEX 에서는 압도적인 1위를 기록하고 있으며, 심지어 일반적인 중앙화 거래소의 거래량과 비교해도 전혀 부족함이 없을 정도입니다. 이는 새롭게 도입된 집중화된 유동성으로 인한 자본 효율성의 힘이 얼마나 강력한지를 단적으로 보여주고 있습니다.

Active Liquidity

그런데, 만약에 실제 토큰의 가격이 지정한 가격 범위내에서 변동하지 않고, 범위를 벗어나게 된다면 어떻게 될까요? 여기서 유효한 유동성(Active Liquidity)의 개념이 등장합니다.

Source: Uniswap

예를 들어, 위 그림에서 철수는 DAI와 USDC의 유동성을 공급했다고 가정해보겠습니다. 1 DAI의 가격은 현재 1 USDC입니다. 그리고 유동성을 공급할 가격대를 0.984 USDC ~ 1.016 USDC 로 설정하였습니다. 즉, 철수는 DAI의 가격이 적어도 0.984 USDC에서 1.016 USDC 사이에서만 변동할 것이라고 예측한 것입니다. 실제로, DAI의 가격이 해당 폭 내에서 움직이면 아무런 문제가 없지만, 만약 이를 벗어나면 어떻게 될까요?

가장 오른쪽 이미지는 이러한 상황을 잘 나타내주고 있습니다. DAI의 가격이 1.020 USDC으로 폭등하였으므로, 철수가 공급한 유동성은 더 이상 유효하지 않습니다. 철수가 공급한 유동성은 모두 USDC로 변환되었고, DAI는 하나도 남아있지 않습니다. 당연히 더 이상 거래 수수료도 얻지 못합니다. 물론 DAI의 가격이 다시 정상적으로 돌아온다면, 철수의 유동성은 유효한 유동성이 되고, 거래 수수료 또한 얻을 수 있을 것입니다. 이처럼 V3 에서는 각 가격대별로 공급된 유동성이 현재 시장가격에 따라서 그 유효성이 결정되게 됩니다.

Note: 현재 설명한 내용만으로는 유효한 유동성의 개념이 잘 이해가 되지 않는것이 당연합니다. 다음 글에서 V3에 대해 자세히 살펴볼 예정이니, 여기서는 전반적인 개념만 이해하고 넘어가셔도 충분합니다.

Non-Fungible Liquidity

앞서 V3에서는 유동성을 공급할 때 가격대를 지정한다고 계속해서 강조했었습니다. 이는 달리 말하면, 각 유동성이 모두 제각기 다른 가격대에 공급될 수 있음을 의미합니다. 때문에 V3 에서의 유동성 포지션은 V2와 달리 Non-Fungible 한 특성을 갖습니다.

source: Finematics

실제로 V2 까지 유동성을 공급할 경우, 이에 대한 지분을 의미하는 LP 토큰을 ERC 20의 형태로 발급받았습니다. 하지만, V3 에서는 각 LP 토큰이 고유한 ERC 721의 형태로 발급됩니다.

Source: Opensea

위 그림은 실제로 오픈씨(Opensea)에서 거래되고 있는 유니스왑 V3 유동성 포지션 토큰입니다. 이처럼 V3의 유동성 포지션은 NFT의 형태로 발급되기 때문에, 개별 포지션을 이와 같이 개별적으로 판매할 수도 있습니다.

Flexible Fees

유니스왑 V3는 거래 수수료 체계도 새롭게 업데이트 하였습니다. 기존의 수수료는 어떤 페어든 일괄적으로 0.30%가 거래마다 부과되었지만, V3에서는 유동성을 공급할 때, 3가지 수수료 중 하나를 지정할 수 있게 되었습니다.

일반적인 경우 0.3%를 지정하지만, 스테이블 코인 페어의 경우 0.05%를 선택할 수 있고, 유동성이 부족한 토큰들의 경우 1%의 수수료율을 지정할 수 있게 되었습니다.

License

V3는 라이센스 부분에서도 중대한 변경사항이 있었습니다. 여러분도 잘 아시다시피 블록체인은 오픈소스 정신에 기반하고 있으며, 이는 디파이 프로젝트 또한 크게 다르지 않습니다. 하지만 유니스왑 V3는 오픈소스 라이센스가 아닌 Business Source Licence 1.1 를 도입했으며, 이는 약 2년여간 유지될 예정입니다. 이러한 배경에는 유니스왑의 코드를 그대로 이용한 스시스왑과 같은 프로젝트들이 오히려 유니스왑을 위협하는 뱀파이어 어택과 같은 사건들이 주요하게 작용했던 것 같습니다. 이와 같은 결정은 블록체인 커뮤니티의 많은 반발을 사기도 했지만, 유니스왑 커뮤니티인 UNI 홀더들은 일시적인 비즈니스 라이센스 도입에 찬성함으로써 이는 결과적으로 정당성을 얻게 되었습니다. 앞으로 이러한 현상이 유니스왑 뿐만 아니라 다른 팀들에게도 이어질지 지켜볼 필요가 있을것 같습니다.

Outro

DEX의 초기 역사부터 시작해서 AMM, 유니스왑 V3에 이르기까지 정말 많은 내용을 한번에 살펴보았습니다. 이 글은 여러분에게 여러 개념들을 최대한 쉽게 전달하는데 집중했기 때문에, 아쉽게도 각 개념들을 깊이 있게 다루지는 못했습니다. 특히 V3의 경우 부득이하게 자세한 설명이 생략되었습니다. 하지만, 앞으로 이어지는 여정을 계속해서 따라가신다면 이 글을 읽으면서 새롭게 생겨난 궁금증들이 모두 해결될 것이라 믿습니다.

긴 글 읽어주신 모든 분들께 감사드리며, 이어지는 글들에도 많은 관심 부탁드립니다.

우리 다음 글에서 만나요!

[UNISWAP SERIES]

  1. 유니스왑 이해하기
  2. CPMM 이해하기
  3. 유니스왑 V3 톺아보기
  4. AMM 이해하기

--

--