Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
CPI (»Cross-Program Invocation«) ist der Mechanismus, mit dem ein Solana-Programm ein anderes aufruft. Raydiums Anchor-Programme werden mit CPI-Wrapper-Crates ausgeliefert, die den Aufrufplatz wie einen typisierten Funktionsaufruf erscheinen lassen — Kontostrukturen mit validierten Feldnamen und
cpi::<ix>()-Hilfsfunktionen. Diese Seite dokumentiert das allgemeine Muster; für produktspezifische Snippets siehe die Code-Demos-Seite jedes Produktkapitels.Cargo-Abhängigkeiten
cpi-Feature-Flag sorgt dafür, dass die Crates nur zu der CPI-Oberfläche kompiliert werden (Kontostrukturen + Invoker) anstelle des vollständigen Programms, sodass Ihr Binary klein bleibt.
Für funktionierende CPI-Beispiele, die die Kontostrukturen end-to-end verbinden, siehe raydium-io/raydium-cpi-example (behandelt AMM v4, CPMM und CLMM).
Kontolisten-Konstruktion
Jede Raydium-CPI erfordert eineAccounts-Struktur im aufrufenden Programm. Felder entsprechen 1:1 der Kontenreihenfolge des Programm-Befehls mit Feldvalidierungen:
UncheckedAccount, weil der aufgerufene (Raydium) die Validierung übernimmt. Ihr aufrutendes Programm validiert nur streng Konten, die Sie besitzen — Benutzer-ATAs, Ihre eigenen PDAs. Der /// CHECK:-Doc-Kommentar unterdrückt Anchors Warnung über fehlende Checks.
Aufbau des CPI-Aufrufs
Anchor generiert eine Hilfsfunktion pro Befehl:cpi::swap_base_input wird aus dem IDL generiert; seine Argumentliste spiegelt die Argumentliste des Anchor-Befehls.
Signierseeds (PDA-signierte CPI)
Wenn Ihr Programm die CPI im Namen einer PDA signiert (häufig bei Tresoren, Hinterlegungen usw.), verwenden SieCpiContext::new_with_signer:
authority (oder ähnliche Signierrolle) weitergegeben wird, prüft die Solana-Runtime, dass die PDA durch diese Seeds signiert.
Verbleibende Konten
Einige Raydium-Befehle nutzen verbleibende Konten — eine variable Liste, die nach den festen Konten angehängt wird. Die kanonischen Beispiele:- CLMM
SwapV2: hängt 1–8TickArrayState-Konten an, die den Tick-Arrays entsprechen, die der Swap durchlaufen könnte. - Farm v6
Deposit: hängt(reward_vault, user_reward_ata)-Paare für jeden aktiven Reward-Stream an.
.with_remaining_accounts(...):
Error-Propagation
Raydiums Programme geben ihre eigenen Error-Enums zurück. Anchor umhüllt diese; Ihr aufrutendes Programm sieht sie alsErr(ProgramError::Custom(code)). Um spezifische Fehler zu handhaben:
sdk-api/anchor-idl). Sie können gegen spezifische Codes testen, indem Sie gegen den numerischen Wert vergleichen.
Compute-Budget in zusammengesetzten CPIs
Jeder CPI-Frame hat Overhead (~1.500 CU für den Aufruf selbst), und der eigene CU-Verbrauch des aufgerufenen Programms stapelt sich auf Ihrem. Eine Transaktion, die einen CPMM-Swap von innerhalb Ihres Programms aufruft, verbraucht:ComputeBudgetProgram::set_compute_unit_limit(...)-Befehl in der Transaktion — das Standard-200k-CU-Limit wird sich stumm erschöpfen.
AMM v4 — manuelle Instruction-Konstruktion
AMM v4 hat keine Anchor-Crate. Bauen Sie dieInstruction von Hand:
products/amm-v4/code-demos für die vollständige Kontoliste.
Farm v6 — Reward-Pair-verbleibende Konten
Farm v6sDeposit / Withdraw / Harvest nutzen das (reward_vault_i, user_reward_ata_i)-Pair-Muster in verbleibenden Konten. Genaue Reihenfolge:
farm_state.reward_infos[i].reward_state.
Testen eines CPI-Flows
Local Dev erfordert, dass die Raydium-Programme in Ihrem Test-Validator verfügbar sind. Optionen:-
anchor testmit Program Clone — inAnchor.toml:Dies zieht den eingesetzten Bytecode von Mainnet in Ihren lokalen Validator. -
Devnet — Raydium setzt alle Programme auf Devnet mit denselben Program-IDs wie Mainnet ein. Führen Sie
anchor test --provider.cluster devnetaus, um auf Live-Code zuzugreifen. -
Lokales Deploy — Klonen Sie die Raydium-Repos und
anchor deployauf einen lokalen Validator. Fügt Test-Zyklus-Overhead hinzu, ermöglicht aber, dass Sie den aufgerufenen Code zum Debuggen ändern.
Verweise
products/cpmm/code-demos,products/clmm/code-demos,products/amm-v4/code-demos,products/farm-staking/code-demos— produktspezifische CPI-Beispiele.sdk-api/anchor-idl— IDL-Abruf und Clientregeneration.integration-guides/cpi-integration— übergeordnete Muster: Hinterlegungen, Tresore, Aggregator-Komposition.


