[DeFi] DEX Liquidity Pool 에서 디지털 자산의 가치를 산출해주는 AMM 에 대해 알아보자.

안녕하세요. Austin 입니다.

2022년 첫 게시물이자 DeFi 에 관련된 첫 게시물로 유동성 풀(LP, Liquidity Pool)에서 AMM(Automated Market Maker)의 역할에 대해 적어보려 합니다. 중앙화 거래소와 탈중앙화 거래소의 Liquidity Pool이 각각 어떤 다른 방식으로 디지털자산의 가치를 평가하는지 알기 위해선 AMM 을 꼭 알아야 합니다. 최대한 쉽고 간단히 설명할 수 있도록 노력하겠습니다!

또한 다음 게시물에서 알려드릴 DeFi 를 한다면 꼭 알아야 할 비영구적 손실(IL, Impermanent Loss) 를 이해하기 위해서도 AMM 의 원리를 간단히 알고 있어야 하는 만큼 다음 게시물을 읽기 전에 이 게시물을 먼저 읽으시길 추천드립니다.

우리가 주로 사용하는 업비트, 바이낸스, FTX 는 모두 중앙화거래소 입니다. CEX 에선 코인을 사고싶은 사람들과 코인을 팔고싶은 사람들로 인해 가격을 결정하죠. 오더북을 보면 쉽게 이해할 수 있습니다.

빨강색(위) 은 코인을 팔고 싶어 하는 사람들이 예약매도를 설정해둔 것이고, 아래 초록색은 코인을 사고 싶어 하는 사람들이 예약매수를 설정해둔 것 입니다. 코인을 사고 싶어 하는 사람은 싸게 사고 싶고, 팔고 싶어 하는 사람들은 비싸게 팔고 싶기 때문이죠. 팔고 싶어 하는 사람들이 팔고 싶은 가격과, 사고 싶은 사람들이 사고 싶은 가격이 만나는 곳이 곧 거래가 체결이 되는 시장가 (market price) 가 됩니다. 이렇듯 CEX 에선 오더북에 기초하여 거래가 진행됩니다.

Uniswap 을 사용해보신 분은 Liquidity Pool 엔 오더북이 존재하지 않는다는 걸 알고 계실 겁니다. 대신 디지털 자산(코인과 토큰의 개념은 엄연히 다르기에 쉬운 이해를 위해 디지털 자산으로 대체하겠습니다.) 의 가치를 산출하기 위해 AMM(Automated Market Maker) 라는 개념을 적용합니다.

AMM 은 디지털 자산의 가격을 수학적 공식을 이용해 산출하는데, 가장 유명한 DEX 중 하나인 Uniswap 은 “x * y = k” 라는 공식을 사용해 디지털 자산의 가치를 산출합니다 (프로토콜에 따라 다른 공식을 사용할 수 있습니다).

이해하기 쉽게 수학 공식 “x * y = k” 를 이용하는 예시를 들어볼까요?

Liquidity Pool 에 사탕 300개와 젤리 300개가 들어있다고 가정해봅시다. 사탕은 x, 젤리는 y 라고 했을 때, x * y = 90,000이 됩니다. 즉, 어떤 상황에서도 사탕과 젤리의 수량을 곱한 값은 90,000이 되어야 합니다.

Tx1

J 라는 사람은 젤리를 가지고 있습니다. J 는 젤리를 사탕으로 교환하고 싶어 합니다. 그래서 J 는 Liquidity Pool 에 자신이 가지고 있는 젤리 50개를 넣었습니다. 이를 tx1 이라고 기록하겠습니다. tx1 을 통해 Liquidity Pool 에 들어가 있는 젤리는 총 350개가 되었습니다. 그럼 J 는 50개의 젤리를 Liquidity Pool 에 넣고 몇 개의 사탕을 가져갔을까요? 그 전에 50개의 젤리가 Liquidity Pool 에 추가되었을 때 사탕은 몇 개가 되었는지 먼저 계산해야 합니다. 이는 AMM 에 설계된 수학 공식 “x y = k” 를 통해 산출할 수 있습니다. “x y = k” 라는 값에 대입해보면 x * 350 = 90,000 이기 때문에 x = 90,000 / 350, 즉 반올림 하여 257.14개가 됩니다.

결국, J 는 젤리 50개를 Liquidity Pool 에 추가하여 300–257.14 인 42.86개의 사탕을 얻었습니다!

tx2

tx1 로 42.86개의 사탕을 얻은 J 는 더 많은 사탕을 얻고 싶어 50개의 젤리를 Liquidity Pool 에 더 추가하였습니다. 이제 Liquidity Pool 엔 총 400개의 젤리가 들어가 있고, “x y = k” 라는 공식에 대입하면 x 400 = 90,000 이 됩니다. Liquidity Pool 에 들어가 있는 사탕은 x = 90,000 / 400, 즉 225개가 될 것입니다.

J 는 tx2에서 50개의 젤리를 추가하여 총 257.14-225 인 32.14개의 사탕을 얻었습니다.

하지만 J는 tx1 과 tx2 둘다 각 각 50개의 젤리를 추가했지만 얻은 사탕은 tx1 에선 42.86개, tx2 에선 32.14개로 tx2 에선 tx1 에 비해 10.72개의 사탕을 덜 받았습니다.

이는 사탕과 젤리의 수량 변화에서 답을 찾을 수 있습니다.

J 는 Liquidity Pool 에 오직 젤리만 추가하여 사탕을 받아갔습니다. 이로 인해 젤리의 수량을 꾸준히 늘어간 반면, 사탕의 수량은 계속 줄기만 하였죠. 젤리의 수량이 늘었다는 건 결국 젤리의 가치를 하락시키게 됩니다. 반대로 사탕의 수량은 감소하였기 때문에 사탕의 가치는 올라가게 되죠.

이런 방식으로 AMM 은 Liquidity Pool 안에 있는 디지털 자산의 가치를 산출합니다. AMM 은 무조건 x * y = k 공식을 사용하는건 아니라는 점, 더욱 복잡한 공식을 사용하는 DeFi 프로토콜도 있다는 점 강조 드리며 글을 마무리 하겠습니다.

다음 게시물에선 Impermanent Loss, 비영구적 손실에 대해 알아보도록 하겠습니다.

읽어주셔서 감사합니다. 새해 복 많이 받으세요!

질문이나 오류 지적 그리고 인사이트에 대한 이야기는 트위터 https://twitter.com/austinhwangkr 혹은 메일 austinhwangkr@gmail.com , 지인이라면 카카오톡이나 인스타그램 DM 로 부탁드립니다. 블로그에도 포스팅 중이니 자주 놀러와주세요. https://blog.naver.com/austinhwangkr