유니스왑이란 무엇이며 어떻게 작동하나요?
아티클

유니스왑이란 무엇이며 어떻게 작동하나요?

중급
5d ago
9m

요약

유니스왑(Uniswap)은 탈중앙화된 방식으로 토큰을 교환할 수 있는 이더리움 블록체인상에서 운영되는 컴퓨터 프로그램입니다. 유니스왑은 유니콘의 도움을 받아 작동됩니다(유니스왑 로고처럼).

트레이더는 유니스왑에서 누구도 신뢰하지 않고 이더리움 토큰을 교환할 수 있습니다. 뿐만 아니라, 누구나 유동성 풀이라 하는 특별한 저장소에 자신의 암호화폐를 대출해줄 수 도 있습니다. 해당 풀에 자금을 제공한 대가로 유동성 공급자에게는 수수료가 지급됩니다.

마법의 유니콘은 어떻게 특정 토큰을 다른 토큰으로 전환하는 것일까요? 유니스왑을 사용하려면 무엇이 필요할까요? 아티클을 계속 읽어보시기 바랍니다.

들어가며

중앙화된 거래소는 지난 수 년간 암호화폐 시장의 핵심이었습니다. 중앙화된 거래소는 신속한 정산, 높은 거래량, 지속적으로 증가하는 유동성을 제공했습니다. 그러나 신뢰가 필요 없는 프로토콜 형태의 거래소가 등장하고 있습니다. 탈중앙화 거래소(DEX)는 트레이딩을 위한 중개인이나 관리자를 필요로 하지 않습니다. 

블록체인 기술의 내재적인 한계 때문에, 중앙화 거래소와 비교할만한 탈중앙화 거래소를 만드는 것은 쉽지 않은 일이었습니다. 대부분의 탈중앙화 거래소는 성능과 사용자 경험 측면 모두에서 개선이 필요했습니다.

많은 개발자들은 새로운 형태의 탈중앙화 거래소를 만들고자 했습니다. 유니스왑은 그 선구자 중 하나입니다. 유니스왑의 작동 방식은 기존의 탈중앙화 거래소에 비해 이해하기가 조금 더 어려울 수 있습니다. 그러나 우리는 이 모델이 가져다주는 매력적인 혜택들을 살펴볼 수 있을 것입니다.

이러한 혁신의 결과, 유니스왑은 탈중앙 금융(DeFi) 움직임 중에서 가장 성공한 프로젝트 중 하나가 되었습니다.

유니스왑이란 무엇이며, 어떻게 작동하는지, 이더리움 지갑을 사용해 어떻게 토큰을 간단히 교환할 수 있는지 알아보도록 하겠습니다.


유니스왑이란 무엇인가요?

유니스왑은 이더리움상에 구축된 탈중앙화 거래소 프로토콜입니다. 보다 정확하게는, 자동화된 유동성 프로토콜입니다. 오더북이나 거래를 위해 중앙화된 주체가 필요하지 않습니다. 사용자는 유니스왑을 통해 높은 수준의 탈중앙성과 검열 저항성을 유지하며 중개자 없이 거래할 수 있습니다.

유니스왑은 오픈 소스 소프트웨어입니다. 유니스왑 깃허브에서 이를 확인하실 수 있습니다.

그런데 오더북 없이 어떻게 거래를 할 수 있을까요? 유니스왑은 유동성 풀에 유동성을 제공하는 방식으로 작동합니다. 해당 시스템은 기본적으로 오더북 깊이를 제거한 탈중앙화된 가격 메커니즘을 제공합니다. 잠시 뒤 이것이 어떻게 작동하는지 자세히 살펴볼 것입니다. 지금은 사용자가 오더북 없이도 ERC-20 토큰을 매끄럽게 교환할 수 있다는 정도만 알아두셔도 됩니다.

유니스왑 프로토콜은 탈중앙화되어 있기 때문에, 상장 과정이 없습니다. 기본적으로 모든 트레이더가 이용할 수 있는 유동성 풀이 존재하는 한 모든 ERC-20 토큰이 출시될 수 있습니다. 따라서 유니스왑은 어떠한 상장 수수료도 부과하지 않습니다. 그러한 점에서 유니스왑 프로토콜은 일종의 공공재 역할을 합니다.

유니스왑 프로토콜은 2018년 헤이든 아담스(Hayden Adams)가 만들었습니다. 그러나 유니스왑 구현에 영감을 준 기반 기술은 이더리움 공동 창시자 비탈릭 부테린(Vitalik Buterin)이 처음으로 제시했습니다.


유니스왑은 어떻게 작동하나요?

유니스왑에는 오더북이 없다는 점에서 기존 디지털 거래소 구조보다 앞서 있습니다. 이는 자동화된 마켓 메이커(Automated Market Maker)의 변형 모델인 지속적인 프로덕트 마켓 메이커(Constant Product Market Maker)를 통해 설계되었습니다.

