진짜 최근에 갑작스럽게 밈코인이 떠버리면서 온체인 경험이 없는 분들이 밈코인에 정말 많이 들어온 것 같습니다. 근데 이게 잃어보면서 배우는 것은 맞지만 알고 가야할 지식은 분명 있습니다. 이번에는 여러분들이 거래하는 DEX에 대해서 알고 가시면 좋겠습니다.
1️⃣ 거래의 방식 이해: 오더북 방식의 한계
주식을 통해, 또는 기존 거래 플랫폼은 호가창을 기준으로 거래를 합니다. 특정 가격에 걸어두면, 그 가격에 맞춰 매매가 됩니다. 이런 방식을 오더북 방식(CLOB)이라고 합니다. 하지만 이 방식의 단점은 호가창이 어느 정도 있어야 동작을 합니다. 매수도 있어야하고 매도도 있어야 하죠. 즉, 유동성 공급이 필수입니다.
그런데 블록체인은 우선 속도도 느렸고, 사용자도 적은 것을 감안하면 탈중앙화 거래소를 만들면 호가창이 너무 얕아지는 문제가 발생합니다. 그래서 비탈릭의 아이디어 + 헤이든 아담스의 구현으로 유니스왑이 만들어지게 되었습니다.
참고로 지금 다양한 탈중앙화 선물 거래소 (Perpetural DEX)들은 빠른 속도를 가진 체인 위에서 오더북 방식으로 거래되고 있습니다. (대표 dYdX, HyperLiquid 등)
2️⃣ 자동 마켓 메이커(Automated Market Maker, AMM)
유동성을 공급하면 자동으로 계속 유동성을 공급하면 어떨까요? 예시로 특정 가격대라면 위로도 유동성을 쭉 채워주고, 아래로도 유동성을 채워주고? 그거에 대해 가장 초안에 고안된 방식이 CPMM(Constant Product Market Makers)입니다. 직역하면 "곱 고정값 마켓 메이커"인데 바로 곱셈을 활용한 방식입니다.
예시로 UNI토큰과 ETH 페어를 생각해봅시다. UNI와 ETH의 가격비를 예시로 10:1이라 생각해봅시다. 그래서 처음 유동성 공급을 100 UNI:10 ETH으로 하는 것입니다.
그럼 누군가 와서 1ETH어치를 구매하고 싶으면 여기에 1ETH를 넣고 식에 따라 UNI를 받는 것입니다. 식은 단순합니다. "UNI 토큰 수량" x "ETH 토큰 수량"이 일정하면 됩니다. 현재 그럼 100x10 = 1000이었는데 1ETH가 들어오면 UNI의 수량은 1000 / (10+1) = 90.9가 되고, 즉 나는 100-90.9인 9.1 UNI를 받게 되는 것입니다.
3️⃣ 슬리피지(Slippage)
아니 근데, 분명 처음 가격은 10:1이니까, 1 ETH 넣으면 10UNI 받아야 할 것 같은데 0.9UNI 손해봤으니 거의 9% 손실인데 이게 뭐지? 이게 바로 흔히 부르는 슬리피지입니다. 정확히는 거래 자체가 가격에 영향을 주는 것이기에 Price Impact라고 부르기도 하지만, 암호화폐에서는 슬리피지라는 명칭으로 통칭하고 있습니다. 실제 갑작스럽게 거래를 해야하는 경우에 어쩔 수 없이 가격에 던지기도 하고, 또는 가격이 너무 변동성이 커서 원하는 가격에 못던지기도 하죠? 이렇게 매수자, 매도자가 의도했던 것과 다른 가격으로 매매되는 괴리를 슬리피지라고 합니다.
근데 곱을 통해 자동 마켓메이커를 해주는 만큼 슬리피지는 기본적으로 나타납니다. 어떻게보면 여러분이 시장가로 긁은 것이고, 시장가로 판매한 것이니까요. 그렇다면 슬리피지는 언제 클까요? 큰 것을 반대로 하면 슬리피지가 적은 시장을 발견할 수 있습니다.
- 곱 자체가 작을 때, 10:1이라 해서 100:10과 1000:100은 엄연하게 다릅니다.
- 거래 규모가 너무 클 때: 1000:100이라 해도 여러분이 100을 던지면 달라지겠죠?
즉, 풀이 너무 작거나, 풀에 비해 내가 너무 많은 양을 던질 때 슬리피지는 커지고, 반대로 풀이 크고, 풀에 비해 적은 양을 던질 때 슬리피지는 적습니다. 그래서 여러분의 슬리피지를 방지하기 위해 특정 범위 슬리피지에서는 거래를 막아주는 장치들이 일부 있습니다. 월렛, 본인이 쓰는 DEX, 봇 등에서 모두 설정할 수 있습니다.
4️⃣ 다양한 AMM 모델
(1) 이제 이렇게 슬리피지가 있으면 스테이블 코인이나 가격이 페깅된 조합 (ETH<>stETH), (USDT<>USDC) 에 대해서는 분명 풀이 엄청 크지 않으면 거래가 어렵겠죠? 그래서 이것과 관련하여 성공적이었던 게 Curve의 CSMM(Constant Sum Market Maker)입니다. 이제 이 공식은 곱이 아니라 합이 같으면 되는 것입니다. 하지만 단순히 +는 아니고 특정 토큰에 대해 유동성이 적을 때 갈라지는 경우가 있는데, 궁금하신 분들은 백서를 읽어보시면 됩니다.
(2) 그리고 최근에 가장 많이 사용하고 있는 방법 중 하나는 Concentrated Liquidity라는 방법입니다. 이 방법은 가격 구간마다 여러분의 유동성을 공급할 수 있습니다. 그래서 실질적으로는 이 방법을 하면 거의 오더북 같은 가격 유동성을 공급할 수 있으며 Uniswap V3가 대표적으로 이 방법을 사용하고 있으며, 최근 DEX는 CPMM과 집중화된 유동성 등을 다 사용하고 있습니다.
5️⃣ 가격 발견
처음에 가격을 매기기 어려운 토큰이 있습니다. 근데 집중화된 유동성 방법은 대략적인 가격폭이 예측될 때 훨씬 유용하겠죠? 그리고 가격 움직임도 기본적인 CPMM이 훨씬 빠릅니다. 그래서 신규 토큰들은 이런 CPMM 방법을 사용하고, 제가 궁극적으로 설명하려는 밈코인도 이런 CPMM으로 초기 가격 발견이 매우 빠르게 동작합니다.
6️⃣ 유동성 제공자(Liquidity Provider)와 소각(Burn)
그런데 이런 가격 발견에 있어 가장 중요한 것은 유동성 제공자입니다. 위에서 이야기한대로 풀이 작으면 가격이 너무 빨리 변화하고, 슬리피지로 인해 매매자들의 불편함을 유발합니다. 그런데 유동성 제공자는 당연히 원할 때 유동성을 추가하거나 뺼 수 있어야 하는데, 여기서부터 1차 해킹이 들어갑니다.
(1) 밈토큰 1000000000개: 1sol 이렇게 유동성을 제공합니다. 그럼 사람들이 N sol 살때마다 가격이 미친듯이 올라갈 수 있어요. 1sol 더 넣으면 여러분이 거의 절반을 가져가는거잖아요? 그리고 아시다싶이 밈코 발행하면 너도 나도 다 여기에 투자합니다. 그런데 유동성 제공자가 이걸 쓱 빼면? 여러분은 거래도 할 수 없는 밈토큰을 보유하고, 그 사람은 여러분들이 매매한 SOL만 다 빼갈 수 있는 것입니다.
그래서 이더리움에는 LP를 뺄 수 있는 권한을 일정 기간동안 잠궈버리는(Lock)하는 컨트랙트가 있는데, 솔라나는 보통 이 권한을 잠글 수 없어서 보통 태워버립니다. 그러면 이제 LP 제공자는 본인의 토큰을 팔아서 SOL을 획득할 수는 있지만 통으로 탈취할 수는 없습니다. 그래서 Dexscreener 툴을 보면 Liquidity Provider가 Burn이고 그 정도가 얼마인지 체크할 수 있습니다.
(2) 두 번째는 초기 유동성 제공자의 가격 조작입니다. 가격이란 어떻게 발견되는 걸까요? 크게는 두 가지입니다 (1) 기준 화폐와의 가격비 (2) 마지막 거래. 그러면 처음에 가격비를 말도 안되게 맞춰놓고, 내가 0.000001sol을 거래하면? 그러면 가격을 원하는대로 뻥튀기해서 Dexscreener에 보여줄 수 있습니다. 종종 보면 MC가 B단위인 친구들이 있는데 바로 이런 이유입니다. 이런 애들의 특징은 MC와 Liquidty의 갭이 매우 큽니다. 그래서 pump fun을 포함한 밈토큰을 거래하실 때는 MC와 Liquidity 간의 간극에 대해 감을 익히시는 게 중요합니다.
(3) 세 번째는 가격 조작에서 발생하는 유동성 풀 크기 조작입니다. 예를 들어 3000usdc와 1eth를 풀에 넣으면 전체 유동성 풀 크기는 얼마일까요? $3000+1eth겠죠? 그렇다면 가격이 발견되지 않은 밈토큰과 SOL로 페어를 넣는다면? 밈토큰의 가격은 솔라나 기준으로 매겨질 것이고, 실제로는 이 값도 어느 정도 조작할 수 있다는 결론이 나옵니다.
그러니까 DEX 이해하고 거래해야 손해 안입으니 꼭 다양한 자료 참고해서 공부하시고 DEX 거래하시길 바랍니다.
