Määritys

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:

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 = 100
payment_address = "YourPaymentAddressPubkey11111111111111111111" # Optional
AsetusKuvausPakollinenTyyppi
rate_limitGlobaali nopeusrajoitus (pyyntöä sekunnissa) kaikille asiakkaillenumero
payment_addressValinnainen 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
AsetusKuvausPakollinenTyyppi
api_keyAPI-avain yksinkertaiseen autentikointiinmerkkijono
hmac_secretHMAC-salaisuus allekirjoituspohjaiseen autentikointiin (vähintään 32 merkkiä)merkkijono
max_timestamp_ageHMAC-aikaleiman maksimi-ikä sekunteina❌ (oletus: 300)numero

Huomautus: api_key ja hmac_secret asettavat 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 caching
url = "redis://localhost:6379" # Redis connection URL
default_ttl = 300 # Default TTL in seconds (5 minutes)
account_ttl = 60 # Account data TTL in seconds (1 minute)
AsetusKuvausPakollinenTyyppi
enabledOta Redis-välimuisti käyttöön RPC-kutsuille❌ (oletus: false)boolean
urlRedis-yhteyden URL (pakollinen kun käytössä)merkkijono
default_ttlVälimuistiin tallennettujen merkintöjen oletus-TTL sekunteina❌ (oletus: 300)numero
account_ttlTilitietojen 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 limiting
cache_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
AsetusKuvausPakollinenTyyppi
enabledOta käyttöön lompakkokohtainen transaktiorajoitus❌ (oletus: false)boolean
cache_urlRedis-yhteysURL jaettuun käytön seurantaanstring
max_transactionsTransaktioiden enimmäismäärä per lompakko (0 = rajoittamaton)❌ (oletus: 100)number
fallback_if_unavailableSalli 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_unavailable on true, järjestelmä sallii transaktioiden jatkamisen, jos Redis on tilapäisesti poissa käytöstä, estäen palvelun keskeytyksen. Asettamalla max_transactions arvoon 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 = true
estimate_transaction_fee = true
get_supported_tokens = true
sign_transaction = false
sign_and_send_transaction = false
transfer_transaction = false
get_blockhash = true
get_config = true
get_payer_signer = true
AsetusMenetelmän kuvausPakollinenTyyppi
livenessTerveystarkistuspäätetapahtumatboolean
estimate_transaction_feeArvioi transaktion maksunboolean
get_supported_tokensListaa hyväksytyt tokenitboolean
sign_transactionAllekirjoita transaktio lähettämättä sitä verkkoonboolean
sign_and_send_transactionAllekirjoita transaktio ja lähetä se verkkoonboolean
transfer_transactionKäsittele token-siirtojaboolean
get_blockhashHae viimeaikainen lohkotiivisteboolean
get_configPalauta Kora-palvelimen kokoonpanoboolean

Huomautus: jos tämä osio sisällytetään kora.toml-tiedostoosi, kaikki menetelmät on asetettava nimenomaisesti arvoon true tai false.

Validointikäytännöt

[validation]-osio määrittää Solana-liittyvät turvallisuussäännöt ja transaktiorajat:

[validation]
max_allowed_lamports = 1000000 # 0.001 SOL
max_signatures = 10
price_source = "Jupiter"
allow_durable_transactions = false # Block durable nonce transactions
allowed_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",
]
AsetusKuvausPakollinenTyyppi
max_allowed_lamportsAsettamalla enimmäismäärä lamportteja transaktiota kohden rajoitetaan Kora-solmun altistumista yksittäiselle transaktiolle.number
max_signaturesSolanan 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_sourceOraakkeli 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_transactionsSalli kestävät nonce-transaktiot. Katso Turvallisuusnäkökohdat alla.❌ (oletus: false)boolean
allowed_programsSolana-ohjelmat, joiden kanssa transaktiot voivat olla vuorovaikutuksessaArray of b58-encoded string
allowed_tokensToken-mintit, joita voidaan käyttää transaktioissaArray of b58-encoded string
allowed_spl_paid_tokensSPL-tokenit, jotka hyväksytään maksuvälineiksi transaktiomaksuilleArray of b58-encoded string
disallowed_accountsTilit, jotka on nimenomaisesti estetty transaktioistaArray 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 nimiKuvaus
confidential_transfer_mintLuottamuksellisen siirron konfiguraatio mintille
confidential_mint_burnLuottamuksellisen mintin ja polton konfiguraatio
transfer_fee_configSiirtomaksun konfiguraatio
mint_close_authorityAuktoriteetti, jolla on oikeus sulkea mint
interest_bearing_configKorkoa tuottavan tokenin konfiguraatio
non_transferableTekee tokeneista ei-siirrettäviä
permanent_delegatePysyvä delegaatti mintille
transfer_hookMukautettu siirron koukkuohjelma
pausableKeskeytettävän tokenin konfiguraatio

Saatavilla olevat tililaajennukset

Laajennuksen nimiKuvaus
confidential_transfer_accountLuottamuksellisen siirron tila tilille
non_transferable_accountEi-siirrettävä token-tili
transfer_hook_accountSiirron koukkutila tilille
pausable_accountKeskeytettävän tokenin tilin tila
memo_transferVaatii muistion siirtoja varten
cpi_guardEstää tietyt CPI-kutsut
immutable_ownerTilin omistajaa ei voi muuttaa
default_account_stateOletustila 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/TransferWithSeed
allow_assign = false # System Assign/AssignWithSeed
allow_create_account = false # System CreateAccount/CreateAccountWithSeed
allow_allocate = false # System Allocate/AllocateWithSeed
[validation.fee_payer_policy.system.nonce]
allow_initialize = false # InitializeNonceAccount
allow_advance = false # AdvanceNonceAccount
allow_authorize = false # AuthorizeNonceAccount
allow_withdraw = false # WithdrawNonceAccount
[validation.fee_payer_policy.spl_token]
allow_transfer = false # Transfer/TransferChecked
allow_burn = false # Burn/BurnChecked
allow_close_account = false # CloseAccount
allow_approve = false # Approve/ApproveChecked
allow_revoke = false # Revoke
allow_set_authority = false # SetAuthority
allow_mint_to = false # MintTo/MintToChecked
allow_initialize_mint = false # InitializeMint/InitializeMint2
allow_initialize_account = false # InitializeAccount/InitializeAccount3
allow_initialize_multisig = false # InitializeMultisig/InitializeMultisig2
allow_freeze_account = false # FreezeAccount
allow_thaw_account = false # ThawAccount
[validation.fee_payer_policy.token_2022]
allow_transfer = false # Transfer/TransferChecked
allow_burn = false # Burn/BurnChecked
allow_close_account = false # CloseAccount
allow_approve = false # Approve/ApproveChecked
allow_revoke = false # Revoke
allow_set_authority = false # SetAuthority
allow_mint_to = false # MintTo/MintToChecked
allow_initialize_mint = false # InitializeMint/InitializeMint2
allow_initialize_account = false # InitializeAccount/InitializeAccount3
allow_initialize_multisig = false # InitializeMultisig/InitializeMultisig2
allow_freeze_account = false # FreezeAccount
allow_thaw_account = false # ThawAccount

System Program -käskyt

AsetusKuvausOletusarvoTyyppi
allow_transferSalli maksaja lähettäjänä Transfer/TransferWithSeed-käskyissäfalseboolean
allow_assignSalli maksaja valtuuttajana Assign/AssignWithSeed-käskyissäfalseboolean
allow_create_accountSalli maksaja rahoitusmaksajana CreateAccount/CreateAccountWithSeed-käskyissäfalseboolean
allow_allocateSalli maksaja tilin omistajana Allocate/AllocateWithSeed-käskyissäfalseboolean
nonce.allow_initializeSalli maksajan asettaminen nonce-valtuuttajaksi InitializeNonceAccount-käskyssäfalseboolean
nonce.allow_advanceSalli maksaja valtuuttajana AdvanceNonceAccount-käskyssäfalseboolean
nonce.allow_authorizeSalli maksaja nykyisenä valtuuttajana AuthorizeNonceAccount-käskyssäfalseboolean
nonce.allow_withdrawSalli maksaja valtuuttajana WithdrawNonceAccount-käskyssäfalseboolean