자동화된 마켓 메이커는 트레이더가 거래할 수 있는 예비 유동성(또는 유동성 풀)을 보유하고 있는 스마트 콘트랙트입니다. 유동성 공급자들이 이러한 예비 유동성을 공급합니다. 누구나 유동성 공급자가 될 수 있으며 풀에 동등한 가치를 갖는 두 개의 토큰을 입금하면 됩니다. 그 대가로 트레이더가 풀에 지불한 수수료가 풀의 지분에 따라 유동성 공급자에게 분배됩니다. 이것이 어떻게 진행되는지 보다 자세히 살펴보도록 하겠습니다. 

유동성 공급자는 동등한 가치의 토큰 두 개를 입금하여 시장을 조성합니다. 이는 ETH, ERC-20 토큰이거나 두 개의 ERC-20 토큰일 수 있습니다. 해당 풀은 보통 DAI, USDC, USDT와 같은 스테이블코인으로 구성되지만, 꼭 그래야 하는 것은 아닙니다. 유동성 공급자들에게는 그 대가로 전체 유동성 풀 지분을 나타내는 “유동성 토큰”이 지급됩니다. 해당 유동성 토큰은 풀의 지분으로 교환할 수 있습니다.

ETH/USDT 유동성 풀로 예를 들어보겠습니다. 우리는 풀의 ETH 비중을 x, USDT 비중을 y라고 하겠습니다. 유니스왑은 두 비중을 곱하여 전체 유동성 풀을 계산합니다. 이를 k라고 하겠습니다. 유니스왑의 기반이 되는 핵심 아이디어는 k가 반드시 일정해야 한다는 것이며, 따라서 전체 유동성 풀이 일정해야 한다는 것입니다. 따라서 전체 유동성 풀 공식은 다음과 같습니다. 

x * y = k

누군가 거래를 하면 어떤 일이 발생할까요?

앨리스가 ETH/USDT 유동성 풀에서 300 USDT에 1 ETH를 구매했다고 해보겠습니다. 이를 통해 앨리스는 풀의 USDT 비중을 높이고, 풀의 ETH 비중을 낮췄습니다. 이는 ETH의 가격이 실질적으로 상승했다는 것입니다. 그 이유는 무엇일까요? 거래 이후 풀에는 이전보다 적은 ETH가 남아 있으며, 전체 유동성(k)은 반드시 일정하게 유지되어야 합니다. 해당 메커니즘이 가격을 결정합니다. 최종적으로 ETH에 지불한 금액은 해당 거래에서 xy 사이의 비율 변화에 기초합니다.

한 가지 알아둘 것은 이 모델이 선형적으로 확장되지 않는다는 것입니다. 실제로 더 많은 주문을 할수록, xy 사이의 잔고가 더 크게 변합니다. 이는 더 큰 주문일수록 작은 주문보다 기하급수적으로 비싸져 더 큰 슬리피지가 발생한다는 의미입니다. 이는 또한 유동성 풀이 클수록, 큰 주문을 보다 쉽게 처리할 수 있다는 것입니다. 그 이유는 무엇일까요? 이러한 경우 xy가 보다 작게 변합니다.


비영구적 손실이란 무엇인가요?

앞서 논의한 것처럼, 유동성 제공자는 토큰을 교환하는 트레이더에게 유동성을 제공한 대가로 수수료를 받습니다. 유동성 공급자가 주의해야 할 사항이 있을까요? 있습니다. 비영구적 손실이라 하는 효과가 있습니다.

앨리스가 1ETH와 100 USDT를 유니스왑 풀에 입금했다고 해보겠습니다. 해당 토큰 쌍의 가격은 동일해야 하며, 이는 ETH의 가격이 100 USDT라는 의미입니다. 동시에 전체 10 ETH와 1,000 USDT가 풀에 있으며, 해당 자금들은 앨리스와 같은 유동성 공급자가 제공한 것이라 해보겠습니다. 이는 앨리스가 풀의 10%를 공유한다는 의미입니다. 우리의 전체 유동성(k)은 이 경우에는 10,000입니다.

ETH 가격이 400 USDT로 상승한다면 어떤 일이 벌어질까요? 잊지 말아야 할 것은 풀의 전체 유동성은 동일하게 유지된다는 것입니다. ETH가 400 USDT일 경우, 풀 안의 ETH와 USDT 간의 가격 비율이 변합니다. 실제로, 이제 풀에는 5 ETH와 2,000 USDT가 존재합니다. 그 이유는 무엇일까요? 재정거래 트레이더가 풀이 정확한 가격을 반영할 때까지 USDT를 추가하고 ETH를 획득할 것이기 때문입니다. 이것이 바로 k가 일정하다는 점을 이해하는 것이 중요한 이유입니다.

