Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Версия документации. Все примеры ориентированы на
@raydium-io/raydium-sdk-v2@0.2.42-alpha в сети Solana mainnet-beta, проверено в 04.2026. SDK внутренне работает с версиями v3 / v5 / v6 в зависимости от владельца программы фермы; примеры ниже предполагают ферму v6. Смотрите reference/program-addresses для трёх ID программ.Настройка
Примеры здесь отражают файлы вraydium-sdk-V2-demo/src/farm. Инициализация следует config.ts.template из репозитория примеров:
Получение фермы по ID
getFarmById загружает FarmState с цепи, декодирует в соответствии с версией программы и преобразует зафиксированную ставку эмиссии в обычный Decimal за секунду.
Стейкинг LP-токенов
Источник:src/farm/stake.ts
Только сбор наград (harvest)
Источник:src/farm/harvest.ts
harvestAllRewards принимает список — для пользовательских интерфейсов с портфолио группируйте вызовы. Каждая ферма собирается отдельной инструкцией в одну транзакцию (с учётом ограничения в 1232 байта; для более 6 ферм разделите на несколько транзакций).
Для одной фермы на v6 можно также использовать явный путь Harvest:
amount: 0 обязательна; SDK правильно её обрабатывает.
Анстейкинг
Источник:src/farm/unstake.ts
Создание фермы v6
Источник:src/farm/createAmmFarm.ts и editAmmFarm.ts
perSecond— целочисленная ставка эмиссии в секунду. SDK упаковывает её в Q64.64 перед отправкой. Для дробной ставки масштабируйте и корректируйте продолжительность.- Полный бюджет (
perSecond × duration) должен быть в вашем ATA вознаграждения —createперемещает его в хранилище вознаграждений атомарно. - Вы можете инициировать до 5 потоков вознаграждений в одном вызове
create. Список аккаунтов растёт на(reward_mint, reward_vault, sender_ata, token_program)за каждый дополнительный поток; имейте в виду ограничение размера транзакции в 1232 байта. Для 4+ потоков создавайте с 1–2 и используйтеAddRewardв последующих транзакциях.
Пополнение существующего потока вознаграждений
setRewards продлевает end_time и переводит разницу бюджета. Инструкция не может сократить поток, не может снизить per_second на активном потоке и не может изменить mint вознаграждения. Для замены mint дождитесь end_time и используйте AddReward на освободившемся слоте (если есть), или создайте новую ферму.
Перезапуск завершённого потока
reward_state == 2 (завершено) целевого слота. Вызывающая сторона должна быть reward_sender слота (v6) или владельцем фермы (v5).
Rust CPI
В отличие от AMM v4, программа фермы v6 поставляется с крейтом Anchor (raydium_farm_v6), опубликованным вместе с исходниками SDK и фронтенда. Минимальный пример Deposit:
remaining_accounts должен точно соответствовать активным слотам вознаграждения фермы 1-в-1 (пары reward_vault_i, user_reward_ata_i в порядке индексов). Пропуск или неправильный порядок этих аккаунтов приведёт к скрытому неправильному учёту — программа передаст неверную сумму.
Подводные камни
- Забыли собрать награды перед вывводом. Безвредно —
Withdrawсначала выплачивает накопленные награды. Но если ваш интерфейс показывает “собрать” отдельно от “вывести”, пользователь может подумать, что послеWithdrawесть ещё что-то для сбора. Нет; всё накопленное к этому моменту было выплачено. total_staked = 0во время эмиссии. Эмиссия, накопленная когда ничего не было застейкано, теряется (формула обновленияreward_per_shareделит на 0 и программа пропускает обновление). Для программ с запланированнымopen_timeпроведите “начальный стейк” в момент open_time, чтобы избежать этого.- Комиссии передачи Token-2022. На фермах v6 с mint вознаграждений Token-2022 комиссия передачи применяется при эмиссии (хранилище → пользователь). Учитывайте это в расчётах APR.
- Малый
per_secondна v5.u64ставка v5 означает, что любойper_second < 1единица токена в секунду (на mint с ≥9 дец., это часто желаемая ставка) не может быть выражена — ставка потока округляется до 0 и ферма ничего не выплачивает. Используйте v6.
Дальнейшие шаги
products/farm-staking/instructions— справочник базовых инструкций.products/clmm/fees— сравнение с встроенными потоками вознаграждений CLMM.user-flows/migrate-amm-v4-to-cpmm— часто сопровождается созданием новой фермы CPMM.
- Raydium SDK v2
- IDL Farm v6 включён в
raydium-io/raydium-sdk-V2вsrc/raydium/farm/.

