Ultimo aggiornamento: 31-10-2025
Nozioni di base su Kora
Kora è un server JSON-RPC che fornisce servizi di pagamento delle commissioni per le transazioni Solana. Consente agli utenti di pagare le commissioni di transazione con token SPL anziché con SOL, migliorando l'esperienza utente per le applicazioni in cui gli utenti potrebbero non possedere SOL.
Kora RPC convalida le richieste dei client in base a una configurazione
(kora.toml) che definisce i programmi, i portafogli, i token, ecc. consentiti.
Una volta convalidata, il server Kora firmerà la transazione e la invierà alla
rete (oppure restituirà una transazione firmata serializzata al client).
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Client App │───▶│ Kora RPC │───▶│ Solana RPC ││ │ │ Server │ │ │└─────────────────┘ └─────────────────┘ └─────────────────┘│▼┌──────────────────────┐│ Kora Private Key ││ ( or Turnkey/Privy ) │└──────────────────────┘
Questa guida rapida avvierà un server Kora RPC locale e dimostrerà l'integrazione client per testare i flussi di lavoro di pagamento delle commissioni.
Requisiti
- Solana CLI v2.2.x o superiore
- Rust/Cargo (per l'installazione di Kora RPC)
- Node.js v22+ e un gestore di pacchetti (ad es., pnpm, npm)
Installare Kora RPC
Installa il server Kora RPC globalmente:
cargo install kora-cli
Importante: Il branch
maindi Kora è un branch di integrazione e potrebbe contenere modifiche non rilasciate o in versione beta. Utilizza sempre l'ultimo tag di rilascio stabile per l'uso in produzione e nei tutorial. Puoi trovare l'ultimo rilascio stabile nella pagina dei rilasci di Kora.
Creare il progetto
Clona il repository, esegui il checkout dell'ultimo tag stabile e vai alla directory della demo introduttiva:
git clone https://github.com/solana-foundation/koracd koragit checkout v2.0.5cd examples/getting-started/demo
Struttura del progetto
La demo contiene tre componenti principali:
Directory client (client/src/)
setup.ts- Configurazione dell'ambiente locale (crea keypair e li scrive in .env, invia SOL tramite airdrop, inizializza il token di test)quick-start.ts- Script dimostrativo di avvio rapido che mostra come stabilire una connessione Kora e effettuare una semplice chiamata al server Kora RPCfull-demo.ts- Script dimostrativo completo che mostra molteplici metodi Kora RPC
Directory del Server (server/)
kora.toml- Configurazione RPC di Kora che definisce le regole di validazione, i token consentiti e i parametri delle commissionisigners.toml- Configurazione dei firmatari che definisce i firmatari per il server Kora
Configurazione Condivisa
.env- Variabili d'ambiente per keypair e indirizzi (crea.envnella directory principale -demo/.env). Le variabili d'ambiente verranno create dallo script di configurazione.
Configurazione dell'Ambiente
Innanzitutto, crea il file .env per il tuo ambiente:
# Create .env file (will be populated by setup script)touch .env
Configurazione del Client
Installa le dipendenze del client:
# From project root (kora/)cd examples/getting-started/demo/clientpnpm install --ignore-workspace # use --ignore-workspace to avoid pnpm workspace conflicts
Configurazione del Server RPC Kora
Il server Kora richiede una configurazione per specificare quali token possono
essere utilizzati per il pagamento delle commissioni. Apri server/kora.toml e
nota la sezione di validazione. Qui possiamo specificare diversi parametri che
verranno validati prima di firmare una transazione:
max_allowed_lamports: commissione massima della transazione che sei disposto a pagare per conto dell'utentemax_signatures: numero massimo di firme che una transazione può avereprice_source: oracolo per determinare il prezzo del token ("Mock" o "Jupiter")allowed_programs: whitelist degli ID dei programmi che possono essere eseguiti (ad es., System Program, Token Program)allowed_tokens: whitelist dei token che possono essere trasferitiallowed_spl_paid_tokens: array di indirizzi mint che il tuo programma accetta come pagamentodisallowed_accounts: blacklist degli account che non possono interagire con il tuo RPC Kora
Per ora, lasciamo i valori predefiniti--puoi tornare qui e modificarli in seguito (per maggiori informazioni sulle opzioni di configurazione, consulta la documentazione sulla Configurazione di Kora).
Configurazione dei Firmatari
Apri server/signers.toml e nota la sezione dei firmatari. Qui possiamo
specificare quali firmatari verranno utilizzati per firmare le transazioni e (se
si utilizzano più firmatari) una strategia per selezionare quale firmatario
utilizzare. Per ora, utilizziamo un singolo firmatario con i valori
predefiniti--puoi tornare qui e modificarli in seguito (per maggiori
informazioni sulla configurazione dei firmatari, consulta la guida
Guida ai Firmatari).
Server di Test
Apri tre terminali ed esegui i seguenti comandi:
Terminale 1: Avvia il Validatore di Test Locale
# From project root or anywheresolana-test-validator -r
Terminale 2: Inizializza l'Ambiente
# From ./client directorypnpm init-env
Questo script:
- Genera keypair e le salva in
.env - Effettua l'airdrop di SOL agli account di test
- Crea e inizializza un token USDC locale
- Finanzia gli account di test con token
Importante Assicurati di copiare la chiave pubblica del nuovo token USDC di
test dal tuo .env e aggiornare allowed_tokens e allowed_spl_paid_tokens in
./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]
Terminale 3: Inizializza gli ATA di Pagamento (Facoltativo)
Per ricevere pagamenti, dovrai inizializzare gli Associated Token Account (ATA) per i tuoi token di pagamento. Puoi farlo eseguendo il seguente comando:
# From ./server directorykora rpc initialize-atas --signers-config signers.toml
Questo comando:
- Legge il tuo indirizzo di pagamento da
kora.toml(oppure, se non hai specificato un indirizzo di pagamento, tutti i firmatari elencati insigners.toml) - Crea ATA per tutti i token elencati in
allowed_spl_paid_tokens - Salta eventuali ATA già esistenti
- Puoi opzionalmente specificare un pagatore di commissioni personalizzato per
la generazione degli ATA utilizzando il flag
fee_payer_key.
Terminale 4: Avvia il Server RPC Kora
# From ./server directorykora rpc start --signers-config signers.toml
Nota: Per i deployment in produzione che utilizzano
price_source = "Jupiter", devi impostare la variabile d'ambienteJUPITER_API_KEY. Il server non si avvierà senza di essa:JUPITER_API_KEY=your_api_key kora rpc start --signers-config signers.toml
Il server legge la configurazione da kora.toml e signers.toml e utilizza le
variabili d'ambiente del file condiviso .env. Se stai utilizzando una
struttura di cartelle diversa da quella specificata qui, potresti dover usare
--config per specificare la posizione di kora.toml e --signers-config per
specificare la directory della configurazione dei firmatari:
kora rpc --config path/to/kora.toml start --signers-config path/to/signers.toml
Puoi accedere a kora rpc -h per ricevere aiuto sulle opzioni del server RPC.
Terminale 5: Eseguire la Demo del Client
# From ./client directorypnpm start
Dovresti vedere un output simile 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
Questo conferma che il tuo server Kora è in esecuzione e configurato correttamente!
Prossimi Passi
Una volta che la configurazione di base funziona, dai un'occhiata alla demo completa del flusso Kora:
→ Flusso Completo delle Transazioni Gasless di Kora
esplora i metodi RPC aggiuntivi di Kora:
estimateTransactionFee- Calcola le commissioni per le transazionigetPayerSigner- Ottieni il firmatario pagante e la destinazione del pagamentogetSupportedTokens- Restituisce un array di token di pagamento supportatisignTransaction- Firma condizionalmente le transazioni quando le commissioni sono copertetransferTransaction- Crea transazioni di trasferimento SOL o trasferimento di token SPL (firmate dal feepayer di Kora)signAndSendTransaction- Firma condizionalmente una transazione con il feepayer di Kora e la invia al Solana RPC configuratogetPaymentInstruction- Ottieni un'istruzione di pagamento per una transazione
Hai domande? Fai domande su
Solana Stack Exchange con un tag Kora.
Is this page helpful?