유니스왑은 어떻게 작동할까?
AMM
유니스왑은 디지털자산 간 교환(swap) 기능을 구현하기 위해 중앙화권 거래소가 사용하는 오더북 방식이 아닌 자동화된 마켓 메이킹(AMM, Automated Market Making) 방식을 선택했습니다. AMM은 토큰 교환 시 수학공식에 의해 토큰의 가격이 자동으로 결정되도록 하는 알고리즘입니다.
*오더북 : 구매자와 판매자의 모든 매수·매도 주문을 기록한 전자 목록
중앙화된 거래소에서는 매수자와 매도자가 각각 제출한 호가가 일치할 때 거래가 성립됩니다. 이때, 거래소는 해당 거래를 중개하는 역할을 수행합니다. 반면에 AMM 방식의 탈중앙화 거래소(DEX)에서는 사용자들이 유동성 풀(liquidity pool)을 공급하고, 디지털자산의 교환을 원하는 자는 해당 풀에서 디지털자산을 교환합니다. 거래의 상대방이 명확히 존재하지 않으며, 교환비율이나 디지털자산의 가치는 수학적인 알고리즘에 의하여 형성됩니다.
유니스왑은 AMM의 한 종류인 CPMM(Constant Product Market Maker)을 사용합니다.
K = X*Y
K= 상수
X= 거래계약 안에 있는 토큰 X의 수량
Y= 거래계약 안에 있는 토큰 Y의 수량
이 함수는 변수 X와 Y의 곱에 있어서 상수 K 값이 유지되어야 합니다. 이는 전체 유동성이 일정하다는 의미로 해석할 수 있습니다. X와 Y 값은 각각 유동성 풀에 존재하는 토큰 가치의 비중을 나타내며, 두 비중의 곱에 의해 풀의 유동성이 결정됩니다. 이를 K 값으로 나타내며, 그래프로 표현하면 다음과 같습니다.
하나의 예로, 유니스왑의 거래 계약을 설명해 보겠습니다.
이더리움(X) 10개와 ERC-20(Y) 토큰 200개가 교환 풀에 있습니다. 이 둘의 곱은 2,000(K)입니다. 따라서 모든 교환에 있어 두 디지털자산의 곱은 2,000을 유지해야 합니다. 이러한 상황에서 ERC-20 토큰을 구매하기 위해 1 ETH를 보내보겠습니다. 그러면 컨트랙트의 이더리움 수량이 1개가 더 추가되어 11개가 됩니다. 이때, K는 2,000으로 일정하기 때문에 ERC-20 토큰의 수량이 181.82(2,000/11)로 변합니다. 즉 1 ETH를 주고 받는 ERC-20 토큰의 양은 18.18(200-181.82)인 것입니다.
이 다음 상황에서 누군가 1 ETH를 또 넣는다면 컨트랙트 상의 이더리움은 총 12개가 됩니다. ERC-20 토큰의 양은 166.67(2,000/12)입니다. 즉, 1 ETH를 주고 받는 ERC-20 토큰의 양은 15.15(181.82-166.67)입니다. 이더리움 한 개로 얻을 수 있는 ERC-20 토큰의 양이 줄어 ERC-20 토큰의 구매 가격이 높아진 것으로 볼 수 있습니다.
이때 ERC-20을 비싸게 팔고, 이더리움을 저렴하게 매수하려는 차익거래가 발생합니다. 이 차익거래 때문에 이더리움/ERC-20 비율이 효율적인 선까지 맞춰집니다. 즉, 유니스왑은 CPMM(X*Y=K)을 통해 ETH와 ERC-20 토큰의 비율을 중앙집권 거래소 가격과 수렴할 수 있게 한 것입니다.
유동성 공급자에 대한 보상
유동성 공급자(LP, Liquidity Provider)는 자신이 제공한 유동성을 회수할 때 그 시점까지 수수료를 보상받을 수 있습니다. 이때 받게 될 보상은 토큰교환 수수료율, LP가 제공한 유동성의 비중, 건당 거래금액이라는 3가지 변수에 의해 정해집니다.
토큰 교환 수수료율은 토큰 페어 별로 교환 시점에 발생하는 수수료로, 토큰 페어 별로 수수료가 다르게 선정되어 있습니다.
LP가 제공한 유동성의 비중은 유동성 풀 전체에서 LP가 공급한 토큰의 비중을 말합니다. 건당 거래 금액은 교환되는 토큰의 총 가치로 토큰을 더 많이 교환할수록 더 비싼 토큰을 교환할수록 커집니다.
오더북 구현한 ‘유니스왑 V3’
2021년 5월 6일, 유니스왑은 새로운 버전인 V3를 이더리움 메인넷 위에 런칭했습니다. 유니스왑 V3 버전에서 업데이트된 대표적인 사항은 다음과 같습니다.
1) 집중화된 유동성 그리고 오더북 구현
유니스왑이 V3 버전으로 업데이트되면서 기존의 오더북을 사용하는 방식과 유사한 방식으로 유니스왑에서 토큰을 거래할 수 있게 되었습니다. 기존의 유니스왑은 사용자 사이에 토큰을 교환하는 방식으로 거래가 이루어졌기 때문에 유동성 물량에 토큰 가격이 매 순간 따라 달라졌습니다. 따라서 유동성 공급자(LP) 입장에서는 토큰이 언제, 얼마에 거래될지 모르는 위험이 존재했습니다. 하지만 V3는 LP가 가격대를 정해서 공급할 수 있도록 하여 효율적으로 자산을 운용할 수 있게 되었습니다.
유니스왑은 토큰 가격이 책정되는 K=X*Y 관계식의 범위도 대폭 축소했습니다. 가격 곡선의 범위를 제한하면, 어떤 토큰의 시장가가 급락하는 상황에서도 사용자가 추가적인 손실을 볼 가능성이 줄어듭니다. 실제로 유니스왑에서 한쪽 토큰의 가격이 0이 되면 다른 토큰 가격도 0이 되는 리스크가 존재했습니다.
또한 포지션이라는 개념을 도입해 오더북과 유사한 기능을 탑재했습니다. 포지션은 거래가 실제로 이루어질 수 있는 유효한 가격 범위를 말합니다. 동시에 해당 구간을 더욱 세밀하게 구분해 매매할 수 있게 구분했습니다. 이로 인해 거래자는 자신이 원하는 가격에 매매를 진행하기 한결 더 쉬워졌습니다.
2) 유연한 수수료
유니스왑은 LP의 효율성을 올리기 위해 수수료 체계를 정비했습니다. 기존에는 수수료가 0.3%로 일괄적으로 적용습니다. 하지만 V3는 0.05%, 0.1%, 1% 등으로 세분화하여 적용합니다. 이는 리스크에 따라 더 보상하겠다는 취지입니다. 유니스왑은 수수료 개편과 오더북 기능 구현으로 LP의 효율성이 이전보다 4,000배 이상 증가할 것이라고 강조했습니다.
3) 유동성 공급 방식 개편
기존 V2는 사용자나 LP가 토큰을 페어(pair)으로 등록하는 방식으로만 유동성을 공급할 수 있었습니다. 하지만 V3는 사용자나 LP가 단일한 토큰을 예치하는 방식으로도 거래소에 유동성을 공급할 수 있게 바꾸었습니다. 다시 말해, 유동성 풀에 포지션 개념을 적용하는 또 다른 방식인 것입니다.
레이어2 솔루션 도입
2020년 이더리움 상의 트랜잭션 수수료가 급증하면서 많은 사용자가 비싼 수수료를 지급하면서 유니스왑을 이용했습니다. 이에 유니스왑 V3는 레이어2 솔루션인 옵티미스틱 롤업(Optimistic Rollup)을 서비스에 탑재해 사용자가 탈중앙화 거래소에서 발생하는 수수료를 상대적으로 저렴하게 지불할 수 있도록 했습니다.
➕함께 보면 좋은 콘텐츠