Bundle ve Yeni RPC Yöntemleri

Bu yöntemler v2.2.0-beta.1 sürümünden itibaren kullanılabilir. Bunları kora.toml dosyanızda [kora.enabled_methods] altında etkinleştirin.

getVersion

Kora sunucu sürüm bilgilerini alır.

JSON-RPC İsteği

{
"jsonrpc": "2.0",
"id": 1,
"method": "getVersion",
"params": {}
}

JSON-RPC Yanıtı

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"version": "2.2.0-beta.7"
}
}

cURL Örneği

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);

Yapılandırma

[kora.enabled_methods]
get_version = true

estimateBundleFee

Bir bundle içindeki birden fazla işlem için toplam ücreti hesaplar. Bir bundle'ı imzalamadan ve göndermeden önce toplam maliyeti belirlemek için kullanışlıdır.

Not: İşlem eklentileri (örn. gas_swap) ücret tahmini sırasında çalıştırılmaz. Eklentiler yalnızca imzalama akışları sırasında çalışır (signBundle, signAndSendBundle).

JSON-RPC İsteği

{
"jsonrpc": "2.0",
"id": 1,
"method": "estimateBundleFee",
"params": {
"transactions": ["base64EncodedTransaction1", "base64EncodedTransaction2"],
"fee_token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}
}

Parametreler

ParametreTürZorunluAçıklama
transactionsstring[]EvetBase64 kodlu işlemler dizisi (maksimum 5)
fee_tokenstringEvetÜcret hesaplaması için token mint

JSON-RPC Yanıtı

{
"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 Örneği

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);

Yapılandırma

[kora.enabled_methods]
estimate_bundle_fee = true
[kora.bundle]
enabled = true

signBundle

Birden fazla işlemi ağa göndermeden paket olarak imzalar. Paket gönderimini Jito'ya kendiniz yapmak istediğinizde bunu kullanın.

Bu yöntem yapılandırıldığında reCAPTCHA tarafından korunur. Sunucunuzda reCAPTCHA etkinse x-recaptcha-token başlığını ekleyin.

İşlem eklentileri etkinleştirildiğinde (örn. gas_swap), paketteki her işlem imzalanmadan önce eklenti kurallarına göre doğrulanır.

Lighthouse Ücret Ödeyici Koruması

Lighthouse koruması etkinleştirildiğinde, Kora paketteki son işleme bir bakiye onaylama talimatı ekler. Bu, tüm paket işlemleri tamamlandıktan sonra bakiyenin beklenen seviyelerin altına düşmemesini sağlayarak ücret ödeyiciyi tüketme saldırılarından korur.

Önemli: Lighthouse işlem mesajını değiştirdiğinden, son işlemdeki mevcut istemci imzaları geçersiz hale gelir. İstemciler, Kora'dan değiştirilmiş paketi aldıktan sonra yeniden imzalamalıdır.

signBundle → client receives modified txs → client re-signs last tx → client sends bundle

JSON-RPC İsteği

{
"jsonrpc": "2.0",
"id": 1,
"method": "signBundle",
"params": {
"transactions": [
"base64EncodedTransaction1",
"base64EncodedTransaction2",
"base64EncodedTransaction3"
],
"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"
}
}

Parametreler

ParametreTürGerekliAçıklama
transactionsstring[]EvetBase64 kodlu işlemler dizisi (maksimum 5)
signer_keystringHayırKullanılacak belirli imzalayıcı (varsayılan: havuz seçimi)
transactions_to_signnumber[]Hayırİmzalanacak işlemlerin indeksleri (varsayılan: tümü)

JSON-RPC Yanıtı

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"signed_transactions": [
"base64EncodedSignedTransaction1",
"base64EncodedSignedTransaction2",
"base64EncodedSignedTransaction3"
],
"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"
}
}

cURL Örneği

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);

Kısmi Paket İmzalama

Paketteki yalnızca belirli işlemleri imzalamak için transactions_to_sign kullanın:

// Only sign transactions at index 0 and 2
const 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

Yapılandırma

[kora.enabled_methods]
sign_bundle = true
[kora.bundle]
enabled = true

signAndSendBundle

En fazla 5 işlemden oluşan bir paketi imzalar ve Jito'nun blok motoruna gönderir. Paketteki tüm işlemler atomik ve sıralı olarak yürütülür — ya hepsi başarılı olur ya da hiçbiri olmaz.

Bu yöntem, yapılandırıldığında reCAPTCHA ile korunur. Sunucunuzda reCAPTCHA etkinse x-recaptcha-token başlığını ekleyin.

İşlem eklentileri etkinleştirildiğinde (ör. gas_swap), paketteki her işlem imzalanmadan önce eklenti kurallarına göre doğrulanır.

Not: Lighthouse ücret ödeyici koruması bu yöntem için geçerli değildir. Paketler hemen gönderildiğinden, bir Lighthouse onaylaması eklemek mevcut istemci imzalarını geçersiz kılar. Lighthouse korumasına ihtiyacınız varsa, signBundle kullanın ve yeniden imzaladıktan sonra Jito gönderimini kendiniz yönetin.

JSON-RPC İsteği

{
"jsonrpc": "2.0",
"id": 1,
"method": "signAndSendBundle",
"params": {
"transactions": [
"base64EncodedTransaction1",
"base64EncodedTransaction2",
"base64EncodedTransaction3"
],
"signer_key": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"
}
}

Parametreler

ParametreTürGerekliAçıklama
transactionsstring[]EvetBase64 kodlu işlem dizisi (maksimum 5)
signer_keystringHayırKullanılacak belirli imzalayıcı (varsayılan havuz seçimi)
transactions_to_signnumber[]Hayırİmzalanacak işlemlerin indeksleri (varsayılan hepsi)

JSON-RPC Yanıtı

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"bundle_uuid": "8f4a3b2c-1d5e-6f7a-8b9c-0d1e2f3a4b5c",
"signed_transactions": [
"base64EncodedSignedTransaction1",
"base64EncodedSignedTransaction2",
"base64EncodedSignedTransaction3"
],
"signer_pubkey": "3Z1Ef7YaxK8oUMoi6exf7wYZjZKWJJsrzJXSt1c3qrDE"
}
}

cURL Örneği

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);

Yapılandırma

[kora.enabled_methods]
sign_and_send_bundle = true
[kora.bundle]
enabled = true
[kora.bundle.jito]
block_engine_url = "https://mainnet.block-engine.jito.wtf"

Not: Jito bahşişleriyle paket kullanırken, Kora imzalayıcının bahşişi ödeyebilmesi için [validation.fee_payer_policy.system] içinde allow_transfer = true ayarlandığından emin olun.

Is this page helpful?

Yönetici

© 2026 Solana Vakfı.
Tüm hakları saklıdır.
Bağlanın