Поддерживает SOL, SPL-токены

Solana API: платежи SOL и SPL-токенами через REST

Создавайте адреса Solana и перемещайте SOL и SPL-токены обычными REST-вызовами. Никакого web3.js и никакого SDK для установки.

7 дней бесплатно — для начала не нужна карта и KYC Некастодиальный — приватные ключи остаются под вашим контролем Тарифы от 49 €/мес (490 €/год) — посмотреть тарифы и лимиты запросов

Solana API не должен навязывать вашему бэкенду JavaScript SDK. Chaingateway оборачивает Solana в обычный REST: вы создаёте адреса и отправляете SPL-токены двумя POST-запросами, а GET возвращает текущую высоту блока. Аутентификация — Bearer-токен в заголовке Authorization. Ответы — JSON. Ваш бэкенд на PHP, Go или Java общается с Solana так же, как с любым другим HTTP-сервисом.

Пробный период длится 7 дней и не требует KYC. Создайте API-ключ и выполните первый запрос до появления следующего блока.

Одна возможность на эндпоинт

RPC-провайдеры структурируют документацию по Solana по возможностям: доступ к ноде здесь, стриминг там, вебхуки в третьем месте. Поверхность Solana у Chaingateway меньше намеренно, потому что это платёжный API, а не сервис ноды общего назначения. Отображённая тем же способом, она выглядит так:

ВозможностьЭндпоинтСтатус
Создание адресовPOST /api/v2/solana/addressesРаботает
Отправка SOLPOST /api/v2/solana/transactionsРаботает
Отправка SPL-токеновPOST /api/v2/solana/transactions/SPLРаботает
Проверка балансаGET /api/v2/solana/balances/{address}Работает
Чтение состояния сетиGET /api/v2/solana/blocks/numberРаботает
Вебхуки депозитовПока нет в Solana; паттерн опроса ниже

Каждый эндпоинт принимает тот же Bearer-токен, а заголовок X-Network: testnet переключает любой запрос на тестовое окружение. Схемы запроса и ответа — в справочнике API.

Простые транзакции

Отправляйте SOL и SPL-токены простым JSON-payload. Solana производит блоки значительно быстрее секунды, поэтому выплата обычно подтверждается, пока ваш пользователь ещё смотрит на индикатор загрузки.

Безопасная обработка адресов

Адреса Solana — это 32-байтовые открытые ключи в кодировке base58, и API валидирует их перед построением любой транзакции. Архитектура некастодиальная: ключи от ваших средств принадлежат вам.

Декодированные запросы

Данные транзакций возвращаются как структурированный JSON, а не base64-кодированные блобы. Переводы токенов читаемы без обращения к сырым данным инструкций.

Вебхуки (IPN)

Честно сразу: вебхуки пока недоступны для Solana. Отслеживайте депозиты опросом вместо этого; GET /api/v2/solana/blocks/number сообщает, когда приходят новые блоки, чтобы вы могли задавать темп проверок, а GET /api/v2/solana/balances/{address} отвечает, поступило ли что-то. В Ethereum, BSC, Polygon, Arbitrum, TRON и Bitcoin вебхуки депозитов работают уже сегодня.

Solana через REST, без web3.js

Официальный путь в Solana — это JSON-RPC, задокументированный на solana.com/docs/rpc. Он раскрывает протокол ноды: методы вроде getLatestBlockhash и sendTransaction, плюс клиентскую библиотеку, делающую их пригодными к использованию. Чтобы отправить SPL-токен таким способом, ваш код получает свежий blockhash до его истечения, разрешает associated token account получателя (и создаёт его, если он ещё не существует), затем строит, подписывает и сериализует транзакцию. В JavaScript web3.js и пакет spl-token делают это за вас. На любом другом языке вы во многом предоставлены сами себе.

Chaingateway заменяет это одним HTTP-вызовом. API разрешает токен-аккаунты и строит транзакцию на стороне сервера, а ваш бэкенд никогда не импортирует Solana SDK. Если вам нужен сырой доступ к сети для аналитики или собственных программ, RPC-провайдер — правильный инструмент. Для платежей REST короче, а у более короткого кода меньше мест, где что-то может сломаться.

