brunch

You can make anything
by writing

C.S.Lewis

by Austin Jan 04. 2022

[DeFi] 쉽게 이해하는 AMM

유동성 풀에서 디지털 자산의 가치를 산출해주는 AMM에 대해 알아보자.


안녕하세요. Austin입니다. 


브런치 작가에 합격이 되고 처음 적어보는 글입니다. 글을 쓸 수 있는 기회를 주신 브런치팀에게 감사드립니다. 기회가 생긴 만큼 책임감을 가지고 크립토 시장에서 제가 가지고 있는 지식과 경험을 나누어보고자 합니다. 많이 기대해주세요. 


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


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



중앙화 거래소 (CEX, Centralized Exchange)에서 코인의 가격이 형성되는 법


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


Binance BTC/USDT order book


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





그럼 Liquidity pool 에선 가격이 어떻게 형성되는가?


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


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


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


예시. Liquidity Pool 속 사탕과 젤리

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


xy = 90000 (credit:desmos)


start!



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개가 됩니다.




tx1 (credit:desmos)



tx1


결국, 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개가 될 것입니다.


tx2 (credit:desmos)


tx2


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, 비영구적 손실에 대해 알아보도록 하겠습니다.


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

오류 수정이나 소통에 관한 내용은 댓글로 남겨주시면 감사하겠습니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari