Останнє оновлення: 2025-10-31
Основи Kora
Kora — це JSON-RPC сервер, який надає послуги оплати комісій для транзакцій Solana. Він дозволяє користувачам сплачувати комісії за транзакції токенами SPL замість SOL, забезпечуючи кращий користувацький досвід для застосунків, де користувачі можуть не мати SOL.
Kora RPC перевіряє запити клієнтів на основі конфігурації (kora.toml), яка
визначає дозволені програми, гаманці, токени тощо. Після перевірки сервер Kora
підпише транзакцію та надішле її в мережу (або поверне серіалізовану підписану
транзакцію клієнту).
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Client App │───▶│ Kora RPC │───▶│ Solana RPC ││ │ │ Server │ │ │└─────────────────┘ └─────────────────┘ └─────────────────┘│▼┌──────────────────────┐│ Kora Private Key ││ ( or Turnkey/Privy ) │└──────────────────────┘
Цей швидкий старт запустить локальний Kora RPC сервер і продемонструє інтеграцію клієнта для тестування робочих процесів оплати комісій.
Вимоги
- Solana CLI версії 2.2.x або новіше
- Rust/Cargo (для встановлення Kora RPC)
- Node.js v22+ та менеджер пакетів (наприклад, pnpm, npm)
Встановлення Kora RPC
Встановіть Kora RPC сервер глобально:
cargo install kora-cli
Важливо: Гілка
mainKora є інтеграційною гілкою і може містити невипущені або бета-зміни. Завжди використовуйте останній стабільний тег релізу для продакшну та навчальних посібників. Ви можете знайти останній стабільний реліз на сторінці релізів Kora.
Створення проєкту
Клонуйте репозиторій, перейдіть на останній стабільний тег і перейдіть до директорії демонстрації для початківців:
git clone https://github.com/solana-foundation/koracd koragit checkout v2.0.5cd examples/getting-started/demo
Структура проєкту
Демонстрація містить три основні компоненти:
Директорія клієнта (client/src/)
setup.ts- Налаштування локального середовища (створює keypair і записує їх у .env, здійснює airdrop SOL, ініціалізує тестовий токен)quick-start.ts- Демонстраційний скрипт швидкого старту, що показує встановлення з'єднання з Kora та здійснення простого виклику до Kora RPC сервераfull-demo.ts- Повний демонстраційний скрипт, що показує декілька методів Kora RPC
Каталог сервера (server/)
kora.toml- Конфігурація Kora RPC, що визначає правила валідації, дозволені токени та параметри комісійsigners.toml- Конфігурація підписувачів, що визначає підписувачів для сервера Kora
Спільна конфігурація
.env- Змінні середовища для keypair та адрес (створіть.envу кореневій директорії -demo/.env). Змінні середовища будуть створені скриптом налаштування.
Налаштування середовища
Спочатку створіть .env для вашого середовища:
# Create .env file (will be populated by setup script)touch .env
Налаштування клієнта
Встановіть залежності клієнта:
# From project root (kora/)cd examples/getting-started/demo/clientpnpm install --ignore-workspace # use --ignore-workspace to avoid pnpm workspace conflicts
Налаштування сервера Kora RPC
Серверу Kora потрібна конфігурація для визначення того, які токени можуть
використовуватися для сплати комісій. Відкрийте server/kora.toml і зверніть
увагу на розділ валідації. Тут ми можемо вказати кілька параметрів, які будуть
перевірятися перед підписанням транзакції:
max_allowed_lamports: максимальна комісія за транзакцію, яку ви готові сплатити від імені користувачаmax_signatures: максимальна кількість підписів, яку може мати транзакціяprice_source: оракул для визначення ціни токена ("Mock" або "Jupiter")allowed_programs: білий список ідентифікаторів програм, які можуть виконуватися (наприклад, System Program, Token Program)allowed_tokens: білий список токенів, які дозволено переказуватиallowed_spl_paid_tokens: масив адрес mint-токенів, які ваша програма приймає як оплатуdisallowed_accounts: чорний список облікових записів, яким заборонено взаємодіяти з вашим RPC Kora
Наразі залишимо значення за замовчуванням — ви зможете повернутися сюди та змінити їх пізніше (для отримання додаткової інформації про параметри конфігурації див. документацію Конфігурація Kora).
Налаштування підписувачів
Відкрийте server/signers.toml і зверніть увагу на розділ підписувачів. Тут ми
можемо вказати, які підписувачі використовуватимуться для підписання транзакцій
і (якщо використовується кілька підписувачів) стратегію вибору підписувача.
Наразі використаємо одного підписувача з налаштуваннями за замовчуванням — ви
зможете повернутися сюди та змінити їх пізніше (для отримання додаткової
інформації про конфігурацію підписувачів див.
Керівництво з підписувачів).
Тестовий сервер
Відкрийте три термінали та виконайте наступні команди:
Термінал 1: Запуск локального тестового валідатора
# From project root or anywheresolana-test-validator -r
Термінал 2: Ініціалізація середовища
# From ./client directorypnpm init-env
Цей скрипт виконає:
- Генерацію пар ключів та збереже їх у
.env - Airdrop SOL на тестові акаунти
- Створення та ініціалізацію локального токена USDC
- Поповнення тестових акаунтів токенами
Важливо Переконайтеся, що ви скопіювали публічний ключ нового тестового
токена USDC зі свого .env та оновили allowed_tokens і
allowed_spl_paid_tokens у ./server/kora.toml.
allowed_tokens = ["YOUR_USDC_LOCAL_PUBLICK_KEY" # Update this based on the USDC_LOCAL_KEY public key comment in your .env]allowed_spl_paid_tokens = ["YOUR_USDC_LOCAL_PUBLICK_KEY" # Update this based on the USDC_LOCAL_KEY public key comment in your .env]
Термінал 3: Ініціалізація асоційованих токен-акаунтів для платежів (опціонально)
Для отримання платежів вам потрібно ініціалізувати асоційовані токен-акаунти (ATA) для ваших платіжних токенів. Ви можете зробити це, виконавши наступну команду:
# From ./server directorykora rpc initialize-atas --signers-config signers.toml
Ця команда виконає:
- Зчитування вашої платіжної адреси з
kora.toml(або якщо ви не вказали платіжну адресу, всіх підписувачів, перелічених уsigners.toml) - Створення ATA для всіх токенів, перелічених у
allowed_spl_paid_tokens - Пропуск будь-яких ATA, які вже існують
- Ви можете опціонально вказати спеціального платника комісії для генерації ATA,
використовуючи прапорець
fee_payer_key.
Термінал 4: Запуск RPC-сервера Kora
# From ./server directorykora rpc start --signers-config signers.toml
Примітка: Для продакшн-розгортань з використанням
price_source = "Jupiter", ви повинні встановити змінну середовищаJUPITER_API_KEY. Сервер не запуститься без неї:JUPITER_API_KEY=your_api_key kora rpc start --signers-config signers.toml
Сервер зчитує конфігурацію з kora.toml і signers.toml та використовує змінні
середовища зі спільного файлу .env. Якщо ви використовуєте іншу структуру
папок, ніж вказано тут, вам може знадобитися використати --config для вказання
розташування kora.toml та --signers-config для вказання директорії вашої
конфігурації підписувачів:
kora rpc --config path/to/kora.toml start --signers-config path/to/signers.toml
Ви можете отримати доступ до kora rpc -h для довідки щодо параметрів
RPC-сервера.
Термінал 5: Запуск демонстрації клієнта
# From ./client directorypnpm start
Ви повинні побачити вивід, подібний до цього:
Kora Config: {fee_payer: 'Df2UmGQH86TBDsub7XZoSAo7KZa1ZJZr2w1PL1APUjjU',validation_config: {max_allowed_lamports: 1000000,max_signatures: 10,allowed_programs: ['11111111111111111111111111111111','TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA','ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL','AddressLookupTab1e1111111111111111111111111','ComputeBudget11111111111111111111111111111111'],allowed_tokens: ['usdCAEFbouFGxdkbHCRtMTcN7DJHd3aCmP9vqjLgmAp'],allowed_spl_paid_tokens: ['usdCAEFbouFGxdkbHCRtMTcN7DJHd3aCmP9vqjLgmAp'],disallowed_accounts: [],price_source: 'Mock',fee_payer_policy: {...},price: { type: 'margin', margin: 0 }},enabled_methods: { ... }}}Blockhash: C8W8d5w2H4jKXyFg5CEBoiaPvEpJ1am7xLxZ3fym4a2g
Це підтверджує, що ваш сервер Kora працює та правильно налаштований!
Наступні кроки
Коли базове налаштування працюватиме, ознайомтеся з повною демонстрацією потоку Kora:
→ Повний потік безкоштовних транзакцій Kora
дослідіть додаткові методи Kora RPC:
estimateTransactionFee- Розрахунок комісій для транзакційgetPayerSigner- Отримання платника та призначення платежуgetSupportedTokens- Повертає масив підтримуваних токенів для оплатиsignTransaction- Умовний підпис транзакцій, коли комісії покритіtransferTransaction- Створення транзакцій переказу SOL або SPL-токенів (підписаних платником комісій Kora)signAndSendTransaction- Умовний підпис транзакції платником комісій Kora та відправка її на налаштований Solana RPCgetPaymentInstruction- Отримання інструкції платежу для транзакції
Маєте запитання? Задавайте питання на
Solana Stack Exchange з тегом Kora.
Is this page helpful?