[번역/DeFi] Uniswap V1 톺아보기 (1)

Diana
5 min readNov 21, 2022

--

Defi의 근간이 되는 유니스왑이 무엇이며 어떤 기능이 있는지, 그리고 컨트랙트를 작성해가며 유니스왑의 전반적인 구조를 배울 수 있는 글이 있어 공부하면서 번역해 나가고자 합니다.

원문은 V1부터 V3까지 모든 버전을 다루고 있으며 V1부터 차근차근 학습/번역해 나갈 예정입니다.

원문: https://jeiwan.net/posts/programming-defi-uniswap-1/

Uniswap protocol (https://uniswap.org/)

유니스왑의 다른 버전들

2021년 6월까지 현재 세 가지 버전의 유니스왑이 출시 되었습니다.

첫번째 버전은 2018년 11월에 출시 되었고, ETH와 토큰 간의 스왑만 지원했습니다. 토큰-토큰 간의 스왑을 지원하기 위해 체인 스왑도 가능했었죠.

2020년 3월에는 V2가 출시 되었고, 모든 ERC20 토큰 간 직접 스왑과 모든 페어 간 체인 스왑도 지원하는 큰 발전이 있었습니다.

V3은 2021년 5월에 런칭 되었고, 자본 효율성을 크게 개선하여 유동성 공급자가 풀에서 유동성의 더 많은 부분을 제거하더라도 똑같은 보상을 받을 수 있도록 하였습니다. (또는 더 작은 가격대에서 자본을 짜내서 최대 4000배의 이익을 얻을 수 있게 하였습니다.)

이 시리즈에서는 유니스왑의 각 버전을 파보고 기초부터 단순화된 복사본을 빌딩해 나가려고 합니다.

이 블로그 포스트는 유니스왑 V1만을 다루며, 이전 솔루션이 어떻게 개선되었는지를 시간순으로 알아볼 것 입니다.

유니스왑이 뭔가요?

간단히 말하자면, 유니스왑은 중앙화 거래소의 대안을 지향하는 탈중앙화 거래소(DEX) 입니다. 이더리움 블록체인에서 돌아가고 있으며 완전히 자동화되어 있습니다 — 즉, 관리자도, 특별 권한을 가진 사용자도 없습니다.

좀더 깊게 볼까요. 유니스왑은 사용자가 유동성을 사용하여 토큰을 교환할 수 있도록 풀 또는 토큰 페어를 만들 수 있게 해주고 이를 유동성으로 채우는 알고리즘 입니다.

이러한 알고리즘은 소위 자동화된 마켓 메이커(Automated Market Maker) 또는 자동화된 유동성 제공자(Automated Liquidity Provider)라고 불립니다.

마켓 메이커에 대해 더 알아봅시다.

마켓 메이커는 시장에 유동성(거래 자산)을 제공하는 주체입니다. 유동성은 거래를 가능하게 만듭니다. 만약 당신이 무언가를 팔고 싶은데 아무도 사는 사람이 없다면, 그것은 거래가 아니겠죠. 몇몇 거래 쌍은 높은 유동성을 가지고 있지만(예를 들면 BTC-USDT), 몇몇은 낮거나 유동성 자체가 없습니다. (스캠이나 알트 코인들)

DEX는 잘 동작하고 중앙화된 거래소의 대안이 되기 위해 충분한 (또는 많은) 유동성을 가지고 있어야만 합니다. 유동성을 얻는 방법 중 하나는 DEX 개발자(또는 그들의 투자자)의 돈을 넣어 그들 자신이 마켓 메이커가 되는 것 입니다. 하지만 DEX가 모든 토큰 간 교환을 허용한다는 점을 고려하면, 모든 쌍에 충분한 유동성을 제공하는 것은 많은 돈을 필요로 하기 때문에 이 방법은 현실적이지 못합니다. 더욱이 이 방법은 DEX를 중앙화되도록 만듭니다. 개발자들은 유일한 마켓 메이커로써 큰 힘을 갖게 될 것 입니다.

더 나은 해결책은 누구나 마켓 메이커가 될 수 있게 하는 것이고, 이것이 유니스왑을 자동화된 마켓 메이커로 만들게 된 것 입니다. 모든 사용자들은 거래 쌍에 그들의 자금을 예치할 수 있습니다. (그리고 이득도 얻을 수 있죠.)

유니스왑이 수행하는 또다른 중요한 역할은 가격 오라클입니다. 가격 오라클은 중앙화된 거래소로부터 토큰 가격을 가져와서 스마트 컨트랙트에 제공하는 서비스입니다. 중앙화된 거래소는 거래량(volume)이 매우 커 이러한 가격들을 조작하기 어렵습니다. 하지만, 유니스왑은 그렇게 큰 거래량을 가지고 있지는 않지만 가격 오라클의 역할을 수행 할 수 있습니다.

유니스왑은 유니스왑과 중앙화된 거래소 사이의 가격 차이로 수익을 얻는 차익거래자들을 끌어들이는 2차 시장 역할을 합니다. 이것을 통해 유니스왑 풀과 큰 거래소와의 가격 차이를 최대한 가깝게 만듭니다. 그리고 이것은 적절한 가격 책정과 준비금 균형 기능이 없었다면 불가능 했을 겁니다.

Constant Product Market Maker

이 정의는 이미 들어보셨을 텐데, 무슨 뜻인지 알아봅시다.

자동화된 마켓 메이커는 다른 탈중앙화 마켓 메이커 알고리즘을 포함하고 있는 일반적인 용어입니다. 가장 인기있는 것은 예측 시장과 연관이 있습니다. 예측 시장이란 예측으로 이익을 얻을 수 있는 시장을 일컫는 용어입니다. 유니스왑과 다른 온체인 거래소는 이러한 알고리즘과 이어져 있습니다.

유니스왑의 핵심은 constant product function 입니다.

x∗y=k

x는 이더의 reserve(예비량)이고, y는 토큰의 reserve이며 (그 역도 성립합니다), k는 상수입니다. 유니스왑은 x나 y의 reserve의 값이 얼마가 되던 k는 상수로 변화되지 않은 채 남아있어야 한다고 요구합니다. 여러분이 이더를 토큰과 교환하고자 할 때, 여러분은 이더를 컨트랙트에 예치하고 그 댓가로 일정량의 토큰을 받습니다. 유니스왑은 각 교환 후에도 k가 동일하게 유지되도록 보장하고 있습니다. (근데 이것은 사실이 아닙니다. 나중에 왜 그런지 보도록 하죠)

이 공식은 가격 계산과도 연관이 있습니다. 이건 잠시 후에 다루겠습니다.

--

--