Ces méthodes sont disponibles à partir de v2.2.0-beta.1. Activez-les dans
votre kora.toml sous [kora.enabled_methods].
getVersion
Récupère les informations de version du serveur Kora.
Requête JSON-RPC
{"jsonrpc": "2.0","id": 1,"method": "getVersion","params": {}}
Réponse JSON-RPC
{"jsonrpc": "2.0","id": 1,"result": {"version": "2.2.0-beta.7"}}
Exemple cURL
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc":"2.0","id":1,"method":"getVersion","params":{}}'
SDK TypeScript
const result = await client.getVersion();console.log("Kora version:", result.version);
Configuration
[kora.enabled_methods]get_version = true
estimateBundleFee
Calcule les frais combinés pour plusieurs transactions dans un bundle. Utile pour déterminer le coût total avant de signer et soumettre un bundle.
Remarque : Les plugins de transaction (par ex.,
gas_swap) ne sont pas exécutés lors de l'estimation des frais. Les plugins s'exécutent uniquement lors des flux de signature (signBundle,signAndSendBundle).
Requête JSON-RPC
{"jsonrpc": "2.0","id": 1,"method": "estimateBundleFee","params": {"transactions": ["base64EncodedTransaction1", "base64EncodedTransaction2"],"fee_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}}
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
transactions | string[] | Oui | Tableau de transactions encodées en base64 (max 5) |
fee_token | string | Oui | Mint du token pour le calcul des frais |
Réponse JSON-RPC
{"jsonrpc": "2.0","id": 1,"result": {"total_fee_in_lamports": "15000","total_fee_in_token": "150","fee_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","transaction_fees": [{"fee_in_lamports": "5000","fee_in_token": "50"},{"fee_in_lamports": "10000","fee_in_token": "100"}]}}
Exemple cURL
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0","id": 1,"method": "estimateBundleFee","params": {"transactions": ["base64Tx1", "base64Tx2"],"fee_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}}'
SDK TypeScript
const estimate = await client.estimateBundleFee({transactions: [base64Tx1, base64Tx2, base64Tx3],fee_token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"});console.log("Total fee:", estimate.total_fee_in_lamports, "lamports");console.log("Total fee in token:", estimate.total_fee_in_token);
Configuration
[kora.enabled_methods]estimate_bundle_fee = true[kora.bundle]enabled = true
signBundle
Signe plusieurs transactions sous forme de bundle sans les soumettre au réseau. Utilisez cette méthode lorsque vous souhaitez gérer vous-même la soumission du bundle à Jito.
Cette méthode est protégée par reCAPTCHA lorsqu'elle est configurée. Incluez
l'en-tête x-recaptcha-token si votre serveur a activé reCAPTCHA.
Lorsque les
plugins de transaction
sont activés (par ex., gas_swap), chaque transaction du bundle est validée par
rapport aux règles du plugin avant la signature.
Protection du payeur de frais Lighthouse
Lorsque la protection Lighthouse est activée, Kora ajoute une instruction d'assertion de solde à la dernière transaction du bundle. Cela protège le payeur de frais contre les attaques par drainage en garantissant que le solde ne descend pas en dessous des niveaux attendus après l'exécution de toutes les transactions du bundle.
Important : Étant donné que Lighthouse modifie le message de transaction, toutes les signatures client préexistantes sur la dernière transaction deviennent invalides. Les clients doivent re-signer après avoir reçu le bundle modifié de Kora.
signBundle → client receives modified txs → client re-signs last tx → client sends bundle
Requête JSON-RPC
{"jsonrpc": "2.0","id": 1,"method": "signBundle","params": {"transactions": ["base64EncodedTransaction1","base64EncodedTransaction2","base64EncodedTransaction3"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
transactions | string[] | Oui | Tableau de transactions encodées en base64 (max 5) |
signer_key | string | Non | Signataire spécifique à utiliser (sélection par défaut) |
transactions_to_sign | number[] | Non | Indices des transactions à signer (toutes par défaut) |
Réponse JSON-RPC
{"jsonrpc": "2.0","id": 1,"result": {"signed_transactions": ["base64EncodedSignedTransaction1","base64EncodedSignedTransaction2","base64EncodedSignedTransaction3"],"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Exemple cURL
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0","id": 1,"method": "signBundle","params": {"transactions": ["base64Tx1", "base64Tx2"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}'
SDK TypeScript
const result = await client.signBundle({transactions: [base64Tx1, base64Tx2, base64Tx3],signer_key: koraSignerAddress});console.log("Signed transactions:", result.signed_transactions);
Signature partielle de bundle
Utilisez transactions_to_sign pour signer uniquement des transactions
spécifiques dans le bundle :
// Only sign transactions at index 0 and 2const result = await client.signBundle({transactions: [tx1, tx2, tx3, tx4],transactions_to_sign: [0, 2]});// tx1 and tx3 are signed by Kora, tx2 and tx4 remain unchanged
Configuration
[kora.enabled_methods]sign_bundle = true[kora.bundle]enabled = true
signAndSendBundle
Signe et soumet un bundle contenant jusqu'à 5 transactions au moteur de blocs de Jito. Toutes les transactions du bundle s'exécutent de manière atomique et séquentielle — soit toutes réussissent, soit aucune ne réussit.
Cette méthode est protégée par reCAPTCHA lorsqu'elle est configurée. Incluez
l'en-tête x-recaptcha-token si votre serveur a reCAPTCHA activé.
Lorsque les
plugins de transaction
sont activés (par exemple, gas_swap), chaque transaction du bundle est validée
selon les règles du plugin avant la signature.
Remarque : La protection du payeur de frais Lighthouse ne s'applique pas à cette méthode. Puisque les bundles sont envoyés immédiatement, l'ajout d'une assertion Lighthouse invaliderait les signatures client existantes. Si vous avez besoin de la protection Lighthouse, utilisez
signBundleet gérez vous-même la soumission Jito après re-signature.
Requête JSON-RPC
{"jsonrpc": "2.0","id": 1,"method": "signAndSendBundle","params": {"transactions": ["base64EncodedTransaction1","base64EncodedTransaction2","base64EncodedTransaction3"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
transactions | string[] | Oui | Tableau de transactions encodées en base64 (max 5) |
signer_key | string | Non | Signataire spécifique à utiliser (sélection groupée par défaut) |
transactions_to_sign | number[] | Non | Indices des transactions à signer (toutes par défaut) |
Réponse JSON-RPC
{"jsonrpc": "2.0","id": 1,"result": {"bundle_uuid": "8f4a3b2c-1d5e-6f7a-8b9c-0d1e2f3a4b5c","signed_transactions": ["base64EncodedSignedTransaction1","base64EncodedSignedTransaction2","base64EncodedSignedTransaction3"],"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Exemple cURL
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc": "2.0","id": 1,"method": "signAndSendBundle","params": {"transactions": ["base64Tx1", "base64Tx2"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}'
SDK TypeScript
const { bundle_uuid } = await client.signAndSendBundle({transactions: [base64Tx1, base64Tx2, base64Tx3],signer_key: koraSignerAddress});console.log("Bundle submitted:", bundle_uuid);
Configuration
[kora.enabled_methods]sign_and_send_bundle = true[kora.bundle]enabled = true[kora.bundle.jito]block_engine_url = "https://mainnet.block-engine.jito.wtf"
Remarque : Lors de l'utilisation de bundles avec des pourboires Jito, assurez-vous que
allow_transfer = trueest défini dans[validation.fee_payer_policy.system]afin que le signataire Kora puisse payer le pourboire.
Is this page helpful?