Guía de Inicio Rápido de Kora

Última actualización: 2025-10-31

Conceptos Básicos de Kora

Kora es un servidor JSON-RPC que proporciona servicios de pago de comisiones para transacciones de Solana. Permite a los usuarios pagar las comisiones de transacción con tokens SPL en lugar de SOL, mejorando la experiencia de usuario para aplicaciones donde los usuarios pueden no poseer SOL.

El RPC de Kora valida las solicitudes del cliente basándose en una configuración (kora.toml) que define programas, wallets, tokens permitidos, etc. Una vez validada, el servidor Kora firmará la transacción y la enviará a la red (o devolverá una transacción firmada serializada al cliente).

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Client App │───▶│ Kora RPC │───▶│ Solana RPC │
│ │ │ Server │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌──────────────────────┐
│ Kora Private Key │
│ ( or Turnkey/Privy ) │
└──────────────────────┘

Este inicio rápido lanzará un servidor RPC de Kora local y demostrará la integración del cliente para probar flujos de trabajo de pago de comisiones.

Requisitos

Instalar el RPC de Kora

Instala el servidor RPC de Kora globalmente:

cargo install kora-cli

Importante: La rama main de Kora es una rama de integración y puede contener cambios no publicados o en fase beta. Utiliza siempre la última etiqueta de versión estable para uso en producción y tutoriales. Puedes encontrar la última versión estable en la página de versiones de Kora.

Crear Proyecto

Clona el repositorio, selecciona la última etiqueta estable y navega al directorio de demostración de inicio:

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

Estructura del Proyecto

La demostración contiene tres componentes principales:

Directorio del Cliente (client/src/)

  • setup.ts - Configuración del entorno local (crea keypairs y los escribe en .env, transfiere SOL, inicializa el token de prueba)
  • quick-start.ts - Script de demostración de inicio rápido que muestra cómo establecer una conexión de Kora y realizar una llamada simple al servidor RPC de Kora
  • full-demo.ts - Script de demostración completo que muestra múltiples métodos RPC de Kora

Directorio del Servidor (server/)

  • kora.toml - Configuración de Kora RPC que define las reglas de validación, tokens permitidos y parámetros de tarifas
  • signers.toml - Configuración de firmantes que define los firmantes para el servidor Kora

Configuración Compartida

  • .env - Variables de entorno para keypairs y direcciones (crear .env en la raíz - demo/.env). Las variables de entorno serán creadas por el script de configuración.

Configurar el Entorno

Primero, crea .env para tu entorno:

# Create .env file (will be populated by setup script)
touch .env

Configurar el Cliente

Instala las dependencias del cliente:

# From project root (kora/)
cd examples/getting-started/demo/client
pnpm install --ignore-workspace # use --ignore-workspace to avoid pnpm workspace conflicts

Configurar el Servidor Kora RPC

El servidor Kora requiere configuración para especificar qué tokens pueden utilizarse para el pago de tarifas. Abre server/kora.toml y observa la sección de validación. Aquí podemos especificar varios parámetros que serán validados antes de firmar una transacción:

  • max_allowed_lamports: tarifa máxima de transacción que estás dispuesto a pagar en nombre del usuario
  • max_signatures: número máximo de firmas que puede tener una transacción
  • price_source: oráculo para determinar el precio del token ("Mock" o "Jupiter")
  • allowed_programs: lista blanca de IDs de programa que pueden ejecutarse (por ejemplo, System Program, Token Program)
  • allowed_tokens: lista blanca de tokens que pueden transferirse
  • allowed_spl_paid_tokens: matriz de direcciones de mint que tu programa acepta como pago
  • disallowed_accounts: lista negra de cuentas que no pueden interactuar con tu Kora RPC

Por ahora, dejemos los valores predeterminados--puedes volver aquí y cambiarlos más tarde (para más información sobre las opciones de configuración, consulta la documentación de Configuración de Kora).

Configurar Firmantes

