Published on

AMM (Automated Market Maker)

Authors
  • avatar
    Name
    Aaron
    Twitter

AMM이란 무엇인가?

AMM(Automated Market Maker, 자동화된 시장 메이커)은 알고리즘을 사용하여 자산의 가격을 자동으로 결정하는 시스템입니다.

전통적인 거래소에서는 "이 가격에 팔겠다", "저 가격에 사겠다"고 주문을 내고, 서로 맞는 주문이 있을 때 거래가 체결됩니다.

하지만 AMM에서는 알고리즘이 공급과 수요를 기반으로 자동으로 가격을 결정합니다:

  • 어떤 자산을 많이 사면 → 그 자산의 수량이 줄어들어 → 가격이 올라갑니다
  • 어떤 자산을 많이 팔면 → 그 자산의 수량이 늘어나 → 가격이 내려갑니다

즉, 공급과 수요의 법칙을 알고리즘으로 구현한 것입니다.

전통적 거래소 vs AMM

전통적 거래소의 작동 방식

전통적 거래소는 주문장(Order Book) 방식을 사용합니다.

사과 장터 예시

당신은 감자 농부인데, 매일 감자만 먹다 보니 사과가 먹고 싶습니다.

마을에 장터가 있는데, 거기서는 이런 식으로 거래가 이루어집니다:

  1. 판매자들이 주문을 냅니다

    • Alice: "사과 100개를 개당 $1.02에 팔겠습니다"
    • Bob: "사과 200개를 개당 $1.01에 팔겠습니다"
  2. 구매자들도 주문을 냅니다

    • Charlie: "사과 150개를 개당 $0.99에 사겠습니다"
    • David: "사과 100개를 개당 $0.98에 사겠습니다"
  3. 가격이 맞으면 거래 체결

    • 당신이 "사과를 개당 $1.01에 사겠다"고 하면 Bob의 주문과 매칭되어 거래 성사됩니다.

문제점

  • ❌ 판매자와 구매자가 동시에 있어야 거래가 가능
  • ❌ 거래량이 적으면 원하는 가격에 거래가 안 될 수도 있음
  • 중앙화된 거래소가 필요

AMM의 작동 방식

AMM은 완전히 다른 접근 방식을 사용합니다. 중요한 것은 주문장이 없다는 것입니다. 대신 유동성 풀(Liquidity Pool)에서 자산을 직접 교환합니다.

상수 곱 공식: x × y = k

AMM의 핵심은 매우 간단한 수학 공식입니다:

x × y = k

여기서:

  • x = 첫 번째 자산의 수량 (예: 사과)
  • y = 두 번째 자산의 수량 (예: 감자)
  • k = 상수 (항상 일정)

실제 거래 예시

유동성 풀에 지금 이렇게 있습니다:

  • 사과: 100개
  • 감자: 100개
  • k = 100 × 100 = 10,000

예시 1: 감자 10개로 사과 교환하기

당신이 감자 10개를 가지고 와서 사과와 교환하려고 합니다.

  1. 감자를 풀에 넣습니다: 100 + 10 = 110개
  2. 새로운 사과 수량 계산: k ÷ 새로운 감자 = 10,000 ÷ 110 = 90.9개
  3. 받을 사과: 100 - 90.9 = 9.1개

왜 10개를 주고 9.1개만 받나요?

감자를 넣어서 풀의 감자가 많아지면 감자 가격이 떨어지고, 사과를 빼내서 풀의 사과가 적어지면 사과 가격이 올라갑니다.

교환 후 가격:

  • 사과 1개 가격: 110 ÷ 90.9 = 1.21 감자
  • 감자 1개 가격: 90.9 ÷ 110 = 0.83 사과

사과가 1.00에서 1.21로 비싸졌고, 감자는 1.00에서 0.83으로 싸졌습니다.

예시 2: 감자 20개 더 교환하기

또 다른 사람이 감자 20개를 가지고 와서 사과와 교환하려고 합니다.

현재 풀 상태:

  • 사과: 90.9개
  • 감자: 110개
  1. 감자를 풀에 넣습니다: 110 + 20 = 130개
  2. 새로운 사과 수량: 10,000 ÷ 130 = 76.9개
  3. 받을 사과: 90.9 - 76.9 = 14개

이번에는 20개를 주고 14개를 받았습니다. 첫 번째 사람보다 더 불리한 비율입니다.

왜냐하면 사과가 계속 줄어들어서 더 비싸졌기 때문입니다.

교환 후 가격:

  • 사과 1개 가격: 130 ÷ 76.9 = 1.69 감자
  • 감자 1개 가격: 76.9 ÷ 130 = 0.59 사과

가격 영향 (Price Impact)

같은 양을 교환해도 풀 크기에 따라 가격 영향이 완전히 다릅니다.

왜 풀 크기가 중요한가

풀 크기 대비 교환 비율이 가격 영향을 결정합니다

  • 작은 풀: 10/100 = 10% 교환 → 가격에 큰 충격
  • 중간 풀: 10/10,000 = 0.1% 교환 → 거의 영향 없음
  • 큰 풀: 10/1,000,000 = 0.001% 교환 → 무시할 수준