Минты, токен-аккаунты и ATA: почему переводы Solana отличаются

Если вы пришли из Ethereum, BSC или Polygon, часть Solana, которая с наибольшей вероятностью вас укусит, — это не скорость и не комиссии. Это модель аккаунтов.

Модель EVM

Баланс токена — это запись внутри собственного хранилища контракта токена. Ваш адрес «держит» USDT, потому что внутренняя таблица контракта так говорит. Отправка токенов на совершенно новый кошелёк просто добавляет строку в эту таблицу; получателю не нужно существовать в сети каким-либо особым образом.

Модель Solana

Solana разбивает ту же идею на отдельные аккаунты. Токен определяется своим mint-аккаунтом, который хранит эмиссию и десятичные знаки. Балансы живут в токен-аккаунтах, по одному на комбинацию кошелька и минта, и стандартный вариант — associated token account (ATA): его адрес детерминированно выводится из адреса кошелька и адреса минта. Ваш кошелёк не содержит USDC. Он владеет отдельным аккаунтом, который содержит USDC.

Два следствия для платежей

  1. ATA должен существовать, прежде чем токены смогут в него попасть. Если ваш получатель никогда не держал этот токен, аккаунт нужно создать в сети, а создание требует депозита, делающего его rent-exempt: 0,00203928 SOL по состоянию на середину 2026 года, согласно официальной документации Solana. На практике транзакция отправителя создаёт и финансирует недостающий аккаунт.
  2. Переводы перемещают стоимость между токен-аккаунтами, а не между адресами кошельков. Код, наивно нацеленный на адрес кошелька, завершится неудачей, поэтому инструкция перевода SPL принимает оба токен-аккаунта плюс минт и его десятичные знаки для проверки.

Именно эту бухгалтерию Chaingateway выполняет на стороне сервера. Вы передаёте адреса кошельков и минт токена; API выводит токен-аккаунты и строит корректный перевод. Ваш бэкенд никогда не узнаёт, что такое program-derived address, — в этом и суть.

REST против web3.js: один и тот же перевод, дважды

Вот как выглядит отправка 10 USDC с web3.js и пакетом spl-token:

Node.js
import { Connection, PublicKey } from "@solana/web3.js";
import {
  getOrCreateAssociatedTokenAccount,
  transferChecked,
} from "@solana/spl-token";

const connection = new Connection("https://your-rpc-endpoint");
const usdc = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");

const senderAta = await getOrCreateAssociatedTokenAccount(
  connection, payer, usdc, payer.publicKey
);
const recipientAta = await getOrCreateAssociatedTokenAccount(
  connection, payer, usdc, new PublicKey(recipient)
);

await transferChecked(
  connection, payer,
  senderAta.address, usdc, recipientAta.address,
  payer, 10_000_000, 6 // 10 USDC при 6 десятичных знаках
);

Один вызов вместо бухгалтерии ATA выше — создайте аккаунт и попробуйте в devnet.

Быстрый старт: три запроса до первого перевода SPL

Создайте адрес:

cURL
curl -X POST https://app.chaingateway.io/api/v2/solana/addresses \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY"
cURL
curl https://app.chaingateway.io/api/v2/solana/blocks/number \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY"
cURL
curl -X POST https://app.chaingateway.io/api/v2/solana/transactions/SPL \
  -H "Authorization: Bearer $CHAINGATEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contractaddress": "TokenMintAddress",
    "from": "YourSenderAddress",
    "to": "RecipientAddress",
    "amount": 10,
    "privatekey": "YourSenderPrivateKey"
  }'

Solana в цифрах

Цифры ниже сверены с официальной документацией Solana по состоянию на начало июля 2026 года.

