⚠️ Статус инфраструктуры: Инцидент Апреля 2026
Обратите внимание: Mainnet смарт-контракты Drift Protocol в данный момент заморожены из-за успешной хакерской атаки в апреле 2026 года. Любые запросы к RPC-узлам, попытки инициализации DriftClient или отправки транзакций в основную сеть завершатся с ошибкой программы. Данное руководство предоставляется в образовательных и исследовательских целях для анализа архитектуры протокола, а также для разработчиков, работающих в локальных симуляциях (Devnet/Localhost).
Обзор архитектуры: Solana RPC & Anchor
В отличие от централизованных бирж (с REST/WS серверами) или гибридных ZK-Rollups, Drift Protocol v2 был полностью реализован как набор ончейн-программ (смарт-контрактов) на блокчейне Solana с использованием фреймворка Anchor. Для программного трейдинга не использовались классические "API-ключи". Взаимодействие происходило через отправку подписанных транзакций напрямую в блокчейн.
Безопасность SDK: Управление Keypair
Вместо API-ключа (Account ID / Secret), разработчикам на Solana необходим Solana Keypair (Ed25519). Этот файл (`id.json`) хранит приватный ключ, который обладает полным доступом к вашим средствам.
Ключевые практики безопасности (Solana Botting):
- Изоляция средств: Использовался отдельный кошелек только для торгового бота, пополняемый минимально необходимым балансом SOL для оплаты комиссий за транзакции.
- Delegated Keys (Функция Drift): Drift поддерживал систему "делегированных ключей", позволяя назначать горячему ключу бота ограниченные права (только торговля, без возможности вывода средств).
- Защита RPC: Использование приватных RPC-эндопинтов со скрытыми URL для защиты от DDoS-атак на вашего бота.
Применение SDK: Роли участников сети
Высокая пропускная способность Solana (~400 мс время блока) позволяла разработчикам создавать сложные HFT-стратегии и инфраструктурных ботов, которые поддерживали работоспособность протокола:
- JIT Makers (Маркетмейкеры): Боты, участвующие в 5-секундных аукционах (Just-in-Time). Они перехватывали рыночные ордера пользователей, предоставляя им нулевое проскальзывание в обмен на комиссии.
- DLOB Keepers: Оффчейн-агенты, которые поддерживали децентрализованную книгу лимитных ордеров (DLOB). Они мониторили блокчейн и вызывали контракт на исполнение (matching), когда цена оракула (Pyth) достигала лимитной цены пользователя.
- Liquidators: Боты, отслеживающие здоровье кросс-маржинальных аккаунтов (Health Factor) и ликвидирующие убыточные позиции, забирая процент от ликвидации в качестве награды.
Инициализация среды: TypeScript SDK
Официальный инструмент для разработки — пакет @drift-labs/sdk. Процесс подключения включал в себя следующие шаги:
- Настройка Provider: Создание Anchor Provider с привязкой к вашему RPC-узлу (например, Helius) и кошельку (Keypair).
- Подписка на аккаунты (WebSockets): Инициализация
DriftClientс использованием WebSocket подписок. В Solana это критически важно: клиент должен локально кешировать состояние пулов (DAMM) и аккаунтов пользователей, чтобы не запрашивать их перед каждой сделкой. - Формирование инструкций: SDK компилирует ваши параметры (размер ордера, плечо) в инструкции Solana, подписывает их вашим
Keypairи отправляет транзакцию в сеть.
Обработка ошибок (Anchor Program Errors)
Поскольку логика обрабатывалась в смарт-контрактах, коды ошибок были представлены в виде кастомных шестнадцатеричных кодов Anchor. Наиболее частые из них:
| Hex-Код | Название / Причина | Решение (Логика бота) |
|---|---|---|
| 0x1770 | InsufficientCollateral | Недостаточно маржи для открытия позиции. Бот должен пересчитывать вес активов (Oracle Price × Margin Weight) перед отправкой. |
| 0x1774 | OrderDoesNotExist | Попытка отменить или изменить ордер, который уже был исполнен DLOB Keeper'ом. Требуется синхронизация стейта. |
| 0x178A | OracleStaleForMargin | Цена оракула Pyth устарела в данном блоке. Повторить транзакцию через 1-2 слота (400-800 мс). |
Пример кода: Подключение и размещение ордера
TypeScript: Инициализация DriftClient
Пример использования @drift-labs/sdk для подключения к протоколу. Напоминание: данный код не будет работать в Mainnet до полного устранения последствий инцидента 2026 года.
import { Connection, Keypair } from '@solana/web3.js';
import { Wallet, AnchorProvider } from '@coral-xyz/anchor';
import { DriftClient, PublicKey, PositionDirection, OrderType } from '@drift-labs/sdk';
async function initDriftBot() {
// 1. Инициализация RPC и кошелька
const connection = new Connection("https://ваша-rpc-нода.solana.com");
const keypair = Keypair.fromSecretKey(new Uint8Array([/* ВАШ ПРИВАТНЫЙ КЛЮЧ */]));
const wallet = new Wallet(keypair);
const provider = new AnchorProvider(connection, wallet, {});
// 2. Создание клиента Drift
// ВНИМАНИЕ: С апреля 2026 контракты заморожены!
const driftClient = new DriftClient({
connection,
wallet: provider.wallet,
programID: new PublicKey('dRiftyHA39MWEi3m9aunc5MzRF1JzxgPi1U1k864YkQ'), // Drift v2 Program ID
env: 'mainnet-beta',
});
await driftClient.subscribe();
console.log("Успешное подключение к состоянию Drift!");
// 3. Пример размещения лимитного ордера (Long SOL-PERP)
const marketIndex = 0; // Индекс для SOL-PERP
const txSig = await driftClient.placePerpOrder({
orderType: OrderType.LIMIT,
direction: PositionDirection.LONG,
marketIndex,
baseAssetAmount: driftClient.convertToPerpPrecision(10), // 10 SOL
price: driftClient.convertToPricePrecision(150.50), // $150.50
});
console.log("Транзакция отправлена:", txSig);
}
initDriftBot();
Интеграция на Python: driftpy
Для дата-саентистов и разработчиков, специализирующихся на статистическом арбитраже, комьюнити поддерживало библиотеку DriftPy. Библиотека строилась поверх solana-py и anchorpy.
Основным юзкейсом Python-ботов был сбор исторических данных ставок финансирования (Funding Rates) напрямую из блокчейна, расчет метрик для машинного обучения (ML) и выполнение стратегий возврата к среднему (Mean Reversion) на кросс-маржинальных счетах.
→ Общие принципы создания Python-ботов для DEX
Часто задаваемые вопросы (FAQ) по Drift SDK
Почему API Drift Protocol возвращает ошибки таймаута или отказа в обслуживании?
В апреле 2026 года Drift Protocol подвергся масштабной хакерской атаке на логику смарт-контрактов. Чтобы спасти оставшуюся ликвидность, программы на блокчейне Solana были экстренно заморожены управляющим советом (Council). На данный момент любые ончейн-взаимодействия с протоколом отклоняются на уровне блокчейна.
Чем Drift SDK отличается от стандартных REST API (как у Binance)?
Drift — это некастодиальный on-chain протокол. Разработчики не общаются с централизованным сервером матчинга (REST API). Вместо этого SDK сериализует параметры ордера, подписывает их локально вашим криптографическим ключом и транслирует как RPC-транзакцию напрямую валидаторам сети Solana.
Как тестировать ботов, если Mainnet остановлен?
Разработчики могут использовать solana-test-validator для локального форка блокчейна до момента инцидента. SDK позволяет сменить параметр окружения на devnet или local, что дает возможность симулировать торговлю, тестировать DLOB-киперов и готовить алгоритмы к потенциальному перезапуску протокола (Drift v3).