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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Raydium не публикует официальный Python SDK. Описанные здесь подходы объединяют три хорошо поддерживаемые библиотеки сообщества:
solders (привязки на Rust для примитивов Solana), solana-py (RPC-клиент) и anchorpy (построение инструкций в стиле Anchor из IDL). Такая комбинация покрывает всё, что делает TS SDK, просто менее отполирована.Окружение
anchorpy периодически отстаёт от версии anchor-lang; для недавно развёрнутой программы Raydium проверьте, что IDL компилируется с вашей закреплённой версией anchorpy, прежде чем публиковать код.
Подключение и ключевая пара
AsyncClient — это асинхронный вариант; синхронный Client доступен для быстрых скриптов, но асинхронный предпочтителен для всего, что отправляет несколько запросов.
Чтение состояния пула
В большинстве боевых приложений состояние пула читается из REST API Raydium (см.sdk-api/rest-api) вместо ручного декодирования on-chain данных — это проще и задержка приемлема для большинства случаев.
src/raydium/cpmm/layout.ts (исходный код на TS); портируйте его в construct по мере необходимости. anchorpy может делать это автоматически на основе IDL — см. ниже.
Построение и отправка свопа
Для простоты используйте endpoint server-built-transaction Raydium. Сервер возвращает готовую к подписанию транзакцию; вам остаётся только добавить свою подпись:Построение свопа на клиенте (через anchorpy)
Для минимальной задержки или когда вы не можете достучаться до API Raydium (санкционированные регионы, изолированные системы):
anchorpy не выводит их автоматически.
Типичная архитектура бота
Распространённая структура Python-бота для Raydium:- RPC-провайдер. Публичные RPC mainnet-а агрессивно ограничивают. Используйте выделенного провайдера (Helius, QuickNode, Triton) для устойчивого трафика.
- WebSocket для состояния пула.
client.account_subscribe(pool_id)отправляет обновления при каждом изменении состояния. Намного плотнее, чем polling. - Провайдер приоритетного комиссионера. Helius имеет endpoint
getPriorityFeeEstimate; Triton имеет свой. Размер комиссии рассчитывайте на основе 75-го процентиля недавних комиссий на целевой программе. - Bundles для чувствительных к MEV сделок. Маршрутизируйте через block engine Jito, если не можете допустить риск sandwich. Python-библиотеки:
jito-sdk-python(третьесторонняя, качество варьируется).
Чтение состояния фермы
.account["X"].decode(bytes) в anchorpy возвращает нативный Python-объект, соответствующий структуре из IDL.
Типичные ошибки
1. Обработка десятичных чисел
Нативный Pythonfloat — это IEEE-754 double; количества в 9-десятичных минтах (1 SOL = 1e9 единиц) остаются точными, но соотношения и произведения теряют точность. Используйте int (solders возвращает int для всех полей количеств) и проходите через decimal.Decimal для любой цены.
2. Логика на основе слотов vs временных меток
Некоторые версии фермы используют счётчики слотов; LaunchLab использует временные метки.solana-py возвращает slot в RPC-ответах, но преобразование slot → timestamp с потерями (зависит от schedule лидера). Если вам нужно реальное время, явно вызовите get_block_time(slot).
3. Истощение пула соединений
AsyncClient по умолчанию открывает одно HTTP-соединение на запрос. При высокой нагрузке переиспользуйте сессии httpx.AsyncClient и установите подходящий limits=httpx.Limits(max_connections=100).
4. Ограничения размера транзакции
Python-построенные транзакции не меньше TS-построенных — лимит 1232 байта применяется одинаково. Используйте V0-транзакции (таблицы поиска адресов) для всего, что маршрутизируется через более чем ~2 пула.Дополнительные материалы
sdk-api/rest-api— HTTP endpoints, используемые выше.sdk-api/anchor-idl— где взять IDL дляanchorpy.integration-guides/routing-and-mev— паттерны Jito bundles.


