Bundle & Νέες Μέθοδοι RPC

Αυτές οι μέθοδοι είναι διαθέσιμες ξεκινώντας από το 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.

Σημείωση: Τα plugins συναλλαγών (π.χ., gas_swap) δεν εκτελούνται κατά τη διάρκεια της εκτίμησης χρέωσης. Τα plugins εκτελούνται μόνο κατά τις ροές υπογραφής (signBundle, signAndSendBundle).

Αίτημα JSON-RPC

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

Παράμετροι

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή
transactionsstring[]ΝαιΠίνακας συναλλαγών κωδικοποιημένων σε base64 (μέγιστο 5)
fee_tokenstringΝαιToken mint για τον υπολογισμό χρέωσης

Απόκριση 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"
}
}

Παράμετροι

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή
transactionsstring[]ΝαιΠίνακας συναλλαγών κωδικοποιημένων σε base64 (μέγιστο 5)
signer_keystringΌχιΣυγκεκριμένος υπογράφων για χρήση (προεπιλογή: επιλογή από το pool)
transactions_to_signnumber[]ΌχιΔείκτες συναλλαγών προς υπογραφή (προεπιλογή: όλες)

Απόκριση 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 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

Διαμόρφωση

[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"
}
}

Παράμετροι

ΠαράμετροςΤύποςΑπαιτείταιΠεριγραφή
transactionsstring[]ΝαιΠίνακας συναλλαγών κωδικοποιημένων σε base64 (έως 5)
signer_keystringΌχιΣυγκεκριμένος υπογράφων προς χρήση (προεπιλογή επιλογή από το pool)
transactions_to_signnumber[]ΌχιΔείκτες συναλλαγών προς υπογραφή (προεπιλογή όλες)

Απόκριση 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?

Διαχειρίζεται από

© 2026 Ίδρυμα Solana.
Με επιφύλαξη παντός δικαιώματος.
Συνδεθείτε