Abre server/signers.toml y observa la sección de firmantes. Aquí podemos especificar qué firmantes se utilizarán para firmar transacciones y (si se usan múltiples firmantes) una estrategia para seleccionar qué firmante usar. Por ahora, usemos un solo firmante con los valores predeterminados--puedes volver aquí y cambiarlos más tarde (para más información sobre la configuración de firmantes, consulta la Guía de Firmantes).

Servidor de Prueba

Abre tres terminales y ejecuta los siguientes comandos:

Terminal 1: Iniciar Validador de Prueba Local

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

Terminal 2: Inicializar Entorno

# From ./client directory
pnpm init-env

Este script hará lo siguiente:

  • Generar keypairs y guardarlos en .env
  • Hacer airdrop de SOL a las cuentas de prueba
  • Crear e inicializar un token USDC local
  • Financiar las cuentas de prueba con tokens

Importante Asegúrate de copiar la clave pública del nuevo token USDC de prueba desde tu .env y actualizar el allowed_tokens y el allowed_spl_paid_tokens en ./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
]

Terminal 3: Inicializar ATAs de Pago (Opcional)

Para recibir pagos, necesitarás inicializar Cuentas de Tokens Asociadas (ATAs) para tus tokens de pago. Puedes hacer esto ejecutando el siguiente comando:

# From ./server directory
kora rpc initialize-atas --signers-config signers.toml

Este comando hará lo siguiente:

  • Leer tu dirección de pago desde kora.toml (o si no has especificado una dirección de pago, todos los firmantes listados en signers.toml)
  • Crear ATAs para todos los tokens listados en allowed_spl_paid_tokens
  • Omitir cualquier ATA que ya exista
  • Opcionalmente puedes especificar un pagador de tarifas personalizado para la generación de ATAs usando la bandera fee_payer_key.

Terminal 4: Iniciar Servidor RPC de Kora

# From ./server directory
kora rpc start --signers-config signers.toml

Nota: Para despliegues en producción usando price_source = "Jupiter", debes establecer la variable de entorno JUPITER_API_KEY. El servidor no se iniciará sin ella:

JUPITER_API_KEY=your_api_key kora rpc start --signers-config signers.toml

El servidor lee la configuración desde kora.toml y signers.toml y utiliza las variables de entorno del archivo compartido .env. Si estás usando una estructura de carpetas diferente a la especificada aquí, es posible que necesites usar --config para especificar la ubicación de kora.toml y --signers-config para especificar el directorio de tu configuración de firmantes:

kora rpc --config path/to/kora.toml start --signers-config path/to/signers.toml

Puedes acceder a kora rpc -h para obtener ayuda sobre las opciones del servidor RPC.

Terminal 5: Ejecutar demostración del cliente

# From ./client directory
pnpm start

Deberías ver una salida similar a:

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

¡Esto confirma que tu servidor Kora está funcionando y correctamente configurado!

Próximos pasos

Una vez que tengas la configuración básica funcionando, echa un vistazo a la demostración completa del flujo de Kora:

→ Flujo completo de transacciones sin comisiones de Kora

explora métodos RPC adicionales de Kora:

  • estimateTransactionFee - Calcular comisiones para transacciones
  • getPayerSigner - Obtener el firmante pagador y el destino de pago
  • getSupportedTokens - Devuelve un array de tokens de pago compatibles
  • signTransaction - Firmar transacciones condicionalmente cuando las comisiones estén cubiertas
  • transferTransaction - Crear transacciones de transferencia de SOL o tokens SPL (firmadas por el pagador de comisiones de Kora)
  • signAndSendTransaction - Firma condicionalmente una transacción con el pagador de comisiones de Kora y la envía al RPC de Solana configurado
  • getPaymentInstruction - Obtener una instrucción de pago para una transacción

¿Tienes preguntas? Haz preguntas en Solana Stack Exchange con la etiqueta Kora.

Is this page helpful?

Gestionado por

© 2026 Fundación Solana.
Todos los derechos reservados.
Conéctate