Краткое руководство по Kora

Последнее обновление: 31.10.2025

Основы 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 ) │
└──────────────────────┘

Это краткое руководство запустит локальный RPC-сервер Kora и продемонстрирует интеграцию клиента для тестирования процессов оплаты комиссий.

Требования

Установка Kora RPC

Установите сервер Kora RPC глобально:

cargo install kora-cli

Важно: Ветка main Kora является интеграционной ветью и может содержать неопубликованные или бета-изменения. Всегда используйте последний стабильный тег релиза для продакшена и руководств. Последний стабильный релиз можно найти на странице релизов Kora.

Создание проекта

Клонируйте репозиторий, переключитесь на последний стабильный тег и перейдите в директорию демонстрации для начинающих:

git clone https://github.com/solana-foundation/kora
cd kora
git checkout v2.0.5
cd examples/getting-started/demo

Структура проекта

Демонстрация содержит три основных компонента:

Директория клиента (client/src/)

  • setup.ts - Настройка локального окружения (создаёт keypair и записывает их в .env, выдаёт SOL через airdrop, инициализирует тестовый токен)
  • 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/client
pnpm 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: черный список аккаунтов, которым не разрешено взаимодействовать с вашим сервером Kora RPC

Пока оставим значения по умолчанию — вы сможете вернуться сюда и изменить их позже (для получения дополнительной информации о параметрах конфигурации см. документацию Конфигурация Kora).

Настройка подписантов

Откройте server/signers.toml и обратите внимание на секцию подписантов. Здесь мы можем указать, какие подписанты будут использоваться для подписания транзакций и (при использовании нескольких подписантов) стратегию выбора подписанта. Пока используем одного подписанта со значениями по умолчанию — вы сможете вернуться сюда и изменить их позже (для получения дополнительной информации о конфигурации подписантов см. Руководство по подписантам).

Тестовый сервер

Откройте три терминала и выполните следующие команды:

Терминал 1: Запуск локального тестового валидатора

# From project root or anywhere
solana-test-validator -r

Терминал 2: Инициализация окружения

# From ./client directory
pnpm init-env

Этот скрипт выполнит следующие действия:

  • Сгенерирует пары ключей и сохранит их в .env
  • Переведёт 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 для платежей (опционально)

Для получения платежей необходимо инициализировать Associated Token Accounts (ATA) для ваших платёжных токенов. Вы можете сделать это, выполнив следующую команду:

# From ./server directory
kora 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 directory
kora 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 directory
pnpm 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

изучите дополнительные методы RPC Kora:

  • estimateTransactionFee - Расчёт комиссий для транзакций
  • getPayerSigner - Получение подписанта плательщика и назначения платежа
  • getSupportedTokens - Возвращает массив поддерживаемых токенов для оплаты
  • signTransaction - Условное подписание транзакций при покрытии комиссий
  • transferTransaction - Создание транзакций перевода SOL или SPL-токенов (подписанных плательщиком комиссий Kora)
  • signAndSendTransaction - Условно подписывает транзакцию плательщиком комиссий Kora и отправляет её на настроенный RPC Solana
  • getPaymentInstruction - Получение инструкции оплаты для транзакции

Есть вопросы? Задавайте вопросы на Solana Stack Exchange с тегом Kora.

Is this page helpful?

Управляется

© 2026 Solana Foundation.
Все права защищены.
Связаться с нами