Слот — окно, в котором один валидатор может произвести блок, — настроен примерно на 400 миллисекунд и на практике колеблется примерно между 400 и 600 миллисекундами. Именно этот ритм означает, что опрос депозитов каждую секунду или две никогда сильно не отстаёт от сети.

Базовая комиссия транзакции — 5000 lamports за подпись, что составляет 0,000005 SOL. Половина сжигается, половина идёт производителю блока. Поверх этого есть необязательная приоритетная комиссия, оцениваемая в микро-lamports за единицу вычислений; по умолчанию она равна нулю и покупает приоритет планирования, когда сеть загружена. Для платёжной нагрузки практическое прочтение простое: комиссии настолько малы, что растворяются внутри вашей маржи даже на транзакции в один доллар.

Подтверждение и финальность — разные вещи в Solana, и это различие важно для того, как вы зачисляете депозиты. Транзакция обычно подтверждается, то есть сверхбольшинство валидаторов проголосовало за её блок, в течение секунды-двух. Полная финальность занимает около 12,8 секунды по состоянию на середину 2026 года. Обновление консенсуса Alpenglow, запланированное к развёртыванию в конце 2026 года, нацелено сжать финальность примерно до 100–150 миллисекунд; относитесь к этому как к анонсированному плану, а не как к работающему свойству, пока оно не поставлено. Разумная политика сегодня: зачисляйте небольшие платежи при подтверждении, удерживайте крупные дополнительный десяток секунд до финальности.

Отслеживание депозитов без вебхуков

У Solana пока нет эндпоинта вебхука депозитов в API Chaingateway. Вместо этого обнаружение опрашивает два вызова: GET /api/v2/solana/blocks/number для отслеживания новых блоков и GET /api/v2/solana/balances/{address} для проверки входящих средств. При субсекундных слотах интервал опроса в две секунды всё равно показывает платёж как полученный в течение нескольких секунд.

Дисциплинированный цикл опроса дёшев в исполнении. Сохраняйте высоту блока, обработанную в последний раз, и каждый раз, когда она меняется, проверяйте ваши депозитные адреса — или GET /api/v2/solana/balances/{address}/tokens/{mint} для конкретного SPL-токена — и сопоставляйте найденное с открытыми заказами.

Стоимость задержки меньше, чем звучит. Solana производит блоки значительно быстрее секунды, поэтому даже двухсекундный интервал опроса означает, что клиент видит «оплачено» в течение нескольких секунд после отправки. Весь цикл — несколько десятков строк на любом языке, работающих как cron-задача или фоновый воркер. Когда позже вы расширите тот же поток на сеть с вебхуками, бухгалтерия остаётся идентичной; меняется только триггер, с pull на push.

Приём USDC в Solana: разобранный пример

USDC — это платёжный рельс, сделавший Solana расчётной сетью, поэтому он даёт хороший конкретный разбор. Адрес минта в mainnet — EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, выпущенный Circle; всё остальное, претендующее быть USDC, им не является.

Принимающая сторона: когда клиент оформляет заказ, создайте свежий адрес через POST /api/v2/solana/addresses и сохраните его для заказа. Покажите адрес и сумму, и позвольте клиенту заплатить с любого кошелька или биржи. Ваш цикл опроса из предыдущего раздела подхватывает входящий перевод, сопоставляет принимающий адрес с заказом и переключает его на оплаченный. При 400-миллисекундных слотах разрыв между «клиент нажал отправить» и «ваша база данных говорит оплачено» составляет несколько секунд, большая часть которых — ваш собственный интервал опроса.

Записывайте подпись транзакции каждого зачисленного депозита с уникальным ограничением. Циклы опроса перезапускаются, довосстанавливаются и перезапускаются заново, и идемпотентность на уровне базы данных гарантирует, что ничто из этого не сможет зачислить заказ дважды.

Платящая сторона зеркальна. Выплата — это один вызов POST /api/v2/solana/transactions/SPL с минтом USDC в качестве contractaddress и читаемым "amount": 10; API применяет шесть десятичных знаков USDC за вас. Держите скромный баланс SOL на отправляющем адресе: 0,000005 SOL за подпись на комиссии плюс 0,00203928 SOL всякий раз, когда нужно создать токен-аккаунт получателя. Обе суммы достаточно малы, чтобы один пополненный резерв покрывал месяцы выплат.