Token Program -käskyt

AsetusKuvausOletusarvoTyyppi
allow_transferSalli maksaja omistajana Transfer/TransferChecked-käskyissäfalseboolean
allow_burnSalli maksaja omistajana Burn/BurnChecked-käskyissäfalseboolean
allow_close_accountSalli maksaja omistajana CloseAccount-käskyissäfalseboolean
allow_approveSalli maksaja omistajana Approve/ApproveChecked-käskyissäfalseboolean
allow_revokeSalli maksaja omistajana Revoke-käskyissäfalseboolean
allow_set_authoritySalli maksaja nykyisenä valtuuttajana SetAuthority-käskyissäfalseboolean
allow_mint_toSalli maksaja mint-valtuuttajana MintTo/MintToChecked-käskyissäfalseboolean
allow_initialize_mintSalli maksaja mint-valtuuttajana InitializeMint/InitializeMint2-käskyissäfalseboolean
allow_initialize_accountSalli maksaja omistajana InitializeAccount/InitializeAccount3-käskyissäfalseboolean
allow_initialize_multisigSalli maksaja allekirjoittajana InitializeMultisig/InitializeMultisig2-käskyissäfalseboolean
allow_freeze_accountSalli maksaja jäädytysvaltuuttajana FreezeAccount-käskyissäfalseboolean
allow_thaw_accountSalli maksaja jäädytysvaltuuttajana ThawAccount-käskyissäfalseboolean

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ä)
VaihtoehtoKuvausVaaditaanTyyppi
typeKäytettävä hinnoittelumalli"margin", "fixed" tai "free"
marginVerkon maksuihin lisättävä marginaaliprosentti(kun type on "margin")numero
amountVeloitettava kiinteä summa tokenin perusyksiköissä(kun type on "fixed")numero
tokenToken-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 units
token = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" # USDC mint

Ilmaiset transaktiot

Sponsoroi kaikki transaktiomaksut (ei veloitusta käyttäjiltä):

[validation.price]
type = "free"

Turvatoimet kiinteää/ilmaista hinnoittelua käytettäessä

  1. 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 transfers
    allow_create_account = false # Block account creation with lamports
    allow_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 transfers
    allow_burn = false # Block SPL token burning
    allow_close_account = false # Block SPL token account closures (returns rent)
    allow_mint_to = false # Block unauthorized SPL token minting
    allow_initialize_account = false # Block account initialization
  2. Ota käyttöön autentikointi - Käytä autentikointia väärinkäytön estämiseksi:

    [kora.auth]
    api_key = "your-secure-api-key"
    # or
    hmac_secret = "your-minimum-32-character-hmac-secret"
  3. 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öntioikeus
  • allow_set_authority: Voi siirtää kriittisten tilien hallinnan hyökkääjille
  • allow_transfer: Mahdollistaa maksajan token-saldojen suoran tyhjentämisen
  • allow_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 = true
endpoint = "/metrics"
port = 8080
scrape_interval = 60
[metrics.fee_payer_balance]
enabled = true
expiry_seconds = 30
AsetusKuvausPakollinenTyyppi
enabledOta käyttöön mittareiden keruuboolean
endpointMukautettu mittarien päätepisteiden polkustring
portMittarien päätepisteen porttinumber
scrape_intervalPrometheus-haun frekvenssi (sekunteina)number

Maksajatilin saldon seuranta

[metrics.fee_payer_balance]-osio määrittää maksajatilin SOL-saldon automaattisen seurannan:

AsetusKuvausPakollinenTyyppi
enabledOta käyttöön maksajatilin saldon seuranta❌ (oletus: false)boolean
expiry_secondsTaustaseurannan 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}

