Взаимодействие с Solana

Прежде чем создавать платёжные процессы, необходимо подключиться к Solana и понять, как запрашивать данные сети. В этом руководстве рассматриваются основы: установление соединения и использование RPC-методов, которые понадобятся для платежей с помощью TypeScript SDK @solana/kit и Solana CLI. Кроме того, мы рассмотрим основы работы с Solana Explorer для ручной проверки платежей, просмотра аккаунтов и отладки проблем.

Подключение к Solana

RPC API Solana — это основной способ программного взаимодействия с сетью. Ваш RPC URL фактически является API-ключом к сети.

Не используйте публичные RPC в продакшене

Публичные эндпоинты (api.mainnet-beta.solana.com, api.devnet.solana.com) имеют ограничения по количеству запросов, не имеют SLA и не подходят для платёжных процессов в продакшене. Для продакшена используйте RPC-провайдера, чтобы получить приватный RPC-эндпоинт.

Для разработки и тестирования можно использовать публичные эндпоинты с ограничением по количеству запросов.

Создайте RPC-клиент для взаимодействия с сетью:

import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const rpcSubscriptions = createSolanaRpcSubscriptions(
"wss://api.mainnet-beta.solana.com"
);

Для разработки используйте devnet (https://api.devnet.solana.com) или локальный validator, например, Surfpool.

Основные RPC-методы

JSON-RPC API Solana предоставляет методы для запроса данных сети. Вот те, которые чаще всего используются для платёжных процессов.

Получение информации об аккаунте

Все аккаунты в Solana доступны по их публичному ключу. Используйте RPC-метод getAccountInfo, чтобы получить информацию о любом аккаунте. Метод getAccountInfo возвращает объект AccountInfo, который содержит публичный ключ аккаунта, баланс в SOL, данные и другую метаинформацию.

Поле data содержит строку, закодированную в base64, с данными аккаунта. Вы можете преобразовать её в байты с помощью метода getBase64Codec из пакета @solana/kit, а затем декодировать в читаемый объект, используя ожидаемый кодек (если он известен) для данных аккаунта (например, getTokenCodec для token accounts).

const accountInfo = await rpc
.getAccountInfo(address("7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV"), {
encoding: "base64"
})
.send();
const dataBytes = getBase64Codec().encode(accountInfo.value.data);
const parsedTokenData = getTokenCodec().decode(dataBytes);
console.log(parsedTokenData);

Получение баланса токенов

Проверьте баланс token account с помощью метода RPC getTokenAccountBalance:

const balance = await rpc.getTokenAccountBalance(tokenAccountAddress).send();
console.log(balance.value.uiAmount); // Human-readable (e.g., 100.50)
console.log(balance.value.amount); // Base units (e.g., "100500000")

Формирование транзакций

Каждая транзакция требует актуального blockhash, чтобы быть действительной (и не устаревшей). Получите его перед созданием платёжной транзакции с помощью метода RPC getLatestBlockhash:

const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();

Blockhash устаревает примерно через 60 секунд. Получайте новый непосредственно перед подписанием и отправкой.

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

Проверьте, что транзакция завершена, с помощью метода RPC getSignatureStatuses:

const status = await rpc.getSignatureStatuses([signature]).send();
const result = status.value[0];
// result.confirmationStatus: "processed" | "confirmed" | "finalized"

Получение деталей транзакции

Получите полную информацию о подтверждённой транзакции с помощью метода RPC getTransaction:

const transaction = await rpc
.getTransaction(signature, { maxSupportedTransactionVersion: 0 })
.send();

История транзакций

Получите список последних транзакций для адреса с помощью метода RPC getSignaturesForAddress:

const signatures = await rpc
.getSignaturesForAddress(walletAddress, { limit: 10 })
.send();

Для комплексного мониторинга платежей см. Приём платежей, где описаны вебхуки и обнаружение транзакций в реальном времени.

Изучение публичных данных

Публичный реестр Solana означает, что каждая транзакция, token account и mint полностью доступны для аудита. Блок-эксплореры позволяют вручную проверять платежи, просматривать аккаунты и отлаживать проблемы без написания кода.

Что можно посмотреть:

  • Проверить, что платёж завершён
  • Просмотреть балансы token account
  • Отладить неудачные транзакции
  • Найти детали mint (эмиссия, количество знаков после запятой, полномочия)

Популярные блок-эксплореры: Solana Explorer, SolanaFM, Solscan, Orb

Примеры ссылок:

  • USDC Token Mint — Эмиссия, рынки, держатели и транзакции для USDC
  • USDC Token Transfer — Детали транзакции оплаты USDC
  • USDG Token Account — Баланс пользователя в USDG и история транзакций

Is this page helpful?

Управляется

© 2026 Фонд Solana.
Все права защищены.
Подключиться