Прежде чем создавать платёжные процессы, необходимо подключиться к 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?