Kit клієнт

@solana/kit постачається з createClient — невеликим хостом, який розширюється за допомогою плагінів. Кожен плагін додає можливість — підключення до RPC, підписувач, планування транзакцій — а складений клієнт однаково підходить для скриптів, серверних маршрутів і UI.

Розробляєте React-застосунок? Посібник з React загортає цей самий клієнт у @solana/react, щоб компоненти отримували стан гаманця та дані RPC через хуки. Почніть звідти й повертайтеся сюди, коли потрібен тонший контроль.

Встановлення

Terminal
$
npm install @solana/kit @solana/kit-plugin-rpc @solana/kit-plugin-signer

Використовуйте будь-який менеджер пакетів. Kit версії v7+, а пакети @solana/kit-plugin-* — 0.13+.

Створення клієнта

Об'єднуйте плагіни за допомогою .use(...). Спочатку встановіть підписувач, потім підключення до RPC. solanaDevnetRpc() додає client.rpc, підписки, планувальник/виконавець транзакцій та допоміжний метод client.sendTransaction — тому застосунку рідко потрібно з'єднувати ці компоненти вручну.

import { createClient, generateKeyPairSigner } from "@solana/kit";
import { solanaDevnetRpc } from "@solana/kit-plugin-rpc";
import { signer } from "@solana/kit-plugin-signer";
const payer = await generateKeyPairSigner();
const client = createClient().use(signer(payer)).use(solanaDevnetRpc());
const slot = await client.rpc.getSlot().send();
console.log("current slot", slot);

Плагін signer встановлює як платника комісії, так і ідентичність застосунку. RPC-пакет вимагає, щоб платник був визначений заздалегідь, саме тому порядок має значення.

Варіанти підписувача

@solana/kit-plugin-signer надає три ролі, щоб ви надавали клієнту лише необхідні права:

  • signer(x) — встановлює і client.payer, і client.identity.
  • payer(x) — лише платник комісії.
  • identity(x) — лише авторитет застосунку.

Кожен має варіанти *FromFile(path) (Node), generated*(), generated*WithSol(amount) та airdrop*() для тестів і скриптів.

Надсилання транзакції

Побудуйте інструкції за допомогою згенерованого клієнта програми, потім передайте їх до client.sendTransaction. Планувальник отримує блокхеш, оцінює обчислення, підписує за допомогою платника клієнта та надсилає транзакцію.

import { getTransferSolInstruction } from "@solana-program/system";
import { address, lamports } from "@solana/kit";
const transfer = getTransferSolInstruction({
source: client.payer,
destination: address("Fke...address"),
amount: lamports(10_000_000n) // 0.01 SOL
});
const { context } = await client.sendTransaction([transfer]);
console.log("submitted", context.signature);

sendTransaction повертає об'єкт результату; підпис транзакції знаходиться в result.context.signature. Метод перевіряє, що план вміщується в одну транзакцію, і в іншому випадку кидає виняток — використовуйте sendTransactions, якщо пакет може охоплювати кілька транзакцій.

Вибір RPC-пакета

@solana/kit-plugin-rpc постачається з пресетами кластерів:

  • solanaDevnetRpc() — налаштування devnet за замовчуванням, airdrop увімкнено (client.airdrop).
  • solanaMainnetRpc() — mainnet; airdrop є помилкою часу компіляції.
  • solanaLocalRpc()http://127.0.0.1:8899 для локального validator.
  • solanaRpc({ rpcUrl }) — будь-який ендпоїнт.
import { solanaRpc } from "@solana/kit-plugin-rpc";
const client = createClient()
.use(signer(payer))
.use(solanaRpc({ rpcUrl: "https://your-rpc-provider.example" }));

Детальне компонування

Пресети об'єднують підключення до RPC, планувальник, виконавець і допоміжні методи надсилання, тому більшість застосунків ніколи не потребує окремих компонентів. Переходьте до детальних плагінів лише щоб налаштувати один із них — наприклад, користувацький планувальник або інший канал підписок. Цей шлях також потребує @solana/kit-plugin-instruction-plan, який пресети зазвичай включають автоматично:

import {
solanaRpcConnection,
rpcAirdrop,
rpcTransactionPlanner,
rpcTransactionPlanExecutor
} from "@solana/kit-plugin-rpc";
import { planAndSendTransactions } from "@solana/kit-plugin-instruction-plan";
const client = createClient()
.use(signer(payer))
.use(solanaRpcConnection({ rpcUrl: "https://api.devnet.solana.com" }))
.use(rpcAirdrop())
.use(rpcTransactionPlanner())
.use(rpcTransactionPlanExecutor())
.use(planAndSendTransactions());

Додавання клієнтів програм

Згенеровані пакети @solana-program/* надають плагіни клієнтів, щоб виклики програм були доступні безпосередньо через клієнт. Встановіть потрібну програму та підключіть її плагін через .use():

import { tokenProgram } from "@solana-program/token";
const client = createClient()
.use(signer(payer))
.use(solanaDevnetRpc())
.use(tokenProgram()); // adds client.token

Підписання без браузерного гаманця

Запускаєте headless-процес у маршруті API, воркері або скрипті? Підписуйте за допомогою сервісу керування ключами на бекенді замість сирого keypair. Дивіться Keychain та Підписання у виробничому середовищі.

Поширені патерни для Solana-розробників

  • Спільне налаштування: Створіть клієнт один раз у основному модулі та імпортуйте його до скриптів, серверних маршрутів і UI.
  • Читання на стороні сервера: Клієнт лише з signer + solanaRpc (без плагіна гаманця) читає акаунти та симулює транзакції з сервера.
  • Локальне тестування: Замініть RPC-пакет на .use(litesvm()) із @solana/kit-plugin-litesvm, щоб запускати тести проти in-memory validator (лише Node).
  • Тестованість: Складений клієнт легко мокувати — замінюйте RPC-відповіді або підписувачі без необхідності мати браузерний гаманець.

Is this page helpful?