Что вы получаете по сравнению с карточными рельсами — это расчёт за секунды без механизма chargeback, а что вы теряете — возможность отменить ошибку. Валидация адреса, которую API выполняет перед построением транзакции, здесь ваш друг, но ваш собственный экран подтверждения важен не меньше.

Любой токен в Solana, включая ваш собственный

SPL — это стандарт токенов Solana, и API одинаково обращается с каждым SPL-минтом. USDC и USDT работают из коробки, с автоматическим применением десятичных знаков. Если вы заминтили собственный токен, передайте адрес его минта тому же эндпоинту, и он будет вести себя как основные токены. Поскольку Chaingateway использует одну структуру эндпоинтов для всех сетей, приведённый выше код Solana переносится на Ethereum, BSC или Polygon заменой сегмента сети и суффикса токена в URL: /solana/transactions/SPL становится /ethereum/transactions/erc20.

Почему разработчики выбирают Solana

Solana исполняет транзакции параллельно, а не строго последовательно, и именно отсюда берётся её пропускная способность. Комиссии достаточно малы, чтобы выплаты крошечных сумм оставались экономически оправданными, а подтверждение достаточно быстрое, чтобы страница кассы могла просто его дождаться. Объём USDC в Solana превратил сеть в серьёзную расчётную сеть, и интерес разработчиков вокруг неё держался через несколько рыночных циклов.

Testnet, devnet и заголовок X-Network

У Solana два публичных тестовых кластера, и их названия сбивают людей с толку. Devnet — повседневная песочница для разработчиков приложений: бесплатный SOL доступен из краников airdrop, и ничто на нём не имеет ценности. Testnet существует в основном для того, чтобы валидаторы и основные контрибьюторы могли испытывать новые релизы под нагрузкой. Если вы использовали Sepolia в Ethereum, devnet — ближайший по духу эквивалент.

С Chaingateway вы вообще не управляете URL кластеров. Добавьте заголовок X-Network: testnet к любому запросу, и он выполнится против тестового окружения; уберите его, и идентичный запрос станет вызовом mainnet. Нет второго API-ключа и отдельного аккаунта.

Используйте тестовый прогон для сценариев, которые больно ощутить в mainnet: выплата на адрес, никогда не державший этот токен (путь создания токен-аккаунта), перезапуск вашего цикла опроса посреди работы и дублирующая отправка одной и той же выплаты. Каждый из них занимает минуты для репетиции, и каждый становится реальным инцидентом, если вы впервые столкнётесь с ним в продакшене.

Когда запросы завершаются неудачей

API сообщает о проблемах обычными HTTP-кодами статуса, так что ничто в вашей обработке ошибок не должно быть специфичным для Solana.

401 означает, что Bearer-токен отсутствует или неверен. Ошибки в диапазоне 4xx — это сбои валидации, например адрес, не декодирующийся как base58, или отсутствующее поле; тело JSON называет, что исправить, и повтор без изменения payload бессмыслен. 429 означает, что вы достигли лимита запросов вашего тарифа; замедлитесь и синхронизируйте опрос депозитов с ритмом высоты блока, а не жёстким циклом. Тарифы с более высокими лимитами — на странице тарифов.

Ошибки сервера в диапазоне 5xx безопасно повторять для чтения. Для отправки токенов будьте осторожнее: после таймаута вы не знаете, была ли транзакция транслирована, а у Solana здесь пока нет следа вебхука. Проверьте свои записи и недавние переводы адреса перед повторной отправкой и держите одну строку базы данных на каждую задуманную выплату, чтобы повторный запуск вашего воркера не мог отправить дважды.

Логируйте полное тело ответа рядом с вашим запросом. Коды статуса и схемы ошибок для каждого эндпоинта — в справочнике API.