→ Koran seurannan viiteopas

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 globally
rate_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 = true
url = "redis://localhost:6379"
default_ttl = 300 # 5 minutes
account_ttl = 60 # 1 minute
# Usage limiting (optional, prevents abuse)
[kora.usage_limit]
enabled = true
cache_url = "redis://localhost:6379" # Can share same Redis instance as cache
max_transactions = 100 # Per-wallet limit
fallback_if_unavailable = true # Don't block if Redis is down
# Disable unnecessary RPC methods for security
[kora.enabled_methods]
liveness = true
estimate_transaction_fee = true
get_supported_tokens = true
sign_transaction = false
sign_and_send_transaction = false
transfer_transaction = false
get_blockhash = true
get_config = true
get_payer_signer = true
[validation]
# Use production oracle
price_source = "Jupiter"
# Conservative transaction limits
max_allowed_lamports = 1000000 # 0.001 SOL max
max_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 allowlist
allowed_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 addresses
disallowed_accounts = [
"BadActor1111111111111111111111111111111111111111",
]
# Restrictive fee payer policy (recommended for production)
[validation.fee_payer_policy.system]
allow_transfer = false # Block SOL transfers from fee payer
allow_assign = false # Block account ownership changes
allow_create_account = false # Block creating accounts with fee payer funds
allow_allocate = false # Block allocating space for fee payer accounts
[validation.fee_payer_policy.system.nonce]
allow_initialize = false # Block nonce account initialization
allow_advance = false # Block nonce advancement
allow_authorize = false # Block nonce authority changes
allow_withdraw = false # Block nonce withdrawals
[validation.fee_payer_policy.spl_token]
allow_transfer = false # Critical: Block SPL transfers
allow_burn = false # Block token burning
allow_close_account = false # Block account closures
allow_approve = false # Block token approvals
allow_revoke = false # Block delegate revocations
allow_set_authority = false # Block authority changes
allow_mint_to = false # Block minting operations
allow_initialize_mint = false # Block mint initialization
allow_initialize_account = false # Block account initialization
allow_initialize_multisig = false # Block multisig initialization
allow_freeze_account = false # Block account freezing
allow_thaw_account = false # Block account thawing
[validation.fee_payer_policy.token_2022]
allow_transfer = false # Critical: Block Token2022 transfers
allow_burn = false # Block token burning
allow_close_account = false # Block account closures
allow_approve = false # Block token approvals
allow_revoke = false # Block delegate revocations
allow_set_authority = false # Block authority changes
allow_mint_to = false # Block minting operations
allow_initialize_mint = false # Block mint initialization
allow_initialize_account = false # Block account initialization
allow_initialize_multisig = false # Block multisig initialization
allow_freeze_account = false # Block account freezing
allow_thaw_account = false # Block account thawing
# Token-2022 extension blocking
[validation.token2022]
# Block potentially risky mint extensions
blocked_mint_extensions = [
"transfer_hook", # Custom transfer logic
"pausable", # Can freeze transfers
"permanent_delegate", # Permanent control
]
# Block complex account extensions
blocked_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 = true
endpoint = "/metrics"
port = 8080
scrape_interval = 60
# Fee payer balance monitoring
[metrics.fee_payer_balance]
enabled = true
expiry_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, weighted
strategy = "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

  1. Aloita rajoittavasti: Aloita tiukoilla rajoituksilla ja laajenna asteittain
  2. Seuraa käyttöä: Seuraa, mitä ohjelmia ja rahakkeita todella käytetään
  3. Säännölliset päivitykset: Tarkista ja päivitä estolistat ja rajoitukset
  4. Testaa muutokset: Vahvista asetusmuutokset ensin testausympäristössä
  5. Versiointi: Pidä muutoslokia asetusmuutoksistasi

Tarvitsetko apua?

Is this page helpful?

Hallinnoi

© 2026 Solana Foundation.
Kaikki oikeudet pidätetään.
Yhdistä