본문으로 건너뛰기

AMM 및 온체인 유동성

x/amm 모듈은 QoreChain의 네이티브 온체인 자동 시장 조성자(AMM)입니다. 누구나 유동성 풀을 생성하고, 유동성을 공급하며, QoreChain 네이티브 자산 간에 프로토콜 수준에서 직접 스왑할 수 있게 합니다 — 오프체인 오더북이나 외부 스마트 컨트랙트 DEX가 필요하지 않습니다. 이것은 대시보드 Trade / DEX 경험의 배경에 있는 온체인 정산 계층입니다.

풀은 익숙한 AMM 가격 곡선을 따릅니다:

  • constant_productx*y=k 곡선 (범용 페어).
  • stable_swap — 증폭 계수로 조정되는, 긴밀하게 페그된 페어를 위한 저슬리피지 곡선.

모든 금액은 QoreChain의 네이티브 단위를 사용합니다. 스테이킹 및 수수료 토큰은 QOR이며, 기본 denom은 uqor입니다(1 QOR = 10^6 uqor). 풀 참여자와 주소는 qor bech32 접두사를 사용합니다.

노트

아래 명령어는 qorechaind를 사용합니다. 사용 환경에 맞는 일반적인 트랜잭션 플래그(--from, --chain-id, --gas, --fees, --node)를 추가하세요 — 예를 들어 메인넷에 대해서는 --chain-id qorechain-vladi.

풀과 LP 지분

풀은 두 denom(token_a, token_b, 정렬된 순서로 저장됨)의 준비금을 보유하고, 해당 준비금에 대한 비례 청구권을 나타내는 LP 토큰을 발행합니다. 각 풀은 숫자 id, type, status(active 또는 paused), 그리고 자체 LP denom을 가집니다. 유동성을 추가하면 LP 토큰을 받고, 유동성을 제거하면 이를 소각하여 준비금에서 자신의 지분을 상환합니다.

풀 생성

create-pool은 풀 유형과 두 개의 초기 예치금(코인 형태)을 받습니다. 안정 페어의 경우 --amp로 증폭 계수를 설정합니다.

# Constant-product pool seeded with QOR and a bridged USD asset
qorechaind tx amm create-pool constant_product 1000000000uqor 1000000000uusdc \
--from qor1youraddr... --chain-id qorechain-vladi

# Stable-swap pool with an amplification coefficient
qorechaind tx amm create-pool stable_swap 1000000000uusdc 1000000000uusdt \
--amp 200 --from qor1youraddr... --chain-id qorechain-vladi

유동성 추가

add-liquidity는 양쪽을 풀에 예치하고 LP 토큰을 발행합니다. 마지막 인수는 수락할 최소 LP 양입니다 — 트랜잭션이 처리되기 전에 풀 비율이 변동하는 것에 대한 보호 장치입니다.

qorechaind tx amm add-liquidity 1 500000000uqor 500000000uusdc 100000 \
--from qor1youraddr... --chain-id qorechain-vladi

유동성 제거

remove-liquidity는 LP 토큰을 소각하고 준비금을 인출합니다. 두 개의 min 인수는 되돌려받을 각 측의 최소 금액을 설정합니다.

qorechaind tx amm remove-liquidity 1 100000 490000000 490000000 \
--from qor1youraddr... --chain-id qorechain-vladi

스왑

AMM은 두 가지 표준 스왑 방향을 지원합니다.

Exact-in

swap-exact-in은 고정된 입력 금액을 지출하고 곡선이 산출하는 만큼의 출력을 반환하며, 최소 출력 하한(슬리피지 보호)의 적용을 받습니다.

# Spend exactly 1,000,000 uqor for uusdc, refusing anything below 990,000 uusdc out
qorechaind tx amm swap-exact-in 1 1000000uqor uusdc 990000 \
--from qor1youraddr... --chain-id qorechain-vladi

Exact-out

swap-exact-out은 고정된 출력 금액을 요청하고 필요한 만큼의 입력을 지출하며, 최대 입력 상한의 적용을 받습니다.

