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 →
Raydium’s neuere Programme (CPMM, CLMM, Farm v6, LaunchLab) sind in Anchor geschrieben — ein Rust-Framework, das auf Solana’s nativen Programmmodell aufbaut und Kontenvalidierung, Fehlerbehandlung und ein IDL (Interface-Beschreibung) bietet. AMM v4 und ältere Farms entstanden vor Anchor. Das Verständnis beider Paradigmen hilft Ihnen, den Code zu lesen, Clients aus der IDL zu generieren und unerwartete Fehler zu debuggen.
Bereitstellungsmodell für Programme
Jedes Solana-Programm existiert unter einerPubkey. Der Bytecode des Programmes wird in einem ausführbaren Konto gespeichert, das vom BPF Upgradeable Loader (BPFLoaderUpgradeab1e11111111111111111111111) gehört.
Eine Programmbereitstellung besteht aus drei Konten:
- Programmkonto: kleines Metadatenkonto unter der Programm-ID. Besitzer: BPF Upgradeable Loader.
- ProgramData-Konto: enthält den eigentlichen Bytecode. Abgeleitet als
[program_id, "programdata"]. - Buffer-Konto (transient): enthält neuen Bytecode während eines Upgrades. Nach dem Upgrade verworfen.
security/admin-and-multisig.
Überprüfung eines bereitgestellten Programmes
Um zu bestätigen, dass das On-Chain-Programm dem audit-genehmigten Source entspricht:Anchor: ein Framework auf Solana
Raw-Solana-Programme sind Rust-Funktionen mit dieser Signatur:- Generiert automatisch einen deterministischen 8-Byte-Diskriminator für jede Instruktion und jeden Kontotyp.
- Validiert Kontobeschränkungen (Besitzer, Seeds, Writable, Signer, Mint-Übereinstimmung, Token-Programm-Übereinstimmung), bevor Ihr Code ausgeführt wird.
- Generiert ein IDL — eine Interface-Beschreibungsdatei, die Clients verwenden, um das Programm aufzurufen.
- Wird mit Rust-, TypeScript- und Python-Bibliotheken für die Client-Seite ausgeliefert.
Der 8-Byte-Diskriminator
Jedes Anchor-Konto und jede Anchor-Instruktion beginnt mit einem 8-Byte-Diskriminator — den ersten 8 Bytes des SHA-256-Hashs eines festen Strings:getProgramAccounts, die alle Konten eines Typs aufzählen.
Fehler
Anchor-Programme definieren Fehler über#[error_code]:
reference/error-codes.
Die IDL
Eine Anchor-IDL (Interface Description Language) Datei ist eine JSON-Beschreibung eines Programmes: seine Instruktionen, Konten, Typen, Fehler und Events. Sie ist das Äquivalent eines Ethereum ABI. Raydium veröffentlicht IDLs für alle Anchor-Programme. Abrufen live von On-Chain:src/raydium/*/idl/*.json.
IDL-Struktur
Generieren eines Clients aus der IDL
Die Anchoranchor CLI generiert TypeScript- und Rust-Typen:
Wenn die IDL Ihr Freund ist
Wenn Sie eine benutzerdefinierte Integration erstellen möchten, die nicht durch Raydium SDK läuft:- Rufen Sie die IDL ab (live von On-Chain oder aus dem SDK-Source).
- Suchen Sie die Instruktion auf, die Sie möchten (z. B.
swap_base_input). - Konstruieren Sie die Instruktionsdaten: 8-Byte-Diskriminator + kodierte Argumente.
- Übergeben Sie Konten in der Reihenfolge, die die IDL angibt.
sdk-api/anchor-idl für durchgearbeitete Beispiele.
Pre-Anchor-Programme: AMM v4 und Farm v3/v5
Diese Programme entstanden vor Anchor. Sie verwenden:- Manuelle Instruktionsverteilung: ein
u8-Tag ininstruction_datamit einermatch-Anweisung. - Manuelle Kontenvalidierung:
if accounts[0].owner != &expected_program { ... }. - Borsh-serialisierte Instruktionsargumente: kein Diskriminator, nur
instruction_data[1..]. - Layout über
#[repr(C, packed)]: C-Struktur-Binärlayout.
Programmaktualisierungsmechanik
Nur dieupgrade_authority des ProgramData kann aktualisiert werden. Schritte:
- Kompilieren Sie den neuen Bytecode.
- Schreiben Sie ihn in ein Buffer-Konto (
solana program write-buffer). - Reichen Sie eine Upgrade-Instruktion ein:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }. - Die Runtime ersetzt den Bytecode des Programmes atomar durch den Inhalt des Buffers.
security/admin-and-multisig.
Ein Programm unveränderbar machen
Eine Upgrade-Berechtigung kann aufNone gesetzt werden. Danach wird das Programm permanent unveränderbar. Raydium hat dies für kein Produkt getan — das Team behält die Fähigkeit, Sicherheitspatches bereitzustellen. Kompromiss: Benutzer müssen dem Multisig + Zeitsperre-Prozess vertrauen.
Programme und Miete
Die Bereitstellung eines Programmes verbraucht mietfreie Lamports:- Ein 50-KB-Programm: ~0,35 SOL Miete.
- Ein 200-KB-Programm: ~1,4 SOL Miete.
solana program close) gibt die Lamports zurück. Raydium-Programme bleiben aktiv und sind nicht zum Schließen geplant.
Debugging von Anchor-Programmen
Log-Ausgabe
Dasmsg! Makro von Anchor schreibt in das Transaktionslog. Simulieren Sie eine Transaktion, um Logs zu sehen:
- Programmaufruf (
Program CPMMoo8... invoke [1]). msg!-Aufrufe aus Programmcode.- Compute-Unit-Verbrauch (
consumed 137842 of 400000 compute units). - Programmerfolg oder Fehler.
Fehlercodes
Wenn ein Anchor-Programm fehlschlägt, zeigt das Log:SlippageExceeded). Kreuzen Sie mit dem Array errors der IDL ab.
Siehe reference/error-codes für Raydium’s vollständige Fehlertabelle.
Konto-Layout-Mismatch
Wenn Sie das falsche Konto in den falschen Slot übergeben, geben Anchor’s Kontenvalidierungs-Makros Fehler wie folgt zurück:ErrorCode-Enum); Fehler ≥6000 sind die benutzerdefinierten Codes des Programmes.
Zeiger
solana-fundamentals/account-model— wie Programme Konten besitzen.solana-fundamentals/pdas-and-cpis— PDAs wie Anchor sie deklariert.sdk-api/anchor-idl— Abrufen und Verwenden von Raydium’s IDLs.reference/program-addresses— Programm-IDs.reference/error-codes— Fehlercode-Referenz.security/admin-and-multisig— Upgrade-Berechtigungskontrollen.
- Anchor book.
- Solana program deployment.
- Raydium IDLs (veröffentlicht in SDK
src/raydium/*/idl/*.json).


