Ú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
- CLI de Solana v2.2.x o superior
- Rust/Cargo (para la instalación del RPC de Kora)
- Node.js v22+ y un gestor de paquetes (por ejemplo, pnpm, npm)
Instalar el RPC de Kora
Instala el servidor RPC de Kora globalmente:
cargo install kora-cli
Importante: La rama
mainde 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/koracd koragit checkout v2.0.5cd 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 Korafull-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 tarifassigners.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.enven 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/clientpnpm 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 usuariomax_signatures: número máximo de firmas que puede tener una transacciónprice_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 transferirseallowed_spl_paid_tokens: matriz de direcciones de mint que tu programa acepta como pagodisallowed_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 anywheresolana-test-validator -r
Terminal 2: Inicializar Entorno
# From ./client directorypnpm 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 directorykora 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 ensigners.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 directorykora rpc start --signers-config signers.toml
Nota: Para despliegues en producción usando
price_source = "Jupiter", debes establecer la variable de entornoJUPITER_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 directorypnpm 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 transaccionesgetPayerSigner- Obtener el firmante pagador y el destino de pagogetSupportedTokens- Devuelve un array de tokens de pago compatiblessignTransaction- Firmar transacciones condicionalmente cuando las comisiones estén cubiertastransferTransaction- 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 configuradogetPaymentInstruction- 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?