Построено для любого сценария использования

Самый распространённый паттерн — приём платежей: назначьте каждому клиенту депозитный адрес, опрашивайте входящие переводы SPL и отмечайте заказ оплаченным, с расчётом за секунды и комиссиями слишком малыми, чтобы иметь значение в вашем расчёте маржи. Второй паттерн — операции с кошельками: платформы, управляющие депозитами и выводами для многих пользователей через ту же горстку эндпоинтов.

Те же строительные блоки обрабатывают автоматизацию выплат для airdrop и запусков токенов, регулярные переводы для биллинга по подписке и трансграничные платежи, где альтернатива — цепочка корреспондентских банков, занимающая дни и снимающая процентные пункты.

Интеграция за три шага

Step 1

Получите API-ключ. Зарегистрируйтесь, и ключ появится в вашей панели немедленно. Пробный период 7 дней не требует KYC.

Step 2

Выполните первый запрос. Быстрый старт охватывает аутентификацию и ваш первый вызов.

Step 3

Настройте отслеживание депозитов и запустите продакшен. В Solana это означает опрос по ритму высоты блока; в других сетях вы можете переключиться на вебхуки. Когда это заработает, уберите заголовок X-Network: testnet, и тот же код заработает в mainnet.

Что работает в какой сети

Solana — единственная сеть без вебхуков депозитов пока, отсюда прочерк в этом столбце ниже на странице. Вот как полная картина эндпоинтов сравнивается по всем семи сетям.

СетьАдресаПереводы токеновВебхуки депозитов
BitcoinPOST /api/v2/bitcoin/wallets/{wallet}/addresses— (нет стандарта токенов)GET /api/v2/bitcoin/webhooks/notifications
EthereumPOST /api/v2/ethereum/addresses/importERC-20: POST /api/v2/ethereum/transactions/erc20GET /api/v2/ethereum/webhooks/notifications
TRONPOST /api/v2/tron/addresses/importTRC-20 и TRC-10: POST /api/v2/tron/transactions/trc20 и .../trc10GET /api/v2/tron/webhooks/notifications
SolanaPOST /api/v2/solana/addressesSPL: POST /api/v2/solana/transactions/SPL
BNB Smart ChainPOST /api/v2/bsc/addresses/importBEP-20: POST /api/v2/bsc/transactions/bep20GET /api/v2/bsc/webhooks/notifications
PolygonPOST /api/v2/polygon/addresses/importERC-20: POST /api/v2/polygon/transactions/erc20GET /api/v2/polygon/webhooks/notifications
ArbitrumPOST /api/v2/arbitrum/addresses/importERC-20: POST /api/v2/arbitrum/transactions/erc20GET /api/v2/arbitrum/webhooks/notifications

Две сноски для правильного прочтения таблицы. Во-первых: TRON — самая глубокая интеграция на платформе. Помимо перечисленных выше маршрутов, в справочнике описаны стейкинг (POST /api/v2/tron/freeze и /delegate), параметры сети и пара для самостоятельного подписания — /transactions/trc20/build для построения транзакции и /transactions/broadcast для отправки транзакции, подписанной локально. Если ваша служба комплаенса настаивает, что приватные ключи никогда не покидают ваши серверы, этот паттерн build-and-broadcast — ваш путь.

Во-вторых: прочерк означает, что текущий справочник не документирует маршрут v2 для этой ячейки, а не то, что сеть второсортна. У Bitcoin нет стандарта токенов, поэтому ячейка токенов пуста — нативный BTC работает через собственную модель кошелька: создайте зашифрованный паролем кошелёк через POST /api/v2/bitcoin/wallets, деривируйте депозитные адреса под ним и отправляйте через POST /api/v2/bitcoin/transactions. Справочник Solana охватывает создание адресов, переводы SOL и SPL, а также запросы баланса и блоков, но пока без вебхуков. Для всего, что не перечислено здесь, актуальное состояние — в справочнике API.

Часто задаваемые вопросы

