Zum Hauptinhalt springen

AMM & On-Chain-Liquidität

Das x/amm-Modul ist QoreChains nativer, On-Chain-betriebener Automated Market Maker (AMM). Es ermöglicht jedem, Liquiditätspools zu erstellen, Liquidität bereitzustellen und direkt auf Protokollebene zwischen QoreChain-nativen Assets zu tauschen — ohne Off-Chain-Orderbuch und ohne externe Smart-Contract-DEX. Es ist die On-Chain-Settlement-Schicht hinter dem Dashboard-Trade- / DEX-Erlebnis.

Pools folgen vertrauten AMM-Preiskurven:

  • constant_product — die x*y=k-Kurve (Mehrzweckpaare).
  • stable_swap — eine Kurve mit geringer Slippage für eng gekoppelte Paare, abgestimmt durch einen Amplifikationskoeffizienten.

Alle Beträge verwenden QoreChains native Einheiten. Der Staking- und Gebührentoken ist QOR, dessen Basis-Denom uqor ist (1 QOR = 10^6 uqor). Pool-Teilnehmer und -Adressen verwenden das qor-Bech32-Präfix.

hinweis

Die folgenden Befehle verwenden qorechaind. Hängen Sie die üblichen Transaktions-Flags (--from, --chain-id, --gas, --fees, --node) für Ihre Umgebung an — zum Beispiel --chain-id qorechain-vladi gegen das Mainnet.

Pools und LP-Anteile

Ein Pool hält Reserven von zwei Denoms (token_a, token_b, in sortierter Reihenfolge gespeichert) und prägt LP-Token, die einen proportionalen Anspruch auf diese Reserven darstellen. Jeder Pool hat eine numerische id, einen type, einen status (active oder paused) und seine eigene LP-Denom. Wenn Sie Liquidität hinzufügen, erhalten Sie LP-Token; wenn Sie Liquidität entfernen, verbrennen Sie diese, um Ihren Anteil an den Reserven einzulösen.

Einen Pool erstellen

create-pool nimmt einen Pool-Typ und die beiden anfänglichen Einlagen (als Coins) entgegen. Setzen Sie für ein stabiles Paar den Amplifikationskoeffizienten mit --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

Liquidität hinzufügen

add-liquidity legt beide Seiten in einen Pool ein und prägt LP-Token. Das letzte Argument ist der minimale LP-Betrag, den Sie akzeptieren — Ihr Schutz davor, dass sich das Pool-Verhältnis verschiebt, bevor Ihre Transaktion verarbeitet wird.

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

Liquidität entfernen

remove-liquidity verbrennt LP-Token und zieht Reserven ab. Die beiden min-Argumente legen den minimalen Betrag fest, den Sie von jeder Seite zurückerhalten.

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

Swaps

Der AMM unterstützt die zwei standardmäßigen Swap-Richtungen.

Exact-in

swap-exact-in gibt einen festen Eingabebetrag aus und liefert so viel Ausgabe zurück, wie die Kurve ergibt, vorbehaltlich einer Mindestausgabe-Untergrenze (Slippage-Schutz).

# 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 fordert einen festen Ausgabebetrag an und gibt so viel Eingabe aus, wie erforderlich ist, vorbehaltlich einer Maximaleingabe-Obergrenze.

# 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

Das abschließende min-out- / max-in-Argument bei jedem Swap ist der Slippage-Schutz: Setzen Sie es aus einem frischen Angebot (siehe unten) plus Ihrer Toleranz, und die Transaktion wird rückgängig gemacht, wenn der ausgeführte Preis diese verletzen würde.

Angebote (Preisvorschau)

Angebote sind schreibgeschützt — sie zeigen eine Vorschau eines Swaps, ohne ihn einzureichen, sodass ein Client eine erwartete Ausgabe und Gebühr anzeigen kann, bevor der Nutzer signiert. Sie sind die natürliche Grundlage für das Preisfeld einer Trade-Oberfläche.

# 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

Die zurückgegebene fee ist die Swap-Gebühr, die der AMM auf den Handel anwendet. Gebühren- und Slippage-Niveaus sind pool-/parametergesteuert; verwenden Sie die Angebots-Endpunkte, um deren konkrete Auswirkung auf einen bestimmten Handel zu sehen, anstatt sie von Hand zu berechnen.

Pools und Salden untersuchen

All dies sind schreibgeschützte Abfragen, die jeder ausführen kann.

# 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 gibt die Reserven des Pools, das LP-Angebot, den Typ, den Status und einen laufenden gewichteten Durchschnittspreis zurück. lp-balance gibt das LP-Token-balance zurück, das ein Konto für diesen Pool hält.

Einen Pool pausieren und fortsetzen

Pools können von der Pool-Autorität (der über --from übergebenen Adresse) pausiert und fortgesetzt werden. Ein pausierter Pool lehnt Swaps und Liquiditätsänderungen ab, bis er fortgesetzt wird — nützlich für die Vorfallreaktion oder koordinierte Wartung.

# 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

Befehlsübersicht

Transaktionen (qorechaind tx amm …):

BefehlZweck
create-poolEinen constant_product- oder stable_swap-Pool erstellen
add-liquidityReserven einzahlen und LP-Token prägen
remove-liquidityLP-Token verbrennen und Reserven abheben
swap-exact-inEinen festen Eingabebetrag tauschen
swap-exact-outAuf einen festen Ausgabebetrag tauschen
pause-poolEinen Pool pausieren (Autorität)
resume-poolEinen pausierten Pool fortsetzen (Autorität)

Abfragen (qorechaind query amm …):

BefehlZweck
paramsModulparameter anzeigen
poolEinen Pool nach ID anzeigen
poolsAlle Pools auflisten
pool-by-denomsEinen Pool aus seinem Denom-Paar auflösen
lp-balanceDer LP-Saldo eines Kontos in einem Pool
quote-exact-inVorschau der Ausgabe für einen Swap mit fester Eingabe
quote-exact-outVorschau der Eingabe für einen Swap mit fester Ausgabe

Verwandte Themen

  • Das Dashboard-Trade / DEX stellt diese Pools, Angebote und Swaps in einer grafischen Oberfläche für alltägliche Nutzer bereit.
  • Wie QOR-Angebot, -Gebühren und -Wert durch die Chain fließen, erfahren Sie unter Tokenomics.
  • Probieren Sie Swaps selbst in der Trade / DEX-Oberfläche aus.
  • Um Assets zunächst auf QoreChain zu bringen, siehe Assets überbrücken.