Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
0.32.1 zu =1.0.2, und die Build-Toolchain wechselt von Agave 2.3.0 zu 3.1.10. Zwei administratorische Änderungen kommen hinzu: eine neue CollectExcessLamports-Anweisung und feste Gebühreninhaber in CreateAmmConfig.
Jede Anweisung, die ein Trader, ein LP, ein Limit-Order-Benutzer oder ein Pool-Ersteller aufruft, behält seine Kontoliste, Argumente und Mathematik.
TL;DR für Integratoren
- Keine benutzergerichtete Anweisung hat sich geändert.
CreatePool,CreateCustomizablePool,CreatePermissionedPool, alleOpenPosition*/IncreaseLiquidity*/DecreaseLiquidity*-Pfade,ClosePosition,Swap/SwapV2/SwapRouterBaseIn, die fünf Limit-Order-Anweisungen und die Reward-Anweisungen sind auf dem Draht identisch. Kein Kontolayout hat sich geändert. - Eine Anweisung wird hinzugefügt:
CollectExcessLamports. Sie ist nur für Administratoren und nimmt keine Argumente. Sie verarbeitet einen Pool pro Aufruf: DerPoolStatedes Pools wird immer verarbeitet, und der Pool-PDA unterzeichnet seine Vaults, die Sie inremaining_accountsübergeben. Jedes andere CLMM-eigene Konto inremaining_accountswird ebenfalls verarbeitet. Sieheproducts/clmm/instructions. - Ein Fehlercode wird hinzugefügt:
6052LamportsCalculateError. Codes6000–6051sind unverändert. CreateAmmConfigkopiert den Unterzeichner nicht mehr inowner/fund_owner. Neue Konfigurationen erhalten hardcodierteprotocol_fee_owner- undfund_fee_owner-Schlüssel. Im Mainnet sind dies dieselben zwei Schlüssel, die bereits auf allen 21 bestehenden Konfigurationen gespeichert sind. BestehendeAmmConfig-Konten bleiben unverändert, lesen Sie also die Felder aus dem Konto.- Aktualisieren Sie Ihre IDL. Sie fügt eine Anweisung und eine Fehler-Variante hinzu, insgesamt 39 Anweisungen und 53 Fehler.
- Sie können jetzt CPMM und CLMM in einer Crate zusammenfassen. Beide Repos pinnen
anchor-lang/anchor-spl=1.0.2auf ihrenchore/upgrade-anchor-Branches, sodass ein einzelnes Programm in beide CPIs durchführen kann. Siehesdk-api/rust-cpi. - Das TypeScript-Client-Paket wird umbenannt. Die Test-Suite wechselt von
@coral-xyz/anchor0.32.1zu@anchor-lang/core1.0.2.
CollectExcessLamports
Stufe 1 von SIMD-0437 wurde am 3. September 2026 im Mainnet aktiviert. Jedes CLMM-Konto, das vor einer Stufe erstellt wurde, ist jetzt überfinanziert, und nur das CLMM-Programm kann Lamports aus einem Konto verschieben, das es besitzt. Das umfasst Pool-Vaults, Reward-Vaults, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension und den Rest.
Die Anweisung nimmt vier feste Konten, dann eine beliebige Anzahl von Quellkonten in remaining_accounts:
Der Pool ist die Unterzeichnungsbehörde, nicht eine programmweite PDA. CPMM unterzeichnet mit einer globalen
vault_and_lp_mint_auth_seed-Behörde. CLMM-Token-Vaults gehören ihrem PoolState, sodass ein einzelner Aufruf nur für den in Slot 2 übergebenen Pool unterzeichnen kann. Jedes Token-Programm-Quellkonto muss diesen Pool als seine Behörde haben: token_vault_0, token_vault_1 oder einen der Pool-Reward-Vaults. Ein Token-Konto aus einem anderen Pool oder ein Benutzer-Token-Konto schlägt die Eigentümerprüfung des Token-Programms fehl und setzt die gesamte Anweisung zurück. Das Programm überspringt es nicht. Position-NFT-Mints können nicht verarbeitet werden, da ihre Mint-Behörde widerrufen wird, wenn die Position geöffnet wird. Verarbeiten Sie Pool für Pool.
Die Anweisung macht zwei Durchläufe, und diese Reihenfolge ist festgelegt:
- Token-Programm-CPIs zuerst. Für jede Quelle, die SPL Token oder Token-2022 gehört, erhält ein nicht-natives Konto
WithdrawExcessLamports(Diskriminant38). Ein natives wSOL-Vault erhält dieSyncNative→UnwrapLamports(Diskriminant45)-Rundreise, die mit einer Prüfung endet, dass der umhüllte Saldo seinem Wert vor der Synchronisierung entspricht. Wenn nicht, schlägt der Aufruf mitLamportsCalculateErrorfehl. Ein SOL-seitiger Vault behält seine volle Liquidität, und kein Swap-Angebot ändert sich über eine Verarbeitung hinweg. - Direkte Belastungen zweite. Durchlauf 2 belastet
pool_statezuerst, dann jedes Quellkonto, das dem CLMM-Programm gehört, bis zurent.minimum_balance(data_len).
UnbalancedInstruction ab, sodass Aufrufer Quellen in beliebiger Reihenfolge übergeben können.
Die Wallet-Adressen sind in reference/program-addresses aufgelistet.
CreateAmmConfig schreibt feste Gebühreninhaber
Vor dieser Veröffentlichung setzte create_amm_config beide Gebühreninhaber-Felder vom aufrufenden Unterzeichner:
CreateAmmConfig ist immer noch auf crate::admin::ID beschränkt. Vor dieser Veröffentlichung startete jede neue Gebührenebene mit dem Administrator in beiden Feldern und musste mit UpdateAmmConfig-Parameter 3 / 4 rotiert werden. Jetzt startet sie mit den operativen Wallets. Im Mainnet sind die Konstanten dieselben Schlüssel, die bereits als owner / fund_owner auf allen 21 bestehenden Konfigurationen gespeichert sind. Das Programm schreibt jetzt einen Wert, den Operationen früher von Hand setzen mussten.
Collection-Unterzeichner ändern sich nicht. CollectProtocolFee akzeptiert amm_config.owner oder crate::admin::ID, und CollectFundFee akzeptiert amm_config.fund_owner oder crate::admin::ID, sowohl vor als auch nach dieser Veröffentlichung.
Im Devnet werden beide Konstanten auf denselben Schlüssel aufgelöst. Siehe reference/program-addresses.
Toolchain- und Abhängigkeitsänderungen
Die Anchor-1.0-Änderungen an CPI-Aufrufstellen sind dieselben, die CPMM-Integratoren bereits bearbeitet haben.
CpiContext::new nimmt den Pubkey des Programms statt seines AccountInfo, und Context hat einen Lifetime-Parameter statt vier. In der Client-Crate gibt RequestBuilder::instructions() jetzt Vec<Instruction> ohne Result zurück, und system_program wurde zu solana-system-interface verschoben. Siehe sdk-api/rust-cpi.
Build-System-Details ohne On-Chain-Effekt:
- Localnet-Administrator. Das
localnet-Feature kompiliert nicht mehr einen festen Test-Schlüssel, der durch eine committed Fixture gestützt wird. Stattdessen liest es den Administrator aus derCLMM_LOCALNET_ADMIN-Umgebungsvariable zur Build-Zeit, dieyarn test:local-adminaus Ihrer lokalen Wallet setzt. Die.gitignore-Ausnahme der Fixture ist weg. - Release-Profil. Der doppelte
[profile.release]-Block inprograms/amm/Cargo.tomlwurde gelöscht. Cargo ignoriert[profile]außerhalb des Workspace-Roots, sodass der Root-Block bereits der gültige war, und das Programm-Levelpanic = "abort"wurde nie angewendet. - Anchor.toml.
seeds = falsewird zuresolution = trueplusskip-lint = false, und die veraltete[registry]-URL wird entfernt. - Lints.
programs/amm/Cargo.tomlfügt eine[lints.rust] unexpected_cfgs-Allowlist für die Feature-Cfgs hinzu, die die Anchor- und Solana-Makros ausgeben. - README. Auf diesem Branch sagt Ihnen das README immer noch,
rustup default 1.86.0undavm install 0.32.1voncoral-xyz/anchorauszuführen. Folgen Sie stattdessenAnchor.tomlundsolana-fundamentals/toolchain.
Was sich nicht geändert hat
- Jedes Kontolayout.
PoolState,AmmConfig,TickArrayState,TickArrayBitmapExtension,PersonalPositionState,ObservationState,LimitOrderState,DynamicFeeConfig,PermissionundSupportMintAssociatedbehalten dieselben Größen und Offsets. - Fehlercodes
6000–6051. - Swap-, Liquiditäts-, Gebühren-, dynamische Gebühren- und Limit-Order-Mathematik.
CollectExcessLamportsverschiebt Lamports, die nie Teil der Reserven eines Pools waren. - Position-NFT-Einfrieren von 2026-08-17, einschließlich der Pool-als-Freeze-Authority-Regel und des
ClosePosition-Auftau-Pfads. spl_memo. Die Memo-Programm-Einschränkung vonDecreaseLiquidityV2wurde vonspl_memo::id()zuanchor_spl::memo::IDverschoben. Beide benennen dieselbe Adresse;anchor-splhat nur den Export umbenannt.- Programm-ID.
Aktualisierte Seiten
products/clmm/instructions: Upgrade-Banner;CollectExcessLamports-Abschnitt mit seiner Kontoliste, Zwei-Durchlauf-Dispatch-Tabelle und Pro-Pool-Scoping; Inventar-, Admin-Gating- und State-Change-Matrix-Zeilen; Gebühreninhaber-Notiz aufCollectProtocolFee/CollectFundFee.products/clmm/accounts:AmmConfig-Eigentümer-Kommentare und eine Notiz darüber, wasCreateAmmConfigschreibt.products/clmm/code-demos: Versions-Banner und Rust-CPI-Skelett zu Anchor 1.0 verschoben.products/cpmm/code-demos: Die Notiz „kann eine Crate nicht mit CLMM teilen” entfernt.reference/error-codes:6052dokumentiert.reference/program-addresses: neuer Abschnitt „CLMM-Gebühreninhaber-Wallets”; CLMM zu „Excess-Lamports-Collection-Wallets” hinzugefügt.sdk-api/rust-cpi,sdk-api/anchor-idl,solana-fundamentals/toolchain: Anchor-1.0-Pins fürraydium-clmm, und die Crate-Split-Warnung in den Ruhestand versetzt.solana-fundamentals/rent-and-reclaimable-rent: CLMM zu „Was die Raydium-Programme auf ihrer eigenen Seite verarbeiten” hinzugefügt.security/admin-and-multisig: CLMM-Excess-Lamports-Collector-Rolle.protocol-overview/versions-and-migration: CLMM-Upgrade-Verlauf-Punkt.

