Käytätkö Kora v2.2.0-beta -versiota? Katso Beta-määritys uusista vaihtoehdoista: Jito-nipuista, Lighthouse-suojauksesta, reCAPTCHA:sta ja käyttörajoituksista.
Kora-solmusi allekirjoittaa käyttäjiesi tapahtumia, joten on tärkeää määrittää
se allekirjoittamaan vain liiketoimintavaatimuksesi täyttäviä tapahtumia. Kora
tarjoaa paljon joustavuutta solmusi määritykseen, mutta on tärkeää ymmärtää
määrityksen vaikutukset. kora.toml on Kora-määrityksesi ohjausvehje. Tämä
dokumentti tarjoaa kattavan viitteen Kora-maksupalvelin-solmusi määrittämiseen
kora.toml-määritystiedoston kautta.
Yleiskatsaus
kora.toml-tiedosto ohjaa kaikkia Kora-solmusi toiminnan näkökohtia, kuten:
- Nopeusrajoitukset ja todennus
- RPC-metodien saatavuus
- Tapahtumien validointisäännöt
- Maksumallien hinnoittelu
- Turvallisuuskäytännöt
- RPC-metodien saatavuus
- Maksumallien hinnoittelu
- Maksun osoitemääritys
- Suorituskyvyn seuranta
Määritystiedostosi tulisi sijaita käyttöönottokansiossasi tai määritettynä
--config-lipun kautta palvelimen käynnistämisen yhteydessä.
Määritysosiot
kora.toml-tiedosto on järjestetty osioihin, joilla kullakin on omat
asetuksensa. Tämä opas käy läpi jokaisen osion ja selittää saatavilla olevat
vaihtoehdot:
- Kora-ydinperiaatteet - Palvelimen perusasetukset
- Kora-todennus - Todennusasetukset
- Kora-välimuistitus - Redis-välimuistitus RPC-kutsuille
- Kora-käyttörajoitukset - Lompakon kohtaiset tapahtumarajoitukset
- Kora-käytössä olevat metodit - Käytettävät Kora RPC -metodit
- Validointikäytännöt - Tapahtumien validointi ja turvallisuus
- Token-2022-laajennusten esto - Riskialttiiden Token-2022-laajennusten esto
- Maksajapolitiikka - Maksajan lompakon rajoitukset
- Hintamääritys - Transaktioiden maksumallien hinnoittelu
- Suorituskyvyn seuranta - Metriikoiden kerääminen ja seuranta
- Täydellinen esimerkki - Kokonainen tuotantovalmis määritys
Esimerkki kora.toml-tiedoston osioista:
[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
Koran ydinkäytännöt
[kora]-osio määrittää palvelimen ydintoiminnallisuuden:
[kora]rate_limit = 100payment_address = "YourPaymentAddressPubkey11111111111111111111" # Optional
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
rate_limit | Globaali nopeusrajoitus (pyyntöä sekunnissa) kaikille asiakkaille | ✅ | numero |
payment_address | Valinnainen maksun vastaanotto-osoite maksutokeneille (oletuksena allekirjoittaja-osoite, jos ei määritetty) | ❌ | b58-koodattu merkkijono |
Koran autentikointi
[kora.auth]-osio määrittää Kora-palvelimen autentikoinnin:
[kora.auth]api_key = "kora_live_sk_1234567890abcdef"hmac_secret = "kora_hmac_your-strong-hmac-secret-key-here"max_timestamp_age = 300
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
api_key | API-avain yksinkertaiseen autentikointiin | ❌ | merkkijono |
hmac_secret | HMAC-salaisuus allekirjoituspohjaiseen autentikointiin (vähintään 32 merkkiä) | ❌ | merkkijono |
max_timestamp_age | HMAC-aikaleiman maksimi-ikä sekunteina | ❌ (oletus: 300) | numero |
Huomautus:
api_keyjahmac_secretasettavat globaalin autentikointikäytännön kaikille asiakkaille. Yksityiskohtaisia autentikointiasetuksia varten katso Autentikointiopas.
Koran välimuisti (valinnainen)
[kora.cache]-osio määrittää Redis-pohjaisen välimuistin Solana RPC-kutsuille.
Tämä voi parantaa suorituskykyä merkittävästi vähentämällä tarpeetonta
tilitietojen hakemista:
[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)
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
enabled | Ota Redis-välimuisti käyttöön RPC-kutsuille | ❌ (oletus: false) | boolean |
url | Redis-yhteyden URL (pakollinen kun käytössä) | ✅ | merkkijono |
default_ttl | Välimuistiin tallennettujen merkintöjen oletus-TTL sekunteina | ❌ (oletus: 300) | numero |
account_ttl | Tilitietojen välimuistin TTL sekunteina | ❌ (oletus: 60) | numero |
Huomautus: Kun välimuisti on käytössä, Redis-instanssin on oltava saatavilla määritetyssä URL-osoitteessa. Välimuisti palaa sujuvasti suoriin RPC-kutsuihin, jos Redis ei ole käytettävissä.
Koran käyttörajoitukset (valinnainen)
[kora.usage_limit]-osio määrittää lompakkokohtaiset transaktiorajoitukset
väärinkäytön estämiseksi ja käyttäjien tasapuolisen käytön varmistamiseksi. Tätä
voidaan käyttää myös palkinto-ohjelmien luomiseen käyttäjien transaktiomaksujen
subventoimiseksi tiettyyn rajaan asti.
Tärkeää: Tällä hetkellä ainoa Koran tukema käyttörajoituksen muoto on pysyvä rajoitus. Kun lompakko saavuttaa transaktiorajansa, sitä ei voida nollata ja käyttäjä ei voi enää lähettää lisää transaktioita samalla lompakolla. Tämä rajoitus säilyy, kunnes se poistetaan manuaalisesti Redisistä tai Redis-tiedot nollataan.
Huomautus: Tämä ominaisuus vaatii Redisin, kun se on käytössä useissa Kora- instansseissa:
[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
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
enabled | Ota käyttöön lompakkokohtainen transaktiorajoitus | ❌ (oletus: false) | boolean |
cache_url | Redis-yhteysURL jaettuun käytön seurantaan | ❌ | string |
max_transactions | Transaktioiden enimmäismäärä per lompakko (0 = rajoittamaton) | ❌ (oletus: 100) | number |
fallback_if_unavailable | Salli transaktiot, jos Redis ei ole käytettävissä | ❌ (oletus: true) | boolean |
Huomautus: Käyttörajoja seurataan lompakon osoitteittain automaattisella TTL-pohjaisella vanhentumisella. Kun
fallback_if_unavailableon true, järjestelmä sallii transaktioiden jatkamisen, jos Redis on tilapäisesti poissa käytöstä, estäen palvelun keskeytyksen. Asettamallamax_transactionsarvoon 0 sallitaan rajoittamaton määrä transaktioita.
Kora-aktivoidut menetelmät (valinnainen)
[kora.enabled_methods]-osio määrittää, mitkä RPC-menetelmät ovat käytössä.
Tämä osio on valinnainen ja oletusarvoisesti kaikki menetelmät ovat käytössä.
Jokainen menetelmä voidaan ottaa käyttöön tai poistaa käytöstä asettamalla
arvoksi true tai 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
| Asetus | Menetelmän kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
liveness | Terveystarkistuspäätetapahtumat | ✅ | boolean |
estimate_transaction_fee | Arvioi transaktion maksun | ✅ | boolean |
get_supported_tokens | Listaa hyväksytyt tokenit | ✅ | boolean |
sign_transaction | Allekirjoita transaktio lähettämättä sitä verkkoon | ✅ | boolean |
sign_and_send_transaction | Allekirjoita transaktio ja lähetä se verkkoon | ✅ | boolean |
transfer_transaction | Käsittele token-siirtoja | ✅ | boolean |
get_blockhash | Hae viimeaikainen lohkotiiviste | ✅ | boolean |
get_config | Palauta Kora-palvelimen kokoonpano | ✅ | boolean |
Huomautus: jos tämä osio sisällytetään
kora.toml-tiedostoosi, kaikki menetelmät on asetettava nimenomaisesti arvoontruetaifalse.
Validointikäytännöt
[validation]-osio määrittää Solana-liittyvät turvallisuussäännöt ja
transaktiorajat:
[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",]
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
max_allowed_lamports | Asettamalla enimmäismäärä lamportteja transaktiota kohden rajoitetaan Kora-solmun altistumista yksittäiselle transaktiolle. | ✅ | number |
max_signatures | Solanan perusmaksut ovat funktio transaktion allekirjoitusten määrästä, joten enimmäismäärän asettaminen allekirjoituksille transaktiota kohden on hyvä tapa estää käyttäjiä käyttämästä liikaa SOL:ia yksittäiseen transaktioon. | ✅ | number |
price_source | Oraakkeli token-hintatiedoille. Huomautus: Kun asetettu arvoon "Jupiter", JUPITER_API_KEY-ympäristömuuttuja on pakollinen. Palvelin ei käynnisty ilman sitä. | ✅ | "Jupiter" tai "Mock" |
allow_durable_transactions | Salli kestävät nonce-transaktiot. Katso Turvallisuusnäkökohdat alla. | ❌ (oletus: false) | boolean |
allowed_programs | Solana-ohjelmat, joiden kanssa transaktiot voivat olla vuorovaikutuksessa | ✅ | Array of b58-encoded string |
allowed_tokens | Token-mintit, joita voidaan käyttää transaktioissa | ✅ | Array of b58-encoded string |
allowed_spl_paid_tokens | SPL-tokenit, jotka hyväksytään maksuvälineiksi transaktiomaksuille | ✅ | Array of b58-encoded string |
disallowed_accounts | Tilit, jotka on nimenomaisesti estetty transaktioista | ✅ | Array of b58-encoded string |
Huomautus: Tyhjät taulukot ovat sallittuja, mutta sinun on määritettävä vähintään yksi sallittu
allowed_programs,allowed_tokens,allowed_spl_paid_tokens, jotta Kora-node voi käsitellä transaktioita. Sinun on määritettävä System Program tai Token Program, jotta Kora-node voi käsitellä siirtoja. Yleisten käskytyyppien käyttöönottamiseksi (esim. Compute Budget, Address Lookup Table) sinun on määritettävä Compute Budget Program tai Address Lookup Table Program jne.
Kestävien transaktioiden turvallisuus
TURVALLISUUSVAROITUS: Kestävät nonce-transaktiot mahdollistavat allekirjoitettujen transaktioiden säilyttämisen määräämättömän ajan ja niiden lähettämisen myöhemmin. Tätä voitaisiin käyttää taloudellisena hyökkäysvektorina, jossa joku voisi hankkia allekirjoitetun transaktion ja odottaa sen lähettämistä, kunnes markkinaolosuhteet ovat heille suotuisat (esim. kun SOL:n arvo on laskenut tai maksutokenin arvo on noussut).
Oletusarvoisesti allow_durable_transactions on asetettu arvoon false
estääkseen kaikki kestävät nonce-transaktiot. Ota tämä käyttöön vain, jos
sovelluksesi vaatii nimenomaisesti kestäviä transaktioita ja ymmärrät riskit.
Jos sinun on otettava kestävät transaktiot käyttöön, harkitse:
- Autentikoinnin käyttämistä API-pääsyn rajoittamiseen
- Lisävalidoinnin toteuttamista ketjun ulkopuolella
- Epätavallisten transaktiomallien seurantaa
- Allekirjoittajatilin saldojen seurantaa ja rajoittamista
- Allekirjoittaja-avainten säännöllistä vaihtamista
Lue lisää kestävistä nonce-transaktioista Solana-dokumentaatiosta.
Token-2022-laajennusten estäminen
[validation.token2022]-osio mahdollistaa tiettyjen Token-2022-laajennusten
estämisen parannetun turvallisuuden saavuttamiseksi. Kaikki laajennukset ovat
oletusarvoisesti käytössä. Voit estää tiettyjä laajennuksia lisäämällä ne
blocked_mint_extensions- tai blocked_account_extensions-taulukkoon:
[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]
Saatavilla olevat Mint-laajennukset
| Laajennuksen nimi | Kuvaus |
|---|---|
confidential_transfer_mint | Luottamuksellisen siirron konfiguraatio mintille |
confidential_mint_burn | Luottamuksellisen mintin ja polton konfiguraatio |
transfer_fee_config | Siirtomaksun konfiguraatio |
mint_close_authority | Auktoriteetti, jolla on oikeus sulkea mint |
interest_bearing_config | Korkoa tuottavan tokenin konfiguraatio |
non_transferable | Tekee tokeneista ei-siirrettäviä |
permanent_delegate | Pysyvä delegaatti mintille |
transfer_hook | Mukautettu siirron koukkuohjelma |
pausable | Keskeytettävän tokenin konfiguraatio |
Saatavilla olevat tililaajennukset
| Laajennuksen nimi | Kuvaus |
|---|---|
confidential_transfer_account | Luottamuksellisen siirron tila tilille |
non_transferable_account | Ei-siirrettävä token-tili |
transfer_hook_account | Siirron koukkutila tilille |
pausable_account | Keskeytettävän tokenin tilin tila |
memo_transfer | Vaatii muistion siirtoja varten |
cpi_guard | Estää tietyt CPI-kutsut |
immutable_owner | Tilin omistajaa ei voi muuttaa |
default_account_state | Oletustila uusille tileille |
transfer_hook
Tietoturvanäkökohdat
PermanentDelegate-laajennus - Tokenit, joissa on tämä laajennus, antavat delegaatille mahdollisuuden siirtää/polttaa tokeneita milloin tahansa ilman omistajan hyväksyntää. Tämä luo merkittäviä riskejä Kora-solmuoperaattorille, koska maksuvarat voidaan takavarikoida maksun jälkeen.
- Harkitse "permanent_delegate"-arvon lisäämistä
blocked_mint_extensions:hen [validation.token2022]-osiossa, ellei sitä nimenomaisesti tarvita käyttötapauksessasi. - Vältä käyttämästä maksutokeneita, joissa on
permanent_delegate-laajennus.
Maksajan käytäntö
[validation.fee_payer_policy]-osio tarjoaa yksityiskohtaisen hallinnan siitä,
mitä toimintoja Kora-solmusi maksajalompakko voi suorittaa. Käytäntö on
järjestetty ohjelmatyypin mukaan (System Program, Token Program, Token-2022) ja
kattaa kaikki eri käskytyypit. Tämä estää odottamattoman käyttäytymisen
käyttäjien transaktioissa, jotka hyödyntävät Kora-solmuasi allekirjoittajana.
Esimerkiksi jos spl_token.allow_transfer on asetettu arvoon false,
Kora-solmu ei allekirjoita transaktioita, jotka sisältävät SPL-tokenisiirron,
jossa Kora-solmun maksaja on siirron valtuuttaja.
[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 -käskyt
| Asetus | Kuvaus | Oletusarvo | Tyyppi |
|---|---|---|---|
allow_transfer | Salli maksaja lähettäjänä Transfer/TransferWithSeed-käskyissä | false | boolean |
allow_assign | Salli maksaja valtuuttajana Assign/AssignWithSeed-käskyissä | false | boolean |
allow_create_account | Salli maksaja rahoitusmaksajana CreateAccount/CreateAccountWithSeed-käskyissä | false | boolean |
allow_allocate | Salli maksaja tilin omistajana Allocate/AllocateWithSeed-käskyissä | false | boolean |
nonce.allow_initialize | Salli maksajan asettaminen nonce-valtuuttajaksi InitializeNonceAccount-käskyssä | false | boolean |
nonce.allow_advance | Salli maksaja valtuuttajana AdvanceNonceAccount-käskyssä | false | boolean |
nonce.allow_authorize | Salli maksaja nykyisenä valtuuttajana AuthorizeNonceAccount-käskyssä | false | boolean |
nonce.allow_withdraw | Salli maksaja valtuuttajana WithdrawNonceAccount-käskyssä | false | boolean |
Token Program -käskyt
| Asetus | Kuvaus | Oletusarvo | Tyyppi |
|---|---|---|---|
allow_transfer | Salli maksaja omistajana Transfer/TransferChecked-käskyissä | false | boolean |
allow_burn | Salli maksaja omistajana Burn/BurnChecked-käskyissä | false | boolean |
allow_close_account | Salli maksaja omistajana CloseAccount-käskyissä | false | boolean |
allow_approve | Salli maksaja omistajana Approve/ApproveChecked-käskyissä | false | boolean |
allow_revoke | Salli maksaja omistajana Revoke-käskyissä | false | boolean |
allow_set_authority | Salli maksaja nykyisenä valtuuttajana SetAuthority-käskyissä | false | boolean |
allow_mint_to | Salli maksaja mint-valtuuttajana MintTo/MintToChecked-käskyissä | false | boolean |
allow_initialize_mint | Salli maksaja mint-valtuuttajana InitializeMint/InitializeMint2-käskyissä | false | boolean |
allow_initialize_account | Salli maksaja omistajana InitializeAccount/InitializeAccount3-käskyissä | false | boolean |
allow_initialize_multisig | Salli maksaja allekirjoittajana InitializeMultisig/InitializeMultisig2-käskyissä | false | boolean |
allow_freeze_account | Salli maksaja jäädytysvaltuuttajana FreezeAccount-käskyissä | false | boolean |
allow_thaw_account | Salli maksaja jäädytysvaltuuttajana ThawAccount-käskyissä | false | boolean |
Token-2022 tukee samaa käskyjoukko kuin SPL Token identtisillä
konfigurointivaihtoehdoilla ([validation.fee_payer_policy.token_2022]
-osiossa).
Turvallisuusnäkökohdat
TURVALLISUUSVAROITUS: Turvallisuussyistä on suositeltavaa asettaa kaikki
nämä arvoon false (oletus) ja ottaa käyttöön vain tarvittaessa. Tämä estää
ei-toivotun toiminnan, kuten käyttäjien tyhjentämästä maksutilin varoja tai
polttamasta tokeneita maksutililtäsi. Tämä estää:
- Tilin tyhjentämisen: Käyttäjät siirtämästä SOL-tokeneita tai muita tokeneita maksutililtäsi
- Valtuutuksen kaappaamisen: Käyttäjät muuttamasta valtuuksia tileillä, jotka maksutilisi omistaa
- Luvattoman lyönnin: Käyttäjät lyömästä tokeneita, jos maksutililläsi on lyöntivaltuudet
- Tilin manipuloinnin: Käyttäjät jäädyttämästä, sulkemasta tai muokkaamasta tilejä, joita maksutilisi hallitsee
Suositeltu käytäntö: Aloita kaikki oikeudet poiskytkettynä ja ota käyttöön vain käyttötapauksesi vaatima vähimmäismäärä.
Hintakonfiguraatio (valinnainen)
[validation.price]-osio määrittelee, miten transaktiomaksut lasketaan. Kolme
hinnoittelumallia on saatavilla:
- Marginaalihinnoittelu (oletus) - Lisää prosentuaalinen marginaali todellisten verkon maksujen päälle (oletusmarginaali on 0.0)
- Kiinteä hinnoittelu - Veloita kiinteä summa tietyssä tokenissa riippumatta verkon maksuista
- Ilmainen hinnoittelu - Sponsoroi kaikki transaktiomaksut (ei veloitusta käyttäjiltä)
| Vaihtoehto | Kuvaus | Vaaditaan | Tyyppi |
|---|---|---|---|
type | Käytettävä hinnoittelumalli | ✅ | "margin", "fixed" tai "free" |
margin | Verkon maksuihin lisättävä marginaaliprosentti | (kun type on "margin") | numero |
amount | Veloitettava kiinteä summa tokenin perusyksiköissä | (kun type on "fixed") | numero |
token | Token-mint, jossa veloitetaan | (kun type on "fixed") | b58-koodattu merkkijono |
Marginaalihinnoittelu
Lisää prosenttiperusteinen marginaali todellisten verkkomaksujen päälle:
[validation.price]type = "margin"margin = 0.1 # 10% margin (0.1 = 10%, 1.0 = 100%)
Kiinteä hinnoittelu
TIETOTURVAVAROITUS: Kiinteä hinnoittelu EI sisällytä maksajan ulosvirtausta veloitettuun määrään. Tämä voi mahdollistaa käyttäjien tyhjentää maksajatilin, jos sitä ei ole asianmukaisesti konfiguroitu.
Veloita kiinteä määrä tietyssä tokenissa riippumatta verkkomaksuista:
[validation.price]type = "fixed"amount = 1000000 # Amount in token's base unitstoken = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" # USDC mint
Ilmaiset transaktiot
Sponsoroi kaikki transaktiomaksut (ei veloitusta käyttäjiltä):
[validation.price]type = "free"
Turvatoimet kiinteää/ilmaista hinnoittelua käytettäessä
-
Poista käytöstä kaikki siirto- ja rahatoiminnot - Estä maksajan käyttö lähteenä siirroissa:
[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 -
Ota käyttöön autentikointi - Käytä autentikointia väärinkäytön estämiseksi:
[kora.auth]api_key = "your-secure-api-key"# orhmac_secret = "your-minimum-32-character-hmac-secret" -
Aseta konservatiiviset rajat - Minimoi altistuminen:
[validation]max_allowed_lamports = 1000000 # 0.001 SOL maximum
VAROITUS: Erityisen vaaralliset toiminnot käytettäessä kiinteää/ilmaista hinnoittelua:
allow_mint_to: Voi mahdollistaa rajattoman tokenien luonnin, jos maksajalla on lyöntioikeusallow_set_authority: Voi siirtää kriittisten tilien hallinnan hyökkääjilleallow_transfer: Mahdollistaa maksajan token-saldojen suoran tyhjentämisenallow_close_account: Palauttaa vuokran hyökkääjän hallitsemille tileille
Suorituskyvyn seuranta (valinnainen)
[metrics]-osio konfiguroi mittareiden keruun ja seurannan. Tämä osio on
valinnainen, ja oletuksena mittarit on poistettu käytöstä.
[metrics]enabled = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
enabled | Ota käyttöön mittareiden keruu | ✅ | boolean |
endpoint | Mukautettu mittarien päätepisteiden polku | ✅ | string |
port | Mittarien päätepisteen portti | ✅ | number |
scrape_interval | Prometheus-haun frekvenssi (sekunteina) | ✅ | number |
Maksajatilin saldon seuranta
[metrics.fee_payer_balance]-osio määrittää maksajatilin SOL-saldon
automaattisen seurannan:
| Asetus | Kuvaus | Pakollinen | Tyyppi |
|---|---|---|---|
enabled | Ota käyttöön maksajatilin saldon seuranta | ❌ (oletus: false) | boolean |
expiry_seconds | Taustaseurannan väli sekunteina | ❌ (oletus: 30) | number |
Kun tämä on käytössä, Kora seuraa automaattisesti maksajatilin SOL-saldoa ja
tarjoaa sen fee_payer_balance_lamports Prometheus-mittarina. Tämä auttaa
kapasiteetin suunnittelussa ja alhaisen saldon hälytyksessä.
http://localhost:{port}/{metrics-endpoint}
Täydellinen esimerkki
Tässä tuotantovalmis määritys turvallisuuden parhaine käytäntöineen:
# 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
Määritysten validointi
Kora validoi määritykset käynnistyksen yhteydessä. Jos haluat validoida määritykset käynnistämättä palvelinta, voit käyttää määritysten validointikomentoa:
kora --config kora.toml config validate # or validate-with-rpc
Voit myös suorittaa validate-with-rpc-komennon validoidaksesi määritykset
RPC-palvelimen kanssa (tämä validointitarkistus on hieman hitaampi, mutta tekee
perusteellisempia tilintarkistuksia)
Palvelimen käynnistäminen
Kun olet määrittänyt kora.toml-tiedoston, voit käynnistää Kora-palvelimen:
kora --config path/to/kora.toml rpc start --no-load-signer # --other-rpc-flags-here
--no-load-signer-lippu alustaa palvelimen lataamatta yhtään allekirjoittajaa.
Tämä on hyödyllistä määritysten testaamisessa. Allekirjoittajien lataamiseksi
sinun tulee määrittää signers.toml-tiedosto. Minimaalinen määritys yhdellä
allekirjoittajalla näyttäisi tältä:
[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"
Tämä lataa yhden allekirjoittajan MY_SIGNER_PRIVATE_KEY-ympäristömuuttujasta.
Tämän jälkeen voit käynnistää palvelimen komennolla:
kora --config path/to/kora.toml rpc start --signers-config path/to/signers.toml
Lisätietoja ja edistyneitä allekirjoittajan asetuksia varten, katso Allekirjoittajien opas.
Parhaat käytännöt
- Aloita rajoittavasti: Aloita tiukoilla rajoituksilla ja laajenna asteittain
- Seuraa käyttöä: Seuraa, mitä ohjelmia ja rahakkeita todella käytetään
- Säännölliset päivitykset: Tarkista ja päivitä estolistat ja rajoitukset
- Testaa muutokset: Vahvista asetusmuutokset ensin testausympäristössä
- Versiointi: Pidä muutoslokia asetusmuutoksistasi
Tarvitsetko apua?
- Tarkista Todennusopas todennuksen määrittämiseen
- Tarkista Allekirjoittajien opas allekirjoittajan määrittämiseen
- Tarkista Operaattoriopas saadaksesi lisätietoja Kora-noodin ajamisesta
- Vieraile Solana Stack Exchange
-sivustolla
kora-tägillä - Ilmoita ongelmista GitHubissa
Is this page helpful?