이제 앨리스는 자신의 자금을 출금하고 유동성 공급 정도에 따른 풀의 지분 10%를 얻고자 합니다. 결과적으로 앨리스는 0.5 ETH와 200 USDT, 전체 400 USDT를 수령합니다. 앨리스는 괜찮을 수익을 올린 것 같습니다. 그런데, 앨리스가 자금을 풀에 넣지 않았다면 어떤 일이 발생할까요? 앨리스는 1 ETH와 100 USDT, 전체 500 USDT의 자금을 보유하게 됩니다.

실제로, 앨리스는 유니스왑 풀에 자금을 입금하지 않고 보유하고 있는 것이 더 나았을 것입니다. 이러한 경우, 비영구적 손실은 기본적으로 가치가 상승하는 토큰을 풀에 넣은 기회 비용입니다. 이는 수수료를 기대하며 유니스왑에 자금을 넣은 경우, 앨리스는 다른 기회를 잃게 될 수 있다는 의미입니다.

한 가지 알아둘 것은 이러한 현상이 입금 이후부터 가격이 어느 방향으로 움직이는지와 무관하게 발생한다는 것입니다. 이것은 어떤 의미일까요? ETH의 가격이 입금 당시보다 하락한다면, 손실 또한 가중될 것입니다. 보다 자세한 설명을 확인해보고 싶으시다면, 이 아티클을 확인해 보시기 바랍니다.

그런데 손실이 비영구적인 이유는 무엇일까요? 풀에 입금한 토큰 가격이 입금할 당시의 가격으로 다시 돌아온다면, 이러한 효과는 줄어듭니다. 또한 유동성 공급자는 수수료를 받기 때문에, 시간이 지나며 이러한 손실이 상쇄될 수 있습니다. 그렇기는 하지만, 유동성 공급자는 풀에 자금을 입금하기 전에 이러한 사실을 인식하고 있어야 합니다.


유니스왑은 어떻게 돈을 버나요?

유니스왑은 돈을 벌지 않습니다. 이는 탈중앙화 프로토콜로 자체 토큰을 갖고 있지 않습니다. 모든 수수료는 유동성 공급자에게 지불되며, 해당 프로토콜에서 발생하는 거래에서 창립자 누구도 수수료를 취하지 않습니다.

현재 각 거래 수수료의 0.3%가 유동성 공급자에게 지불됩니다. 기본적으로 이는 유동성 풀에 추가되지만, 유동성 공급자는 어느 때나 이를 청구할 수 있습니다. 수수료는 각 유동성 제공자의 풀 지분에 따라 분배됩니다.

수수료의 일부는 향후 유니스왑 개발에 사용될 수도 있습니다. 유니스왑 팀은 이미 유니스왑 v2라는 개선된 프로토콜 버전을 구현했습니다.


암호화폐 거래를 생각 중이신가요? 바이낸스에서 비트코인을 구매하세요!


유니스왑 이용 방법

유니스왑은 오픈소스 프로토콜이며, 누구나 프론트엔트 애플리케이션을 만들 수 있습니다. 그러나 가장 일반적으로 사용되는 것은 https://app.uniswap.org 또는 https://uniswap.exchange입니다.

  1. 유니스왑 인터페이스로 이동합니다.
  2. 지갑을 연결합니다. 메타마스크, 트러스트 월렛 등 이더리움을 지원하는 지갑을 사용할 수 있습니다.
  3. 교환을 원하는 토큰을 선택합니다.
  4. 교환하고자 하는 토큰을 선택합니다.
  5. 스왑을 클릭합니다.
  6. 팝업 창에서 트랜잭션을 확인합니다.
  7. 지갑의 트랜잭션 요청을 확인합니다.
  8. 이더리움 블록체인의 트랜잭션 승인을 기다립니다. https://etherscan.io/에서 진행 상황을 살펴볼 수 있습니다.


마치며

유니스왑은 이더리움 위에 구축된 혁신적인 거래 프로토콜입니다. 이더리움 지갑이 있는 누구나 유니스왑을 사용해 중앙 주체의 개입 없이 토큰을 교환할 수 있습니다. 

유니스왑의 한계점도 존재하지만, 이는 향후 신뢰가 필요 없는 토큰 교환에 흥미로운 결과를 가져다줄 수도 있습니다. 이더리움 2.0 확장성 솔루션이 네트워크에 구현되면, 유니스왑에도 혜택이 있을 것입니다.

유니스왑 및 탈중앙화 금융에 대해 궁금한 점이 있으신가요? 우리의 Q&A 플랫폼 Ask Academy를 확인해보세요. 커뮤니티 구성원들이 궁금증을 해결해 줄 것입니다.