Эти методы доступны начиная с v2.2.0-beta.1. Включите их в вашем kora.toml в
разделе [kora.enabled_methods].
getVersion
Получает информацию о версии сервера Kora.
JSON-RPC запрос
{"jsonrpc": "2.0","id": 1,"method": "getVersion","params": {}}
JSON-RPC ответ
{"jsonrpc": "2.0","id": 1,"result": {"version": "2.2.0-beta.7"}}
Пример cURL
curl -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"jsonrpc":"2.0","id":1,"method":"getVersion","params":{}}'
TypeScript SDK
const result = await client.getVersion();console.log("Kora version:", result.version);
Конфигурация
[kora.enabled_methods]get_version = true
estimateBundleFee
Вычисляет суммарную комиссию для нескольких транзакций в bundle. Полезно для определения общей стоимости перед подписанием и отправкой bundle.
Примечание: Плагины транзакций (например,
gas_swap) не выполняются во время оценки комиссии. Плагины запускаются только в процессе подписания (signBundle,signAndSendBundle).
JSON-RPC запрос
{"jsonrpc": "2.0","id": 1,"method": "estimateBundleFee","params": {"transactions": ["base64EncodedTransaction1", "base64EncodedTransaction2"],"fee_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"}}
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
transactions | string[] | Да | Массив транзакций в кодировке base64 (макс. 5) |
fee_token | string | Да | Адрес токена для расчёта комиссии |
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"}]}}
Пример 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"}}'
TypeScript SDK
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);
Конфигурация
[kora.enabled_methods]estimate_bundle_fee = true[kora.bundle]enabled = true
signBundle
Подписывает несколько транзакций как бандл без их отправки в сеть. Используйте этот метод, когда хотите самостоятельно управлять отправкой бандла в Jito.
Этот метод защищен reCAPTCHA при соответствующей настройке. Включите заголовок
x-recaptcha-token, если на вашем сервере включена reCAPTCHA.
Когда
плагины транзакций
включены (например, gas_swap), каждая транзакция в бандле проверяется согласно
правилам плагина перед подписанием.
Защита плательщика комиссий Lighthouse
Когда защита Lighthouse включена, Kora добавляет инструкцию проверки баланса к последней транзакции в бандле. Это защищает плательщика комиссий от атак на истощение средств, гарантируя, что баланс не опустится ниже ожидаемого уровня после завершения всех транзакций бандла.
Важно: Поскольку Lighthouse изменяет сообщение транзакции, любые существующие клиентские подписи последней транзакции становятся недействительными. Клиенты должны повторно подписать транзакцию после получения модифицированного бандла от Kora.
signBundle → client receives modified txs → client re-signs last tx → client sends bundle
JSON-RPC запрос
{"jsonrpc": "2.0","id": 1,"method": "signBundle","params": {"transactions": ["base64EncodedTransaction1","base64EncodedTransaction2","base64EncodedTransaction3"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
transactions | string[] | Да | Массив base64-кодированных транзакций (макс. 5) |
signer_key | string | Нет | Конкретный подписант для использования (по умолчанию выбирается из пула) |
transactions_to_sign | number[] | Нет | Индексы транзакций для подписания (по умолчанию все) |
JSON-RPC ответ
{"jsonrpc": "2.0","id": 1,"result": {"signed_transactions": ["base64EncodedSignedTransaction1","base64EncodedSignedTransaction2","base64EncodedSignedTransaction3"],"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Пример 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"}}'
TypeScript SDK
const result = await client.signBundle({transactions: [base64Tx1, base64Tx2, base64Tx3],signer_key: koraSignerAddress});console.log("Signed transactions:", result.signed_transactions);
Подпись частичного пакета
Используйте transactions_to_sign для подписи только определённых транзакций в
пакете:
// 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
Конфигурация
[kora.enabled_methods]sign_bundle = true[kora.bundle]enabled = true
signAndSendBundle
Подписывает и отправляет пакет из максимум 5 транзакций в блок-движок Jito. Все транзакции в пакете выполняются атомарно и последовательно — либо все успешны, либо ни одна.
Этот метод защищён reCAPTCHA при соответствующей настройке. Включите заголовок
x-recaptcha-token, если на вашем сервере включена reCAPTCHA.
Когда включены
плагины транзакций
(например, gas_swap), каждая транзакция в пакете проверяется на соответствие
правилам плагина перед подписью.
Примечание: Защита плательщика комиссий Lighthouse не применяется к этому методу. Поскольку пакеты отправляются немедленно, добавление утверждения Lighthouse сделает существующие подписи клиентов недействительными. Если вам нужна защита Lighthouse, используйте
signBundleи самостоятельно обрабатывайте отправку в Jito после повторной подписи.
JSON-RPC запрос
{"jsonrpc": "2.0","id": 1,"method": "signAndSendBundle","params": {"transactions": ["base64EncodedTransaction1","base64EncodedTransaction2","base64EncodedTransaction3"],"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Параметры
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
transactions | string[] | Да | Массив транзакций в кодировке base64 (максимум 5) |
signer_key | string | Нет | Конкретный подписант для использования (по умолчанию выбор из пула) |
transactions_to_sign | number[] | Нет | Индексы транзакций для подписи (по умолчанию все) |
JSON-RPC ответ
{"jsonrpc": "2.0","id": 1,"result": {"bundle_uuid": "8f4a3b2c-1d5e-6f7a-8b9c-0d1e2f3a4b5c","signed_transactions": ["base64EncodedSignedTransaction1","base64EncodedSignedTransaction2","base64EncodedSignedTransaction3"],"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"}}
Пример 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"}}'
TypeScript SDK
const { bundle_uuid } = await client.signAndSendBundle({transactions: [base64Tx1, base64Tx2, base64Tx3],signer_key: koraSignerAddress});console.log("Bundle submitted:", bundle_uuid);
Конфигурация
[kora.enabled_methods]sign_and_send_bundle = true[kora.bundle]enabled = true[kora.bundle.jito]block_engine_url = "https://mainnet.block-engine.jito.wtf"
Примечание: При использовании пакетов с чаевыми Jito убедитесь, что
allow_transfer = trueустановлен в[validation.fee_payer_policy.system], чтобы подписант Kora мог оплатить чаевые.
Is this page helpful?