# Receive exactly 1,000,000 uusdc, spending at most 1,010,000 uqor
qorechaind tx amm swap-exact-out 1 uqor 1000000uusdc 1010000 \
--from qor1youraddr... --chain-id qorechain-vladi

모든 스왑의 마지막 min-out / max-in 인수는 슬리피지 가드입니다: 신선한 견적(아래)에 허용 오차를 더한 값으로 설정하면, 실행 가격이 이를 위반할 경우 트랜잭션이 되돌려집니다.

견적 (가격 미리보기)

견적은 읽기 전용입니다 — 스왑을 제출하지 않고 미리 보여주므로, 클라이언트가 사용자가 서명하기 전에 예상 출력과 수수료를 표시할 수 있습니다. 이는 Trade UI의 가격 필드를 뒷받침하는 자연스러운 수단입니다.

# Preview the output of spending 1,000,000 uqor into pool 1
qorechaind query amm quote-exact-in 1 uqor 1000000
# -> returns amount_out and fee

# Preview the input needed to receive 1,000,000 uusdc from pool 1
qorechaind query amm quote-exact-out 1 uusdc 1000000
# -> returns amount_in and fee

반환된 fee는 AMM이 거래에 적용하는 스왑 수수료입니다. 수수료와 슬리피지 수준은 풀/파라미터에 의해 결정됩니다. 직접 손으로 계산하기보다는 견적 엔드포인트를 사용하여 특정 거래에 대한 구체적인 효과를 확인하세요.

풀과 잔액 검사

다음은 모두 누구나 실행할 수 있는 읽기 전용 쿼리입니다.

# Module parameters
qorechaind query amm params

# A single pool by ID
qorechaind query amm pool 1

# Every pool
qorechaind query amm pools

# Resolve a pool from its denom pair (order-independent)
qorechaind query amm pool-by-denoms uqor uusdc

# An account's LP balance in a pool
qorechaind query amm lp-balance 1 qor1youraddr...

pool은 풀의 준비금, LP 공급량, 유형, 상태, 그리고 실행 중인 가중 평균 가격을 반환합니다. lp-balance는 계정이 해당 풀에 대해 보유한 LP 토큰 balance를 반환합니다.

풀 일시 중지 및 재개

풀은 풀 권한(--from을 통해 전달된 주소)에 의해 일시 중지 및 재개될 수 있습니다. 일시 중지된 풀은 재개될 때까지 스왑과 유동성 변경을 거부합니다 — 인시던트 대응이나 조정된 유지 보수에 유용합니다.

# Pause pool 1 with a human-readable reason
qorechaind tx amm pause-pool 1 "scheduled maintenance" \
--from qor1authority... --chain-id qorechain-vladi

# Resume pool 1
qorechaind tx amm resume-pool 1 \
--from qor1authority... --chain-id qorechain-vladi

명령어 요약

트랜잭션 (qorechaind tx amm …):

명령어목적
create-poolconstant_product 또는 stable_swap 풀 생성
add-liquidity준비금 예치 및 LP 토큰 발행
remove-liquidityLP 토큰 소각 및 준비금 인출
swap-exact-in고정된 입력 금액 스왑
swap-exact-out고정된 출력 금액으로 스왑
pause-pool풀 일시 중지 (권한)
resume-pool일시 중지된 풀 재개 (권한)

쿼리 (qorechaind query amm …):

명령어목적
params모듈 파라미터 표시
poolID로 단일 풀 표시
pools모든 풀 목록 표시
pool-by-denomsdenom 페어로 풀 확인
lp-balance풀에서의 계정 LP 잔액
quote-exact-in고정 입력 스왑의 출력 미리보기
quote-exact-out고정 출력 스왑의 입력 미리보기

관련 문서

  • 대시보드 Trade / DEX는 이러한 풀, 견적, 스왑을 일반 사용자를 위한 그래픽 인터페이스로 표시합니다.
  • QOR 공급량, 수수료, 가치가 체인을 통해 흐르는 방식은 토크노믹스를 참조하세요.
  • Trade / DEX 인터페이스에서 직접 스왑을 시도해 보세요.
  • 먼저 QoreChain으로 자산을 가져오려면 자산 브리징을 참조하세요.