Χρησιμοποιείτε το Kora v2.2.0-beta; Δείτε τη Διαμόρφωση Beta για νέες επιλογές: Δέσμες Jito, προστασία Lighthouse, reCAPTCHA και όρια χρήσης.
Ο κόμβος Kora σας θα υπογράφει συναλλαγές για τους χρήστες σας, επομένως είναι
σημαντικό να τον διαμορφώσετε ώστε να υπογράφει μόνο συναλλαγές που πληρούν τις
επιχειρηματικές σας απαιτήσεις. Το Kora σας δίνει μεγάλη ευελιξία στον τρόπο
διαμόρφωσης του κόμβου σας, αλλά είναι σημαντικό να κατανοήσετε τις επιπτώσεις
της διαμόρφωσής σας. Το kora.toml είναι το κέντρο ελέγχου για τη διαμόρφωση
του Kora. Αυτό το έγγραφο παρέχει μια ολοκληρωμένη αναφορά για τη διαμόρφωση του
κόμβου paymaster Kora μέσω του αρχείου διαμόρφωσης kora.toml.
Επισκόπηση
Το αρχείο kora.toml ελέγχει όλες τις πτυχές της συμπεριφοράς του κόμβου Kora
σας περιλαμβανομένων:
- Περιορισμός ρυθμού και έλεγχος ταυτότητας
- Διαθεσιμότητα μεθόδων RPC
- Κανόνες επικύρωσης συναλλαγών
- Μοντέλα τιμολόγησης τελών
- Πολιτικές ασφαλείας
- Διαθεσιμότητα μεθόδων RPC
- Μοντέλα τιμολόγησης τελών
- Διαμόρφωση διεύθυνσης πληρωμής
- Παρακολούθηση επιδόσεων
Το αρχείο διαμόρφωσής σας θα πρέπει να τοποθετηθεί στον κατάλογο ανάπτυξής σας ή
να καθοριστεί μέσω της σημαίας --config κατά την εκκίνηση του διακομιστή.
Ενότητες Διαμόρφωσης
Το αρχείο kora.toml είναι οργανωμένο σε ενότητες, η καθεμία με το δικό της
σύνολο επιλογών. Αυτός ο οδηγός περιηγείται σε κάθε ενότητα και εξηγεί τις
διαθέσιμες επιλογές:
- Βασικές Πολιτικές Kora - Βασικές ρυθμίσεις διακομιστή
- Έλεγχος Ταυτότητας Kora - Ρυθμίσεις ελέγχου ταυτότητας
- Προσωρινή Αποθήκευση Kora - Προσωρινή αποθήκευση Redis για κλήσεις RPC
- Όρια Χρήσης Kora - Περιορισμός συναλλαγών ανά πορτοφόλι
- Ενεργοποιημένες Μέθοδοι Kora - Μέθοδοι RPC του Kora για ενεργοποίηση
- Πολιτικές Επικύρωσης - Επικύρωση συναλλαγών και ασφάλεια
- Αποκλεισμός Επεκτάσεων Token-2022 - Αποκλεισμός επικίνδυνων επεκτάσεων Token-2022
- Πολιτική Πληρωτή Τελών - Περιορισμοί στο πορτοφόλι πληρωτή τελών
- Διαμόρφωση Τιμών - Μοντέλα τιμολόγησης τελών συναλλαγών
- Παρακολούθηση Επιδόσεων - Συλλογή μετρήσεων και παρακολούθηση
- Πλήρες Παράδειγμα - Πλήρης διαμόρφωση έτοιμη για παραγωγή
Δείγμα τμημάτων αρχείου kora.toml:
[kora]# Core server settings[kora.auth]# Authentication settings[kora.cache]# Redis caching configuration[kora.usage_limit]# Per-wallet transaction limiting[kora.enabled_methods]# Kora RPC methods to enable[validation]# Transaction validation rules[validation.token2022]# Token-2022 extension blocking[validation.fee_payer_policy]# Restrictions on fee payer wallet[validation.price]# Transaction fee pricing models[metrics]# Performance monitoring
Βασικές Πολιτικές Kora
Το τμήμα [kora] διαμορφώνει τη βασική συμπεριφορά του διακομιστή:
[kora]rate_limit = 100payment_address = "YourPaymentAddressPubkey11111111111111111111" # Optional
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
rate_limit | Γενικό όριο ρυθμού (αιτήματα ανά δευτερόλεπτο) σε όλους τους πελάτες | ✅ | αριθμός |
payment_address | Προαιρετική διεύθυνση πληρωμής για λήψη tokens πληρωμής (προεπιλεγμένη η διεύθυνση υπογραφέα εάν δεν καθοριστεί) | ❌ | συμβολοσειρά κωδικοποιημένη σε b58 |
Έλεγχος Ταυτότητας Kora
Το τμήμα [kora.auth] διαμορφώνει τον έλεγχο ταυτότητας για τον διακομιστή
Kora:
[kora.auth]api_key = "kora_live_sk_1234567890abcdef"hmac_secret = "kora_hmac_your-strong-hmac-secret-key-here"max_timestamp_age = 300
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
api_key | Κλειδί API για απλό έλεγχο ταυτότητας | ❌ | συμβολοσειρά |
hmac_secret | Μυστικό HMAC για έλεγχο ταυτότητας βάσει υπογραφής (ελάχιστο 32 χαρακτήρες) | ❌ | συμβολοσειρά |
max_timestamp_age | Μέγιστη ηλικία χρονικής σήμανσης HMAC σε δευτερόλεπτα | ❌ (προεπιλογή: 300) | αριθμός |
Σημείωση: Τα
api_keyκαιhmac_secretορίζουν μια γενική πολιτική ελέγχου ταυτότητας για όλους τους πελάτες. Για λεπτομερή ρύθμιση ελέγχου ταυτότητας, ανατρέξτε στον Οδηγό Ελέγχου Ταυτότητας.
Προσωρινή Αποθήκευση Kora (προαιρετικό)
Το τμήμα [kora.cache] διαμορφώνει την προσωρινή αποθήκευση βασισμένη σε Redis
για κλήσεις Solana RPC. Αυτό μπορεί να βελτιώσει σημαντικά την απόδοση
μειώνοντας τις περιττές ανακτήσεις δεδομένων λογαριασμών:
[kora.cache]enabled = true # Enable/disable cachingurl = "redis://localhost:6379" # Redis connection URLdefault_ttl = 300 # Default TTL in seconds (5 minutes)account_ttl = 60 # Account data TTL in seconds (1 minute)
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
enabled | Ενεργοποίηση προσωρινής αποθήκευσης Redis για κλήσεις RPC | ❌ (προεπιλογή: false) | boolean |
url | URL σύνδεσης Redis (απαιτείται όταν είναι ενεργοποιημένο) | ✅ | συμβολοσειρά |
default_ttl | Προεπιλεγμένο TTL για καταχωρήσεις προσωρινής μνήμης σε δευτερόλεπτα | ❌ (προεπιλογή: 300) | αριθμός |
account_ttl | TTL για προσωρινή μνήμη δεδομένων λογαριασμού σε δευτερόλεπτα | ❌ (προεπιλογή: 60) | αριθμός |
Σημείωση: Όταν η προσωρινή αποθήκευση είναι ενεργοποιημένη, πρέπει να είναι διαθέσιμη μια παρουσία Redis στη καθορισμένη διεύθυνση URL. Η προσωρινή αποθήκευση επιστρέφει ομαλά σε απευθείας κλήσεις RPC εάν η Redis δεν είναι διαθέσιμη.
Όρια Χρήσης Kora (προαιρετικό)
Η ενότητα [kora.usage_limit] ρυθμίζει τον περιορισμό συναλλαγών ανά πορτοφόλι
για να αποτρέψει την κατάχρηση και να εξασφαλίσει δίκαιη χρήση σε όλους τους
χρήστες σας. Αυτό θα μπορούσε επίσης να χρησιμοποιηθεί για τη δημιουργία
προγραμμάτων ανταμοιβών για την επιδότηση των τελών συναλλαγών των χρηστών μέχρι
ένα συγκεκριμένο όριο.
Σημαντικό: Επί του παρόντος, η μόνη μορφή περιορισμού χρήσης που υποστηρίζεται από το Kora είναι ένα μόνιμο όριο. Μόλις ένα πορτοφόλι φτάσει το όριο συναλλαγών του, δεν μπορεί να επαναφερθεί και ο χρήστης δεν θα μπορεί πλέον να υποβάλει άλλες συναλλαγές χρησιμοποιώντας το ίδιο πορτοφόλι. Αυτό το όριο παραμένει μέχρι να διαγραφεί χειροκίνητα από τη Redis ή να επαναφερθούν τα δεδομένα της Redis.
Σημείωση: Αυτή η λειτουργία απαιτεί Redis όταν είναι ενεργοποιημένη σε πολλαπλές παρουσίες Kora:
[kora.usage_limit]enabled = true # Enable/disable usage limitingcache_url = "redis://localhost:6379" # Redis URL for shared state (required when enabled)max_transactions = 100 # Max transactions per wallet (0 = unlimited)fallback_if_unavailable = true # Continue if Redis is unavailable
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
enabled | Ενεργοποίηση περιορισμού συναλλαγών ανά πορτοφόλι | ❌ (προεπιλογή: false) | boolean |
cache_url | Διεύθυνση URL σύνδεσης Redis για κοινόχρηστη παρακολούθηση χρήσης | ❌ | string |
max_transactions | Μέγιστες συναλλαγές ανά πορτοφόλι (0 = απεριόριστες) | ❌ (προεπιλογή: 100) | number |
fallback_if_unavailable | Να επιτρέπονται συναλλαγές εάν η Redis δεν είναι διαθέσιμη | ❌ (προεπιλογή: true) | boolean |
Σημείωση: Τα όρια χρήσης παρακολουθούνται ανά διεύθυνση πορτοφολιού με αυτόματη λήξη βάσει TTL. Όταν το
fallback_if_unavailableείναι true, το σύστημα επιτρέπει τις συναλλαγές να προχωρήσουν εάν η Redis είναι προσωρινά μη διαθέσιμη, αποτρέποντας τη διακοπή της υπηρεσίας. Ορίζοντας τοmax_transactionsσε 0 θα επιτρέψει απεριόριστες συναλλαγές.
Μέθοδοι με Ενεργοποιημένο Kora (προαιρετικό)
Η ενότητα [kora.enabled_methods] ελέγχει ποιες μέθοδοι RPC είναι
ενεργοποιημένες. Αυτή η ενότητα είναι προαιρετική και από προεπιλογή, όλες οι
μέθοδοι είναι ενεργοποιημένες. Κάθε μέθοδος μπορεί να ενεργοποιηθεί ή να
απενεργοποιηθεί ορίζοντας την τιμή σε true ή false:
[kora.enabled_methods]liveness = trueestimate_transaction_fee = trueget_supported_tokens = truesign_transaction = falsesign_and_send_transaction = falsetransfer_transaction = falseget_blockhash = trueget_config = trueget_payer_signer = true
| Επιλογή | Περιγραφή Μεθόδου | Απαραίτητο | Τύπος |
|---|---|---|---|
liveness | Σημείο ελέγχου κατάστασης | ✅ | boolean |
estimate_transaction_fee | Εκτίμηση της χρέωσης για μια συναλλαγή | ✅ | boolean |
get_supported_tokens | Λίστα αποδεκτών tokens | ✅ | boolean |
sign_transaction | Υπογραφή συναλλαγής χωρίς αποστολή στο δίκτυο | ✅ | boolean |
sign_and_send_transaction | Υπογραφή συναλλαγής και αποστολή στο δίκτυο | ✅ | boolean |
transfer_transaction | Διαχείριση μεταφορών tokens | ✅ | boolean |
get_blockhash | Λήψη πρόσφατου blockhash | ✅ | boolean |
get_config | Επιστροφή της διαμόρφωσης του διακομιστή Kora | ✅ | boolean |
Σημείωση: εάν αυτή η ενότητα συμπεριλαμβάνεται στο αρχείο
kora.tomlσας, όλες οι μέθοδοι πρέπει ρητά να οριστούν σεtrueήfalse.
Πολιτικές Επικύρωσης
Η ενότητα [validation] ορίζει κανόνες ασφαλείας που σχετίζονται με το Solana
και όρια συναλλαγών:
[validation]max_allowed_lamports = 1000000 # 0.001 SOLmax_signatures = 10price_source = "Jupiter"allow_durable_transactions = false # Block durable nonce transactionsallowed_programs = ["11111111111111111111111111111111", # System Program (required for SOL transfers)"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", # SPL Token Program"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", # Token-2022 Program"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", # Associated Token Program"AddressLookupTab1e1111111111111111111111111", # Address Lookup Table Program"ComputeBudget11111111111111111111111111111111", # Compute Budget Program]allowed_tokens = ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC (mainnet)# additional tokens here]allowed_spl_paid_tokens = ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC (mainnet)# additional tokens here]disallowed_accounts = [# "BadActorPubkey11111111111111111111111111111",]
| Επιλογή | Περιγραφή | Απαραίτητο | Τύπος |
|---|---|---|---|
max_allowed_lamports | Ο ορισμός μέγιστου αριθμού lamports ανά συναλλαγή περιορίζει την έκθεση του κόμβου Kora σε μία μεμονωμένη συναλλαγή. | ✅ | number |
max_signatures | Οι βασικές χρεώσεις του Solana είναι συνάρτηση του αριθμού των υπογραφών σε μια συναλλαγή, επομένως ο ορισμός μέγιστου αριθμού υπογραφών ανά συναλλαγή είναι ένας καλός τρόπος να αποτραπούν οι χρήστες από το να ξοδεύουν πολύ SOL σε μία συναλλαγή. | ✅ | number |
price_source | Oracle για δεδομένα τιμών tokens. Σημείωση: Όταν ορίζεται σε "Jupiter", η μεταβλητή περιβάλλοντος JUPITER_API_KEY είναι απαραίτητη. Ο διακομιστής θα αποτύχει να ξεκινήσει χωρίς αυτήν. | ✅ | "Jupiter" ή "Mock" |
allow_durable_transactions | Επιτρέπει συναλλαγές με ανθεκτικό nonce. Δείτε Ζητήματα Ασφαλείας παρακάτω. | ❌ (προεπιλογή: false) | boolean |
allowed_programs | Προγράμματα Solana με τα οποία μπορούν να αλληλεπιδράσουν οι συναλλαγές | ✅ | Πίνακας από συμβολοσειρές b58 |
allowed_tokens | Token mints που μπορούν να χρησιμοποιηθούν σε συναλλαγές | ✅ | Πίνακας από συμβολοσειρές b58 |
allowed_spl_paid_tokens | SPL tokens που γίνονται δεκτά ως πληρωμή για χρεώσεις συναλλαγών | ✅ | Πίνακας από συμβολοσειρές b58 |
disallowed_accounts | Λογαριασμοί που αποκλείονται ρητά από συναλλαγές | ✅ | Πίνακας από συμβολοσειρές b58 |
Σημείωση: Επιτρέπονται κενοί πίνακες, αλλά θα πρέπει να ορίσετε τουλάχιστον ένα
allowed_programs,allowed_tokens,allowed_spl_paid_tokensστη λίστα επιτρεπόμενων για να μπορεί ο κόμβος Kora να επεξεργαστεί συναλλαγές. Πρέπει να ορίσετε το System Program ή το Token Program για να μπορεί ο κόμβος Kora να επεξεργαστεί μεταφορές. Για να ενεργοποιήσετε κοινούς τύπους εντολών (π.χ., Compute Budget, Address Lookup Table), πρέπει να ορίσετε το Compute Budget Program ή το Address Lookup Table Program κ.λπ.
Ασφάλεια Ανθεκτικών Συναλλαγών
ΠΡΟΕΙΔΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ: Οι ανθεκτικές συναλλαγές nonce επιτρέπουν την αόριστη διατήρηση υπογεγραμμένων συναλλαγών και την υποβολή τους αργότερα. Αυτό θα μπορούσε να χρησιμοποιηθεί ως οικονομικό διάνυσμα επίθεσης όπου κάποιος θα μπορούσε να αποκτήσει μια υπογεγραμμένη συναλλαγή και να περιμένει να την υποβάλει όταν οι συνθήκες της αγοράς είναι ευνοϊκές γι' αυτόν (π.χ., όταν η αξία του SOL έχει πέσει ή η αξία του token πληρωμής έχει αυξηθεί).
Από προεπιλογή, το allow_durable_transactions έχει οριστεί σε false για να
αποκλείει όλες τις ανθεκτικές συναλλαγές nonce. Ενεργοποιήστε αυτό μόνο εάν η
εφαρμογή σας απαιτεί συγκεκριμένα ανθεκτικές συναλλαγές και κατανοείτε τους
κινδύνους.
Εάν πρέπει να ενεργοποιήσετε ανθεκτικές συναλλαγές, εξετάστε τα εξής:
- Χρησιμοποιήστε έλεγχο ταυτότητας για να περιορίσετε την πρόσβαση API
- Εφαρμόστε πρόσθετη επικύρωση εκτός αλυσίδας
- Παρακολουθήστε για ασυνήθιστα μοτίβα συναλλαγών
- Παρακολουθήστε και περιορίστε τα υπόλοιπα των λογαριασμών υπογραφής
- Εναλλάσσετε τακτικά τα κλειδιά υπογραφής
Μάθετε περισσότερα για τις ανθεκτικές συναλλαγές nonce στο Solana Docs.
Αποκλεισμός Επεκτάσεων Token-2022
Η ενότητα [validation.token2022] σάς επιτρέπει να αποκλείσετε συγκεκριμένες
επεκτάσεις Token-2022 για ενισχυμένη ασφάλεια. Όλες οι επεκτάσεις είναι
ενεργοποιημένες από προεπιλογή. Μπορείτε να αποκλείσετε συγκεκριμένες επεκτάσεις
προσθέτοντάς τες στους πίνακες blocked_mint_extensions ή
blocked_account_extensions:
[validation.token2022]blocked_mint_extensions = ["transfer_hook", # Block tokens with transfer hooks"pausable", # Block pausable tokens"permanent_delegate", # Block tokens with permanent delegates]blocked_account_extensions = ["cpi_guard", # Block accounts with CPI guard"memo_transfer", # Block accounts requiring memos]
Διαθέσιμες Επεκτάσεις Mint
| Όνομα Επέκτασης | Περιγραφή |
|---|---|
confidential_transfer_mint | Διαμόρφωση εμπιστευτικής μεταφοράς για το mint |
confidential_mint_burn | Διαμόρφωση εμπιστευτικού mint και καύσης |
transfer_fee_config | Διαμόρφωση προμήθειας μεταφοράς |
mint_close_authority | Αρχή με δικαίωμα κλεισίματος του mint |
interest_bearing_config | Διαμόρφωση token με επιτόκιο |
non_transferable | Καθιστά τα tokens μη μεταβιβάσιμα |
permanent_delegate | Μόνιμος εκπρόσωπος για το mint |
transfer_hook | Προσαρμοσμένο πρόγραμμα hook μεταφοράς |
pausable | Διαμόρφωση token με δυνατότητα παύσης |
Διαθέσιμες Επεκτάσεις Λογαριασμού
| Όνομα Επέκτασης | Περιγραφή |
|---|---|
confidential_transfer_account | Κατάσταση εμπιστευτικής μεταφοράς για τον λογαριασμό |
non_transferable_account | Λογαριασμός token μη μεταβιβάσιμου |
transfer_hook_account | Κατάσταση hook μεταφοράς για τον λογαριασμό |
pausable_account | Κατάσταση λογαριασμού token με δυνατότητα παύσης |
memo_transfer | Απαιτεί σημείωση για μεταφορές |
cpi_guard | Αποτρέπει ορισμένες κλήσεις CPI |
immutable_owner | Ο ιδιοκτήτης του λογαριασμού δεν μπορεί να αλλάξει |
default_account_state | Προεπιλεγμένη κατάσταση για νέους λογαριασμούς |
transfer_hook
Ζητήματα Ασφάλειας
Επέκταση PermanentDelegate - Τα tokens με αυτήν την επέκταση επιτρέπουν στον εκπρόσωπο να μεταφέρει/καίει tokens ανά πάσα στιγμή χωρίς έγκριση του ιδιοκτήτη. Αυτό δημιουργεί σημαντικούς κινδύνους για τον χειριστή κόμβου Kora καθώς τα χρήματα πληρωμής μπορούν να κατασχεθούν μετά την πληρωμή.
- Εξετάστε το ενδεχόμενο προσθήκης του "permanent_delegate" στο
blocked_mint_extensionsστο [validation.token2022] εκτός αν χρειάζεται ρητά για την περίπτωση χρήσης σας. - Αποφύγετε τη χρήση tokens πληρωμής με την επέκταση
permanent_delegate.
Πολιτική Πληρωτή Τελών
Η ενότητα [validation.fee_payer_policy] παρέχει λεπτομερή έλεγχο σχετικά με
τις ενέργειες που μπορεί να εκτελέσει το πορτοφόλι πληρωτή τελών του κόμβου Kora
σας. Η πολιτική οργανώνεται ανά τύπο προγράμματος (System Program, Token
Program, Token-2022) και καλύπτει όλους τους διαφορετικούς τύπους εντολών. Αυτό
αποτρέπει απροσδόκητη συμπεριφορά από συναλλαγές χρηστών που χρησιμοποιούν τον
κόμβο Kora σας ως υπογράφοντα.
Για παράδειγμα, εάν το spl_token.allow_transfer έχει οριστεί σε false, ο
κόμβος Kora δεν θα υπογράφει συναλλαγές που περιλαμβάνουν μεταφορά SPL token
όπου ο πληρωτής τελών του κόμβου Kora είναι η εξουσία μεταφοράς.
[validation.fee_payer_policy.system]allow_transfer = false # System Transfer/TransferWithSeedallow_assign = false # System Assign/AssignWithSeedallow_create_account = false # System CreateAccount/CreateAccountWithSeedallow_allocate = false # System Allocate/AllocateWithSeed[validation.fee_payer_policy.system.nonce]allow_initialize = false # InitializeNonceAccountallow_advance = false # AdvanceNonceAccountallow_authorize = false # AuthorizeNonceAccountallow_withdraw = false # WithdrawNonceAccount[validation.fee_payer_policy.spl_token]allow_transfer = false # Transfer/TransferCheckedallow_burn = false # Burn/BurnCheckedallow_close_account = false # CloseAccountallow_approve = false # Approve/ApproveCheckedallow_revoke = false # Revokeallow_set_authority = false # SetAuthorityallow_mint_to = false # MintTo/MintToCheckedallow_initialize_mint = false # InitializeMint/InitializeMint2allow_initialize_account = false # InitializeAccount/InitializeAccount3allow_initialize_multisig = false # InitializeMultisig/InitializeMultisig2allow_freeze_account = false # FreezeAccountallow_thaw_account = false # ThawAccount[validation.fee_payer_policy.token_2022]allow_transfer = false # Transfer/TransferCheckedallow_burn = false # Burn/BurnCheckedallow_close_account = false # CloseAccountallow_approve = false # Approve/ApproveCheckedallow_revoke = false # Revokeallow_set_authority = false # SetAuthorityallow_mint_to = false # MintTo/MintToCheckedallow_initialize_mint = false # InitializeMint/InitializeMint2allow_initialize_account = false # InitializeAccount/InitializeAccount3allow_initialize_multisig = false # InitializeMultisig/InitializeMultisig2allow_freeze_account = false # FreezeAccountallow_thaw_account = false # ThawAccount
Εντολές System Program
| Επιλογή | Περιγραφή | Προεπιλογή | Τύπος |
|---|---|---|---|
allow_transfer | Επιτρέπει τον πληρωτή τελών ως αποστολέα σε εντολές Transfer/TransferWithSeed | false | boolean |
allow_assign | Επιτρέπει τον πληρωτή τελών ως εξουσία σε εντολές Assign/AssignWithSeed | false | boolean |
allow_create_account | Επιτρέπει τον πληρωτή τελών ως πληρωτή χρηματοδότησης σε εντολές CreateAccount/CreateAccountWithSeed | false | boolean |
allow_allocate | Επιτρέπει τον πληρωτή τελών ως κάτοχο λογαριασμού σε εντολές Allocate/AllocateWithSeed | false | boolean |
nonce.allow_initialize | Επιτρέπει τον πληρωτή τελών να οριστεί ως εξουσία nonce στην InitializeNonceAccount | false | boolean |
nonce.allow_advance | Επιτρέπει τον πληρωτή τελών ως εξουσία στην AdvanceNonceAccount | false | boolean |
nonce.allow_authorize | Επιτρέπει τον πληρωτή τελών ως τρέχουσα εξουσία στην AuthorizeNonceAccount | false | boolean |
nonce.allow_withdraw | Επιτρέπει τον πληρωτή τελών ως εξουσία στην WithdrawNonceAccount | false | boolean |
Εντολές Token Program
| Επιλογή | Περιγραφή | Προεπιλογή | Τύπος |
|---|---|---|---|
allow_transfer | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές Transfer/TransferChecked | false | boolean |
allow_burn | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές Burn/BurnChecked | false | boolean |
allow_close_account | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές CloseAccount | false | boolean |
allow_approve | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές Approve/ApproveChecked | false | boolean |
allow_revoke | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές Revoke | false | boolean |
allow_set_authority | Επιτρέπει τον πληρωτή τελών ως τρέχουσα εξουσία σε εντολές SetAuthority | false | boolean |
allow_mint_to | Επιτρέπει τον πληρωτή τελών ως εξουσία mint σε εντολές MintTo/MintToChecked | false | boolean |
allow_initialize_mint | Επιτρέπει τον πληρωτή τελών ως εξουσία mint σε εντολές InitializeMint/InitializeMint2 | false | boolean |
allow_initialize_account | Επιτρέπει τον πληρωτή τελών ως κάτοχο σε εντολές InitializeAccount/InitializeAccount3 | false | boolean |
allow_initialize_multisig | Επιτρέπει τον πληρωτή τελών ως υπογράφοντα σε εντολές InitializeMultisig/InitializeMultisig2 | false | boolean |
allow_freeze_account | Επιτρέπει τον πληρωτή τελών ως εξουσία πάγωσης σε εντολές FreezeAccount | false | boolean |
allow_thaw_account | Επιτρέπει τον πληρωτή τελών ως εξουσία πάγωσης σε εντολές ThawAccount | false | boolean |
Το Token-2022 υποστηρίζει το ίδιο σύνολο εντολών με το SPL Token με
πανομοιότυπες επιλογές διαμόρφωσης (στην ενότητα
[validation.fee_payer_policy.token_2022]).
Θέματα Ασφάλειας
ΠΡΟΕΙΔΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ: Για λόγους ασφαλείας, συνιστάται να ορίσετε όλα
αυτά σε false (προεπιλογή) και να τα ενεργοποιήσετε μόνο όταν χρειάζεται. Αυτό
θα αποτρέψει ανεπιθύμητη συμπεριφορά όπως η εξάντληση του λογαριασμού πληρωτή
χρεώσεων από χρήστες ή η καύση tokens από τον λογαριασμό πληρωτή χρεώσεων. Αυτό
αποτρέπει:
- Εξάντληση Λογαριασμού: Χρήστες που μεταφέρουν SOL ή tokens από τον λογαριασμό πληρωτή χρεώσεων σας
- Κατάληψη Εξουσιοδότησης: Χρήστες που αλλάζουν εξουσιοδοτήσεις σε λογαριασμούς που ανήκουν στον πληρωτή χρεώσεων σας
- Μη Εξουσιοδοτημένη Έκδοση: Χρήστες που εκδίδουν tokens εάν ο πληρωτής χρεώσεων σας έχει δικαιώματα έκδοσης
- Χειραγώγηση Λογαριασμού: Χρήστες που παγώνουν, κλείνουν ή τροποποιούν λογαριασμούς που ελέγχονται από τον πληρωτή χρεώσεων σας
Βέλτιστη Πρακτική: Ξεκινήστε με όλα τα δικαιώματα απενεργοποιημένα και ενεργοποιήστε μόνο το ελάχιστο απαραίτητο σύνολο για τη συγκεκριμένη περίπτωση χρήσης σας.
Διαμόρφωση Τιμολόγησης (προαιρετική)
Η ενότητα [validation.price] ορίζει τον τρόπο υπολογισμού των χρεώσεων
συναλλαγών. Διατίθενται τρία μοντέλα τιμολόγησης:
- Τιμολόγηση Περιθωρίου (προεπιλογή) - Προσθήκη ποσοστιαίου περιθωρίου πάνω από τις πραγματικές χρεώσεις δικτύου (το προεπιλεγμένο περιθώριο είναι 0.0)
- Σταθερή Τιμολόγηση - Χρέωση σταθερού ποσού σε συγκεκριμένο token ανεξάρτητα από τις χρεώσεις δικτύου
- Δωρεάν Τιμολόγηση - Χορηγία όλων των χρεώσεων συναλλαγών (χωρίς χρέωση στους χρήστες)
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
type | Μοντέλο τιμολόγησης προς χρήση | ✅ | "margin", "fixed" ή "free" |
margin | Ποσοστό περιθωρίου για προσθήκη στις χρεώσεις δικτύου | (όταν το type είναι "margin") | number |
amount | Σταθερό ποσό προς χρέωση σε βασικές μονάδες token | (όταν το type είναι "fixed") | number |
token | Mint token για χρέωση | (όταν το type είναι "fixed") | συμβολοσειρά κωδικοποιημένη σε b58 |
Τιμολόγηση Περιθωρίου
Προσθέστε ένα ποσοστό περιθωρίου πάνω από τις πραγματικές χρεώσεις δικτύου:
[validation.price]type = "margin"margin = 0.1 # 10% margin (0.1 = 10%, 1.0 = 100%)
Σταθερή Τιμολόγηση
ΠΡΟΕΙΔΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ: Η σταθερή τιμολόγηση ΔΕΝ περιλαμβάνει την εκροή του πληρωτή χρεώσεων στο χρεωμένο ποσό. Αυτό μπορεί να επιτρέψει στους χρήστες να αδειάσουν τον λογαριασμό του πληρωτή χρεώσεών σας εάν δεν έχει διαμορφωθεί σωστά.
Χρεώστε ένα σταθερό ποσό σε συγκεκριμένο token ανεξάρτητα από τις χρεώσεις δικτύου:
[validation.price]type = "fixed"amount = 1000000 # Amount in token's base unitstoken = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" # USDC mint
Δωρεάν Συναλλαγές
Χορηγήστε όλες τις χρεώσεις συναλλαγών (χωρίς χρέωση στους χρήστες):
[validation.price]type = "free"
Μέτρα Ασφαλείας κατά τη Χρήση Σταθερής/Δωρεάν Τιμολόγησης
-
Απενεργοποιήστε Όλες τις Μεταφορές και Χρηματικές Λειτουργίες - Αποτρέψτε τη χρήση του πληρωτή χρεώσεων ως πηγή σε μεταφορές:
[validation.fee_payer_policy.system]allow_transfer = false # Block SOL transfersallow_create_account = false # Block account creation with lamportsallow_allocate = false # Block space allocation[validation.fee_payer_policy.system.nonce]allow_withdraw = false # Block nonce account withdrawals[validation.fee_payer_policy.spl_token] # and for [validation.fee_payer_policy.token_2022]allow_transfer = false # Block SPL transfersallow_burn = false # Block SPL token burningallow_close_account = false # Block SPL token account closures (returns rent)allow_mint_to = false # Block unauthorized SPL token mintingallow_initialize_account = false # Block account initialization -
Ενεργοποιήστε τον Έλεγχο Ταυτότητας - Χρησιμοποιήστε έλεγχο ταυτότητας για να αποτρέψετε την κατάχρηση:
[kora.auth]api_key = "your-secure-api-key"# orhmac_secret = "your-minimum-32-character-hmac-secret" -
Ορίστε Συντηρητικά Όρια - Ελαχιστοποιήστε την έκθεση:
[validation]max_allowed_lamports = 1000000 # 0.001 SOL maximum
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Ιδιαίτερα επικίνδυνες λειτουργίες κατά τη χρήση σταθερής/δωρεάν τιμολόγησης:
allow_mint_to: Θα μπορούσε να επιτρέψει απεριόριστη δημιουργία token εάν ο πληρωτής χρεώσεων έχει εξουσία έκδοσηςallow_set_authority: Θα μπορούσε να μεταφέρει τον έλεγχο κρίσιμων λογαριασμών σε επιτιθέμενουςallow_transfer: Επιτρέπει άμεσο άδειασμα των υπολοίπων token του πληρωτή χρεώσεωνallow_close_account: Επιστρέφει το ενοίκιο σε λογαριασμούς που ελέγχονται από επιτιθέμενους
Παρακολούθηση Απόδοσης (προαιρετικό)
Η ενότητα [metrics] διαμορφώνει τη συλλογή μετρήσεων και την παρακολούθηση.
Αυτή η ενότητα είναι προαιρετική και από προεπιλογή, οι μετρήσεις είναι
απενεργοποιημένες.
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
enabled | Ενεργοποίηση συλλογής μετρήσεων | ✅ | boolean |
endpoint | Προσαρμοσμένη διαδρομή τελικού σημείου μετρήσεων | ✅ | string |
port | Θύρα τελικού σημείου μετρήσεων | ✅ | number |
scrape_interval | Συχνότητα ανάκτησης Prometheus (δευτερόλεπτα) | ✅ | number |
Παρακολούθηση Υπολοίπου Πληρωτή Τελών
Η ενότητα [metrics.fee_payer_balance] ρυθμίζει την αυτόματη παρακολούθηση του
υπολοίπου SOL του πληρωτή τελών σας:
| Επιλογή | Περιγραφή | Απαιτείται | Τύπος |
|---|---|---|---|
enabled | Ενεργοποίηση παρακολούθησης υπολοίπου πληρωτή τελών | ❌ (προεπιλογή: false) | boolean |
expiry_seconds | Διάστημα παρακολούθησης παρασκηνίου σε δευτερόλεπτα | ❌ (προεπιλογή: 30) | number |
Όταν είναι ενεργοποιημένο, το Kora παρακολουθεί αυτόματα το υπόλοιπο SOL του
πληρωτή τελών σας και το εκθέτει μέσω του μετρητή Prometheus
fee_payer_balance_lamports. Αυτό βοηθά στον σχεδιασμό χωρητικότητας και στην
ειδοποίηση χαμηλού υπολοίπου.
http://localhost:{port}/{metrics-endpoint}
→ Οδηγός Αναφοράς Παρακολούθησης Kora
Πλήρες Παράδειγμα
Ακολουθεί μια έτοιμη για παραγωγή ρύθμιση με βέλτιστες πρακτικές ασφαλείας:
# Kora Paymaster Configuration# Last Updated: 2025-08-22[kora]# Rate limiting: 100 requests per second globallyrate_limit = 100# Optional payment address (defaults to signer address(es) if not specified)# payment_address = "YourPaymentAddressPubkey11111111111111111111"[kora.auth]# Authentication (choose based on security needs)# api_key = "kora_live_sk_generate_secure_key_here"hmac_secret = "kora_hmac_minimum_32_character_secret_here"max_timestamp_age = 300# Caching configuration (optional but recommended for production)[kora.cache]enabled = trueurl = "redis://localhost:6379"default_ttl = 300 # 5 minutesaccount_ttl = 60 # 1 minute# Usage limiting (optional, prevents abuse)[kora.usage_limit]enabled = truecache_url = "redis://localhost:6379" # Can share same Redis instance as cachemax_transactions = 100 # Per-wallet limitfallback_if_unavailable = true # Don't block if Redis is down# Disable unnecessary RPC methods for security[kora.enabled_methods]liveness = trueestimate_transaction_fee = trueget_supported_tokens = truesign_transaction = falsesign_and_send_transaction = falsetransfer_transaction = falseget_blockhash = trueget_config = trueget_payer_signer = true[validation]# Use production oracleprice_source = "Jupiter"# Conservative transaction limitsmax_allowed_lamports = 1000000 # 0.001 SOL maxmax_signatures = 10# Block durable nonce transactions (security default)allow_durable_transactions = false# Minimal program allowlist (expand as needed)allowed_programs = ["11111111111111111111111111111111", # System Program"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", # SPL Token"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL", # Associated Token"AddressLookupTab1e1111111111111111111111111", # Address Lookup Table"ComputeBudget11111111111111111111111111111111", # Compute Budget"MyProgram111111111111111111111111111111111",# Add your specific program IDs here]# Production token allowlistallowed_tokens = ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC"So11111111111111111111111111111111111111112", # Wrapped SOL"MyToken1111111111111111111111111111111111111111",# Add tokens your application uses]# Payment tokens (only liquid, trusted tokens)allowed_spl_paid_tokens = ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", # USDC only]# Known bad actors or compromised addressesdisallowed_accounts = ["BadActor1111111111111111111111111111111111111111",]# Restrictive fee payer policy (recommended for production)[validation.fee_payer_policy.system]allow_transfer = false # Block SOL transfers from fee payerallow_assign = false # Block account ownership changesallow_create_account = false # Block creating accounts with fee payer fundsallow_allocate = false # Block allocating space for fee payer accounts[validation.fee_payer_policy.system.nonce]allow_initialize = false # Block nonce account initializationallow_advance = false # Block nonce advancementallow_authorize = false # Block nonce authority changesallow_withdraw = false # Block nonce withdrawals[validation.fee_payer_policy.spl_token]allow_transfer = false # Critical: Block SPL transfersallow_burn = false # Block token burningallow_close_account = false # Block account closuresallow_approve = false # Block token approvalsallow_revoke = false # Block delegate revocationsallow_set_authority = false # Block authority changesallow_mint_to = false # Block minting operationsallow_initialize_mint = false # Block mint initializationallow_initialize_account = false # Block account initializationallow_initialize_multisig = false # Block multisig initializationallow_freeze_account = false # Block account freezingallow_thaw_account = false # Block account thawing[validation.fee_payer_policy.token_2022]allow_transfer = false # Critical: Block Token2022 transfersallow_burn = false # Block token burningallow_close_account = false # Block account closuresallow_approve = false # Block token approvalsallow_revoke = false # Block delegate revocationsallow_set_authority = false # Block authority changesallow_mint_to = false # Block minting operationsallow_initialize_mint = false # Block mint initializationallow_initialize_account = false # Block account initializationallow_initialize_multisig = false # Block multisig initializationallow_freeze_account = false # Block account freezingallow_thaw_account = false # Block account thawing# Token-2022 extension blocking[validation.token2022]# Block potentially risky mint extensionsblocked_mint_extensions = ["transfer_hook", # Custom transfer logic"pausable", # Can freeze transfers"permanent_delegate", # Permanent control]# Block complex account extensionsblocked_account_extensions = ["cpi_guard", # Restricts composability"memo_transfer", # Requires additional data]# Sustainable pricing with 15% margin[validation.price]type = "margin"margin = 0.15 # 15% margin on network fees# Metrics collection[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60# Fee payer balance monitoring[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
Επικύρωση Ρυθμίσεων
Το Kora επικυρώνει τη ρύθμισή σας κατά την εκκίνηση. Εάν θέλετε να επικυρώσετε τη ρύθμισή σας χωρίς να εκκινήσετε τον διακομιστή, μπορείτε να χρησιμοποιήσετε την εντολή επικύρωσης ρυθμίσεων:
kora --config kora.toml config validate # or validate-with-rpc
Μπορείτε επίσης να εκτελέσετε την εντολή validate-with-rpc για να επικυρώσετε
τη ρύθμισή σας με τον διακομιστή RPC (αυτός ο έλεγχος επικύρωσης είναι λίγο πιο
αργός αλλά κάνει πιο διεξοδικούς ελέγχους λογαριασμών)
Εκκίνηση του Διακομιστή
Αφού ρυθμίσετε το αρχείο kora.toml, μπορείτε να εκκινήσετε τον διακομιστή
Kora:
kora --config path/to/kora.toml rpc start --no-load-signer # --other-rpc-flags-here
Η σημαία --no-load-signer θα αρχικοποιήσει τον διακομιστή χωρίς να φορτώσει
κανέναν υπογράφοντα. Αυτό είναι χρήσιμο για τη δοκιμή της ρύθμισής σας. Για να
φορτώσετε υπογράφοντες, θα χρειαστεί να ρυθμίσετε το αρχείο signers.toml. Μια
ελάχιστη ρύθμιση με έναν μόνο υπογράφοντα θα έμοιαζε με αυτή:
[signer_pool]# Selection strategy: round_robin, random, weightedstrategy = "round_robin"# Primary memory signer[[signers]]name = "my-signer"type = "memory"private_key_env = "MY_SIGNER_PRIVATE_KEY"
Αυτό θα φορτώσει έναν μόνο υπογράφοντα από τη μεταβλητή περιβάλλοντος
MY_SIGNER_PRIVATE_KEY. Στη συνέχεια μπορείτε να εκκινήσετε τον διακομιστή σας
με:
kora --config path/to/kora.toml rpc start --signers-config path/to/signers.toml
Για περισσότερες πληροφορίες και προηγμένη διαμόρφωση υπογραφέα, δείτε τον Οδηγό Υπογραφέων.
Βέλτιστες Πρακτικές
- Ξεκινήστε Περιοριστικά: Ξεκινήστε με αυστηρά όρια και επεκτείνετέ τα σταδιακά
- Παρακολουθήστε τη Χρήση: Εντοπίστε ποια προγράμματα και tokens χρησιμοποιούνται πραγματικά
- Τακτικές Ενημερώσεις: Επανεξετάστε και ενημερώστε τις μαύρες λίστες και τα όρια
- Δοκιμάστε τις Αλλαγές: Επικυρώστε πρώτα τις αλλαγές διαμόρφωσης σε περιβάλλον δοκιμών
- Εκδόσεις: Διατηρήστε ένα αρχείο καταγραφής αλλαγών της διαμόρφωσής σας
Χρειάζεστε Βοήθεια;
- Δείτε τον Οδηγό Ταυτοποίησης για τη ρύθμιση ταυτοποίησης
- Δείτε τον Οδηγό Υπογραφέων για τη διαμόρφωση υπογραφέα
- Δείτε τον Οδηγό Χειριστή για περισσότερες πληροφορίες σχετικά με την εκτέλεση ενός κόμβου Kora
- Επισκεφθείτε το Solana Stack Exchange με
την ετικέτα
kora - Αναφέρετε προβλήματα στο GitHub
Is this page helpful?