# Solana Maker Generator
Этот скрипт создает несколько кошельков, выполняет покупку и продажу указанного токена через Jupiter Aggregator и возвращает остатки SOL на мастер-кошелек. Предназначен для генерации уникальных «мейкеров» (кошельков, которые совершали сделки с токеном) на DEX Solana.
## Возможности
- Генерация или загрузка существующих кошельков (сохраняются в `wallets.json`).
- Перевод SOL с мастер-кошелька на каждый новый кошелек (с учетом комиссий и ренты).
- Покупка (SOL → токен) через Jupiter API v6.
- Продажа (токен → SOL) всего баланса токена.
- Настраиваемые задержки, проскальзывание, лимиты compute units и приоритетная комиссия.
- **Проверки и валидация**:
- Проверка конфигурационного файла перед запуском.
- Проверка достаточности баланса мастер-кошелька для всех операций.
- Повторные попытки (retry) при получении котировки и отправке транзакций (до 3 раз).
- Верификация баланса токена после покупки (должен увеличиться).
- Проверка наличия токенов перед продажей.
- Предупреждение, если после продажи остались токены (из-за округления).
- Возврат остатков SOL на мастер-кошелек после обработки каждого кошелька (sweep).
- Детальное логирование и итоговая статистика.
## Требования
- Node.js v16 или выше.
- RPC-эндпоинт Solana (Helius, QuickNode или публичный).
- Мастер-кошелек с достаточным количеством SOL для финансирования операций.
## Установка
1. Создайте папку проекта и поместите в неё файлы:
- `index.js`
- `config.json`
- `package.json`
2. Выполните `npm install` для установки зависимостей.
## Конфигурация
Отредактируйте `config.json`:
- `MASTER_PRIVATE_KEY` — приватный ключ мастер-кошелька в base58.
- `RPC_URL` — ваш RPC URL (например, от Helius или QuickNode).
- `TOKEN_MINT_ADDRESS` — адрес mint токена, с которым будут производиться сделки.
- `NUM_WALLETS` — количество кошельков-мейкеров для генерации/обработки.
- `SOL_PER_WALLET` — количество SOL для каждой покупки (в SOL).
- `MIN_DELAY_MS` / `MAX_DELAY_MS` — диапазон случайной задержки между покупкой и продажей (в миллисекундах).
- `SLIPPAGE_BPS` — допустимое проскальзывание в базисных пунктах (100 = 1%).
- `COMPUTE_UNIT_LIMIT` — (опционально) лимит вычислительных единиц на транзакцию.
- `PRIORITY_FEE_MICRO_LAMPORTS` — (опционально) приоритетная комиссия в микролампортах за единицу compute unit.
Пример `config.json` см. в отдельном файле.
## Использование
Запустите скрипт командой:
```bash
npm startСкрипт выполнит следующие шаги:
- Проверит конфигурацию и баланс мастер-кошелька.
- Загрузит существующие кошельки из wallets.json или сгенерирует новые.
- Для каждого кошелька: · Убедится, что на кошельке достаточно SOL (если нет – переведёт с мастер-кошелька). · Выполнит покупку (SOL → токен) и проверит увеличение баланса токена. · Подождет случайную задержку. · Выполнит продажу всего баланса токена (токен → SOL). · Вернёт оставшийся SOL на мастер-кошелек (sweep).
- Выведет итоговую статистику.
Проверки и валидация
Скрипт включает следующие механизмы для повышения надёжности:
· Валидация конфигурации: перед запуском проверяется наличие всех обязательных полей и корректность числовых значений. · Проверка мастер-баланса: вычисляется приблизительная сумма SOL, необходимая для всех операций, и сравнивается с текущим балансом мастер-кошелька. При недостатке средств выполнение прерывается. · Retry при получении котировки: если запрос к Jupiter API не удался, выполняется до 3 повторных попыток с увеличивающейся задержкой. · Проверка котировки: если полученная котировка пуста или outAmount равен 0, выбрасывается ошибка. · Верификация покупки: после успешной транзакции скрипт ожидает 3 секунды и проверяет, что баланс токена на кошельке увеличился. Если нет – операция считается неудачной. · Проверка перед продажей: если баланс токена равен 0, продажа не выполняется (генерируется ошибка). · Проверка после продажи: если после продажи остались токены (возможно из-за округления), выводится предупреждение. · Retry для транзакций: при отправке любой транзакции выполняется до 3 повторных попыток в случае ошибок RPC. · Обработка ошибок и sweep: даже при сбое в обработке кошелька скрипт пытается вернуть его SOL на мастер-кошелек.
Важные замечания
· Убедитесь, что мастер-кошелек имеет достаточный баланс SOL для всех переводов и комиссий. · Токен должен обладать достаточной ликвидностью на Jupiter для запрашиваемых сумм. · Приватные ключи генерируемых кошельков сохраняются в wallets.json – храните этот файл в безопасности. · Если кошелек не удалось обработать, его SOL всё равно будут возвращены (sweep), но он не будет засчитан как успешный мейкер.
Отказ от ответственности
Используйте скрипт на свой страх и риск. Авторы не несут ответственности за любые финансовые потери или проблемы, возникшие в результате использования данного программного обеспечения.