Да. Создайте адрес Solana, обнаруживайте входящие переводы через эндпоинты баланса и транзакций и зачисляйте платёж, будь то SOL, USDC или любой SPL-токен. Отправка SPL-токенов — это один вызов POST /api/v2/solana/transactions/SPL. Вебхуки депозитов пока недоступны для Solana, поэтому обнаружение депозитов использует опрос.

Сервис, позволяющий вашему приложению читать из блокчейна Solana и писать в него по HTTP, без запуска собственного валидатора или RPC-ноды. Solana API от Chaingateway создан для платежей: создание адресов, переводы SOL и SPL, запросы баланса и блока, представленные как REST-эндпоинты за Bearer-токеном.

JSON-RPC — нативный протокол ноды. Он низкоуровневый: вы отправляете полностью построенные, подписанные транзакции и интерпретируете сырые данные аккаунтов, что на практике требует web3.js или эквивалентную библиотеку. REST, как его реализует Chaingateway, находится на слой выше: вы описываете перевод в JSON, а сервер занимается построением и трансляцией. JSON-RPC подходит обозревателям и DeFi-бэкендам, которым нужен каждый метод; REST подходит платёжным системам, которым нужна горстка операций с минимумом кода.

В Solana балансы токенов не хранятся на адресе вашего кошелька. Каждая комбинация кошелька и минта токена имеет собственный токен-аккаунт, а associated token account (ATA) — стандартный вариант, детерминированно выведенный из двух адресов. ATA должен существовать и держать rent-exempt депозит в 0,00203928 SOL (по состоянию на середину 2026 года), прежде чем он сможет получать токены. Chaingateway выводит и, при необходимости, создаёт эти аккаунты на стороне сервера, так что ваша интеграция оперирует только адресами кошельков.

Да, немного. Отправляющий адрес платит базовую комиссию в 5000 lamports (0,000005 SOL) за подпись, а когда получатель никогда не держал этот токен, транзакция также финансирует новый токен-аккаунт минимумом, необходимым для rent-exempt. Небольшой резерв SOL на вашем отправляющем адресе покрывает оба случая надолго.

Подтверждение — момент, когда сверхбольшинство валидаторов проголосовало за блок, — обычно приходит в течение секунды-двух. Полная финальность занимает около 12,8 секунды по состоянию на середину 2026 года. Обновление Alpenglow, запланированное на конец 2026 года, нацелено на финальность около 100–150 миллисекунд. Для депозитов зачисление небольших сумм при подтверждении, а крупных — при финальности является разумным поведением по умолчанию.

Да. Передайте официальный минт USDC, EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, в качестве contractaddress и десятичную сумму; API автоматически применяет шесть десятичных знаков USDC. Тот же вызов работает для USDT или любого другого SPL-минта.

Devnet — песочница Solana для разработчиков приложений с бесплатным SOL из краников. Testnet в основном служит валидаторам, тестирующим новые релизы. Через Chaingateway вы переключаетесь на тестовое окружение заголовком X-Network: testnet и никогда не работаете напрямую с URL кластеров.

Да, привязанные к вашему тарифу; текущие цифры — на странице тарифов. Для опроса депозитов один запрос на новый блок — разумный предел, а GET /api/v2/solana/blocks/number — дешёвый способ задать этот темп.

Все. Работает любой SPL-минт, от USDC и USDT до токена, который вы создали вчера. Вы передаёте адрес минта в запросе, а десятичные знаки обрабатываются автоматически.

Пока нет. Уведомления вебхуков работают для Ethereum, BSC, Polygon, Arbitrum, TRON и Bitcoin, но в Solana вы пока отслеживаете депозиты опросом. Руководство по вебхукам охватывает сети, где push-уведомления доступны.

Готовы интегрировать Solana?

Создайте аккаунт, скопируйте API-ключ и отправьте перевод SPL в тестовой сети в течение следующих десяти минут. Полный справочник эндпоинтов — на /docs/, а портал разработчика собирает туториалы по самым частым платёжным сценариям.