Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Эта запись охватывает предстоящее обновление программы CLMM. Она была проверена на ветке
chore/upgrade-anchor репозитория raydium-clmm (head a72f9e1) перед развёртыванием. Перед использованием нового инструмента или изменённого поведения CreateAmmConfig подтвердите развёрнутую программу.0.32.1 на =1.0.2, а цепочка инструментов сборки переходит с Agave 2.3.0 на 3.1.10. Вместе с этим идут два изменения на стороне администратора: новый инструмент CollectExcessLamports и фиксированные владельцы комиссии в CreateAmmConfig.
Каждый инструмент, который вызывают трейдер, LP, пользователь лимитных ордеров или создатель пула, сохраняет свой список учётных записей, аргументы и математику.
TL;DR для интеграторов
- Ни один пользовательский инструмент не изменился.
CreatePool,CreateCustomizablePool,CreatePermissionedPool, все путиOpenPosition*/IncreaseLiquidity*/DecreaseLiquidity*,ClosePosition,Swap/SwapV2/SwapRouterBaseIn, пять инструментов лимитных ордеров и инструменты вознаграждения идентичны на проводе. Ни один макет учётной записи не изменился. - Добавлен один инструмент:
CollectExcessLamports. Он только для администратора и не принимает аргументов. Он обрабатывает один пул за вызов: собственныйPoolStateпула всегда обрабатывается, и PDA пула подписывает свои хранилища, которые вы передаёте вremaining_accounts. Любая другая учётная запись, принадлежащая CLMM, вremaining_accountsтакже обрабатывается. См.products/clmm/instructions. - Добавлен один код ошибки:
6052LamportsCalculateError. Коды6000–6051не изменились. CreateAmmConfigбольше не копирует подписанта вowner/fund_owner. Новые конфигурации получают жёстко закодированные ключиprotocol_fee_ownerиfund_fee_owner. На мейннете это те же два ключа, которые уже хранятся на всех 21 существующих конфигурациях. Существующие учётные записиAmmConfigне затронуты, поэтому продолжайте читать поля из учётной записи.- Обновите свой IDL. Он добавляет один инструмент и один вариант ошибки, всего 39 инструментов и 53 ошибки.
- Теперь вы можете поместить CPMM и CLMM в один крейт. Оба репозитория закрепляют
anchor-lang/anchor-spl=1.0.2на своих веткахchore/upgrade-anchor, поэтому одна программа может делать CPI в обе. См.sdk-api/rust-cpi. - Пакет TypeScript-клиента переименован. Набор тестов переходит с
@coral-xyz/anchor0.32.1на@anchor-lang/core1.0.2.
CollectExcessLamports
Шаг 1 SIMD-0437 активировался на мейннете 3 сентября 2026 года. Каждая учётная запись CLMM, созданная до шага, теперь переполнена, и только программа CLMM может перемещать лампорты из учётной записи, которой она владеет. Это охватывает хранилища пула, хранилища вознаграждения, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension и остальное.
Инструмент принимает четыре фиксированные учётные записи, затем любое количество исходных учётных записей в remaining_accounts:
Пул является органом подписания, а не глобальным PDA программы. CPMM подписывает с одним глобальным органом
vault_and_lp_mint_auth_seed. Хранилища токенов CLMM принадлежат своему PoolState, поэтому один вызов может подписать только для пула, переданного в слот 2. Каждая исходная учётная запись программы токенов должна иметь этот пул в качестве своего органа: token_vault_0, token_vault_1 или одно из хранилищ вознаграждения пула. Учётная запись токена из другого пула или учётная запись токена пользователя не пройдёт проверку владельца программы токенов и отменит весь инструмент. Программа не пропускает её. Минты NFT позиций также не подлежат обработке, потому что их орган выпуска отозван при открытии позиции. Обрабатывайте пул за пулом.
Инструмент делает два прохода, и этот порядок фиксирован:
- Сначала CPI программы токенов. Для каждого источника, принадлежащего SPL Token или Token-2022, учётная запись, не являющаяся нативной, получает
WithdrawExcessLamports(дискриминант38). Нативное хранилище wSOL получает раундSyncNative→UnwrapLamports(дискриминант45), который заканчивается проверкой того, что обёрнутый баланс равен его значению до синхронизации. Если это не так, вызов завершится с ошибкойLamportsCalculateError. Хранилище на стороне SOL сохраняет полную ликвидность, и ни один котировка свопа не изменяется при обработке. - Прямые дебеты во вторую очередь. Проход 2 дебетует
pool_stateпервым, затем каждый источник, принадлежащий программе CLMM, вплоть доrent.minimum_balance(data_len).
UnbalancedInstruction, поэтому вызывающие могут передавать источники в любом порядке.
Адреса кошельков указаны в reference/program-addresses.
CreateAmmConfig записывает фиксированных владельцев комиссии
До этого выпуска create_amm_config устанавливал оба поля владельца комиссии из подписанта вызова:
CreateAmmConfig по-прежнему ограничен crate::admin::ID. До этого выпуска каждый новый уровень комиссии начинался с администратора в обоих полях и должен был быть повёрнут с помощью параметра UpdateAmmConfig 3 / 4. Теперь он начинается с операционных кошельков. На мейннете константы — это те же ключи, которые уже хранятся как owner / fund_owner на всех 21 существующих конфигурациях. Программа теперь записывает значение, которое операции раньше устанавливали вручную.
Подписанты сбора не изменяются. CollectProtocolFee принимает amm_config.owner или crate::admin::ID, и CollectFundFee принимает amm_config.fund_owner или crate::admin::ID, как до, так и после этого выпуска.
На девнете обе константы разрешаются в один и тот же ключ. См. reference/program-addresses.
Изменения цепочки инструментов и зависимостей
Изменения Anchor 1.0 на сайтах вызовов CPI — это те же, которые интеграторы CPMM уже обработали.
CpiContext::new принимает Pubkey программы вместо её AccountInfo, и Context имеет один параметр жизни вместо четырёх. В клиентском крейте RequestBuilder::instructions() теперь возвращает Vec<Instruction> без Result, и system_program переместился в solana-system-interface. См. sdk-api/rust-cpi.
Детали системы сборки без эффекта в цепи:
- Администратор локальной сети. Функция
localnetбольше не компилирует фиксированный тестовый ключ, поддерживаемый зафиксированным приспособлением. Вместо этого она читает администратора из переменной окруженияCLMM_LOCALNET_ADMINво время сборки, которуюyarn test:local-adminустанавливает из вашего локального кошелька. Исключение.gitignoreприспособления удалено. - Профиль выпуска. Дублирующийся блок
[profile.release]вprograms/amm/Cargo.tomlбыл удалён. Cargo игнорирует[profile]вне корня рабочей области, поэтому блок корня уже был действующим, иpanic = "abort"на уровне программы никогда не применялся. - Anchor.toml.
seeds = falseстановитсяresolution = trueплюсskip-lint = false, и устаревший URL[registry]удаляется. - Линты.
programs/amm/Cargo.tomlдобавляет список разрешений[lints.rust] unexpected_cfgsдля конфигов функций, которые выпускают макросы Anchor и Solana. - README. На этой ветке README по-прежнему говорит вам запустить
rustup default 1.86.0иavm install 0.32.1изcoral-xyz/anchor. Вместо этого следуйтеAnchor.tomlиsolana-fundamentals/toolchain.
Что не изменилось
- Каждый макет учётной записи.
PoolState,AmmConfig,TickArrayState,TickArrayBitmapExtension,PersonalPositionState,ObservationState,LimitOrderState,DynamicFeeConfig,PermissionиSupportMintAssociatedсохраняют одинаковые размеры и смещения. - Коды ошибок
6000–6051. - Математика свопа, ликвидности, комиссии, динамической комиссии и лимитных ордеров.
CollectExcessLamportsперемещает лампорты, которые никогда не были частью резервов пула. - Замораживание NFT позиции из 2026-08-17, включая правило пула как органа замораживания и путь оттаивания
ClosePosition. spl_memo. Ограничение программы memo вDecreaseLiquidityV2переместилось сspl_memo::id()наanchor_spl::memo::ID. Оба называют один и тот же адрес;anchor-splпросто переименовал экспорт.- ID программы.
Обновлённые страницы
products/clmm/instructions: баннер обновления; разделCollectExcessLamportsсо списком учётных записей, таблицей двухпроходной отправки и областью действия для каждого пула; строки инвентаря, ограничения администратора и матрицы изменения состояния; примечание о владельце комиссии наCollectProtocolFee/CollectFundFee.products/clmm/accounts: комментарии владельцаAmmConfigи примечание о том, что записываетCreateAmmConfig.products/clmm/code-demos: баннер версии и скелет Rust CPI перемещены на Anchor 1.0.products/cpmm/code-demos: примечание “не может делиться крейтом с CLMM” удалено.reference/error-codes:6052задокументирована.reference/program-addresses: новый раздел “CLMM fee-owner wallets”; CLMM добавлен в “Excess-lamports collection wallets”.sdk-api/rust-cpi,sdk-api/anchor-idl,solana-fundamentals/toolchain: закрепления Anchor 1.0 дляraydium-clmm, и предупреждение о разделении крейтов снято.solana-fundamentals/rent-and-reclaimable-rent: CLMM добавлен в “What the Raydium programs sweep on their own side”.security/admin-and-multisig: роль сборщика избыточных лампортов CLMM.protocol-overview/versions-and-migration: пункт истории обновления CLMM.

