Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Die Aufgabe eines Aggregators besteht darin, einem Benutzer den besten möglichen Preis über viele Pools hinweg zu bieten, möglicherweise einen einzelnen Input über mehrere Pool-Routen aufzuteilen und dies atomar auszuführen. Diese Seite dokumentiert die Raydium-spezifischen Teile dieser Aufgabe: Entdeckung, Kursabfrage und Transaktionszusammensetzung.
Entdeckung
Pool-Bestand
Sie benötigen die vollständige Liste der aktiven Raydium-Pools für jedes Produkt. Drei Optionen:- REST API (am einfachsten):
GET https://api-v3.raydium.io/pools/info/list?poolType=all&pageSize=1000&page=1gibt Pools in Batches von 1000 zurück. Paginieren Sie, bis Sie alle haben. Cachen Sie für 1–5 Minuten. - On-Chain-Scan:
getProgramAccountsauf CPMM-, CLMM- und AMM-v4-Programm-IDs, gefiltert nach dem State-Account-Discriminator. Liefert ~jeden aktiven Pool mit ~10s RPC-Zeit. Nützlich, wenn die API ausfällt oder rate-limited ist. - Hybrid: Verwenden Sie die API als primäre Quelle; führen Sie täglich einen On-Chain-Scan als Plausibilitätsprüfung durch. Das Team verpflichtet sich, die API umfassend zu halten, aber Pools, die durch direkte CPI erstellt werden (kein Frontend), können gelegentlich verzögert sein.
Mint-Pair-Lookup
Für ein spezifisches(mintA, mintB)-Paar verwenden Sie GET /pools/info/mint?mint1=...&mint2=...&poolType=all&sort=liquidity. Gibt jeden Pool bei jedem Gebührentarif und Produkttyp zurück. Bis zu ~10 Ergebnisse pro Pair sind bei häufig gehandelten Mints üblich; sortieren Sie nach TVL und nehmen Sie die Top-Ergebnisse zum Routen.
Kursabfrage
Die Kursberechnung unterscheidet sich je nach Produkt. Verwenden Sie die reinen Mathematik-Funktionen des SDK, damit Sie nicht neu implementieren müssen:amountOut (vor Slippage) von jedem.
Cache-Aktualität
Der Pool-Status wird schnell veraltet. Empfohlene Aktualisierungsziele:
Für einen Aggregator, der Kurse mit interaktiver Latenz abfragt, abonnieren Sie WebSocket-Account-Updates (
accountSubscribe) auf jedem relevanten Pool-Status. Das dreht das Modell von Polling zu Push um.
Token-2022-Anpassungen
Wenn ein Mint in der Route eine Token-2022-Transfergebühr hat, muss die Kursberechnung Eingaben und Ausgaben proalgorithms/token-2022-transfer-fees anpassen. Das SDK handhabt dies, wenn poolInfo.mintA.extensions.transferFeeConfig gefüllt ist. Bestätigen Sie, indem Sie das .extensions-Feld überprüfen, bevor Sie dem Kurs vertrauen.
Routing
Single-Pool-Routen
Die meisten Routen sind Single-Pool. Wählen Sie den Pool mit dem höchstenamountOut. Wenn mehrere ähnlich sind, entscheiden Sie nach Gebührentarif (niedriger ist besser), dann nach TVL (höher ist sicherer).
Split-Routing
Für große Trades, bei denen ein einzelner Pool >5% Preisauswirkung hat, teilen Sie auf mehrere Pools auf. Ein einfacher Greedy-Algorithmus:[(pool_A, 0.6), (pool_B, 0.3), (pool_C, 0.1)], der die Gesamtauswirkung minimiert. Eine ordnungsgemäße konvex-optimierte Lösung (z. B. Ausgleich der Grenzpreise über Pools) liegt in der Praxis innerhalb von ~1% des Greedy-Ergebnisses.
Multi-Hop-Routen
USDC → RAY → SOL über zwei separate Pools ist üblich, wenn kein direkter USDC-SOL-Pool einen guten Kurs bietet (selten). Wenden Sie Pro-Hop-Slippage-Grenzen an; jeder Hop erzwingt sein eigenes minAmountOut. Siehe algorithms/slippage-and-price-impact.
Multi-Hop über denselben Pool (z. B. zwei CLMM-Hops auf SOL-USDC) ist immer suboptimal gegenüber einem einzelnen Hop — generieren Sie solche Routen nicht.
Transaktionszusammensetzung
Single-Hop, Single-Pool
Für einen einzelnen Pool rufen Sie den Swap-Builder des Pool-Typs auf —raydium.liquidity.swap, raydium.cpmm.swap oder raydium.clmm.swap. raydium.tradeV2.swap ist der Multi-Hop-Route-Executor und hat eine völlig andere Form ({ swapInfo, swapPoolKeys, routeProgram, ownerInfo, txVersion }); es gibt kein raydium.trade.
Split und Multi-Hop
Stellen Sie ATAs + Anweisungen manuell zusammen. Muster:Atomarität
Aggregatoren müssen Atomarität garantieren: Entweder landet die vollständige Route oder keine. Raydium’s Swap-Anweisungen revertieren beiExceededSlippage, daher verursacht eine Multi-Pool-Route, bei der ein Hop fehlschlägt, dass die gesamte Transaktion revertiert. Kostenlos.
Die einzige Ausnahme: Wenn Ihre Route durch Raydium + einen Drittanbieter-DEX geht, stellen Sie sicher, dass dieser DEX auch ein Revert-on-Slippage-Modell hat. Einige Programme ignorieren Slippage-Grenzen (selten).
Fallstricke
1. Veraltete Kurse
Zwischen dem Zeitpunkt, an dem der Benutzer „Sie erhalten 125,43 RAY” sieht, und dem Zeitpunkt, an dem die Transaktion landet, können sich Reserven verschieben. Rufen Sie den Pool-Status unmittelbar vor der Einreichung ab; fragen Sie erneut ab; wenn der neue Kurs >1% schlechter ist, pausieren Sie und bestätigen Sie erneut mit dem Benutzer.2. Pool-Blacklists
Einige Raydium-Pools sind Scam-Token mit Transfergebühren von 99% oder mit nicht übertragbaren Erweiterungen. Die REST API kennzeichnet diese (siehe dastags-Feld); überspringen Sie jeden Pool mit dem Tag scam oder honeypot. Das Durchführen eigener Sicherheitsprüfungen zusätzlich zu Raydiums Tags ist ratsam.
3. Observation-State-Anforderung auf CLMM
CLMMSwapV2 benötigt ein observation_state-Konto. Das SDK füllt es für Sie; handgebaute Anweisungen vergessen es oft, was dazu führt, dass das Programm mit AccountNotFound revertiert. Beziehen Sie es immer ein.
4. Address-Lookup-Tabellen
Raydium verwaltet öffentliche Lookup-Tabellen für seine am häufigsten verwendeten Konten (Haupt-Mints, Programm-IDs, AmmConfigs). Aggregatoren sollten diese nutzen — es spart ~100 Bytes pro Transaktion und ermöglicht größeren Routen, in V0 zu passen. Abrufen der LUT-Adressen:5. Umgang mit Überlastung
Während Hochlast-Fenster können Transaktionen mehrere Blöcke lang im Mempool sitzen. Aggressives Retry bei TX-Ablauf (nicht bei Revert — Reverts sind deterministisch) wird empfohlen. DiesendAndConfirm-Option des SDK führt grundlegende Wiederholungen durch; Production-Aggregatoren lagern ihre eigene Logik (Jito-Bundles, Multi-RPC-Broadcast) darauf aus.
Checkliste
Vor dem Live-Gehen überprüfen Sie:- Pool-Entdeckung deckt CPMM + CLMM + AMM v4 umfassend ab.
- Kurse stimmen mit Raydiums eigenem UI-Kurs innerhalb von 1 Basispunkt bei einer Handvoll Test-Trades überein.
- Split-Routing aktiviert sich für Trades >5% Auswirkung auf einen einzelnen Pool.
- Prioritätsgebühren sind gegen aktuelle Pool-Programm-Gebühren dimensioniert (siehe
integration-guides/priority-fee-tuning). - Token-2022-Transfergebühren werden berechnet und dem Benutzer angezeigt.
- Transaktionen revertieren sauber, wenn Slippage überschritten wird.
- Retry-Logik unterscheidet TX-Ablauf (Retry) von Revert (kein Retry).
Verweise
integration-guides/routing-and-mev— Sandwich-Resistenz, Bundles.integration-guides/priority-fee-tuning— Dimensionierung von Compute-Budget-Anweisungen.sdk-api/rest-api— Pool-List-Endpunkte.