이것이 바로 DEX에서 TVL(Total Value Locked)이 중요한 이유입니다.

유동성이 클수록 더 나은 거래 환경을 제공합니다:

  • 가격 영향 감소: 대량 거래 시에도 가격이 크게 변하지 않음
  • 슬리피지 감소: 예상 가격과 실제 체결 가격의 차이가 줄어듦
  • 더 공정한 가격: 시장 가격에 가까운 가격으로 거래 가능

슬리피지란?

슬리피지(Slippage)는 거래를 시작할 때 예상한 가격과 실제로 체결된 가격의 차이를 말합니다.

예를 들어:

  • 사과 가격이 1.00 감자라고 보고 감자 10개로 교환 시작
  • 실제로는 9.1개 사과를 받음 (평균 가격 1.10 감자)
  • 슬리피지 = 10%

슬리피지가 발생하는 이유는 거래가 실행되는 순간 풀의 비율이 변하기 때문입니다. 특히 작은 풀에서 큰 금액을 거래할 때 슬리피지가 커집니다.

유동성 공급자 (Liquidity Provider)

AMM은 누군가 자산을 풀에 예치해야 작동합니다. 이런 사람들을 유동성 공급자(LP)라고 합니다.

LP가 되는 방법

  1. 두 자산을 동시에 예치

    • 예: 100 ETH + 300,000 USDT (현재 가격 비율에 맞춰)
  2. LP 토큰을 받음

    • 풀에서의 지분을 나타내는 토큰
  3. 거래 수수료 받기

    • 풀에서 일어나는 모든 거래의 0.3% (Uniswap 기준)
    • 지분에 비례해서 분배

LP의 수익과 위험

수익:

  • ✅ 거래 수수료 수익
  • ✅ 24/7 자동으로 수익 발생
  • ✅ 패시브 인컴

위험:

  • ⚠️ 비영구적 손실 (Impermanent Loss)
    • 가격이 변동하면 그냥 보유한 것보다 손해를 볼 수 있음
    • 가격이 원래대로 돌아오면 손실도 사라짐
  • ⚠️ 스마트 컨트랙트 리스크
    • 버그나 해킹 가능성

비영구적 손실 (Impermanent Loss) 이해하기

비영구적 손실은 LP의 가장 큰 위험 요소입니다. 간단한 예시로 살펴보겠습니다.

초기 상태:

당신이 ETH-USDT 풀에 유동성을 공급합니다.

  • ETH 1개 = $5,000
  • 1 ETH + 5,000 USDT 예치 (총 $10,000 가치)

시나리오 1: ETH 가격 2배 상승 ($10,000)

AMM 풀에서는 x × y = k를 유지해야 하므로:

  • 차익거래자들이 USDT로 ETH를 사가면서 풀의 비율이 자동으로 조정됨
  • 최종 풀 상태: 0.707 ETH + 7,071 USDT
  • 당신의 지분 가치: $14,142

만약 그냥 보유했다면:

  • 1 ETH (10,000)+5,000USDT=10,000) + 5,000 USDT = 15,000

손실: 15,00015,000 - 14,142 = $858 손실 (약 5.7%)

시나리오 2: ETH 가격이 원래대로 ($5,000)

가격이 원래대로 돌아오면:

  • 풀도 원래 비율로 돌아옴: 1 ETH + 5,000 USDT
  • 손실이 사라짐 (비영구적)

핵심 포인트:

  1. 가격 변동이 클수록 손실도 큼

    • 가격 2배 변동: 약 5.7% 손실
    • 가격 4배 변동: 약 20% 손실
    • 가격 변동과 손실은 비선형 관계 (변동이 클수록 손실이 급격히 증가)
  2. 양방향 모두 손실 발생

    • ETH 가격이 오르든 내리든 변동만 있으면 손실 발생
    • 초기 가격에서 멀어질수록 손실 증가
    • 가격이 돌아오면 손실도 사라짐 (비영구적인 이유)
  3. 거래 수수료로 손실 상쇄 가능

    LP는 풀에서 발생하는 모든 거래에서 수수료를 받습니다. 이 수수료 수익이 비영구적 손실을 상쇄할 수 있습니다.

    예시

    • ETH-USDT 풀에 $10,000 예치
    • 비영구적 손실: $858 (5.7%)
    • 일일 거래량: $1,000,000
    • 풀 크기: $10,000,000 (당신의 지분 0.1%)
    • 일일 수수료 (0.3%): $3,000
    • 당신의 수수료 수익: $3 (0.1% 지분)
    • 연간 수수료 수익: $1,095 (약 11%)

    이 경우 5.7% 비영구적 손실이 발생해도 수수료로 충분히 상쇄됩니다.

    LP에게 유리한 조건

    • 높은 거래량 (수수료 수익 증가)
    • 안정적인 가격 (비영구적 손실 감소)
    • 스테이블코인 페어 (USDT-USDC 같은 가격 변동이 적은 쌍)