Yapılandırma

Kora v2.2.0-beta kullanıyor musunuz? Yeni seçenekler için Beta Yapılandırması bölümüne bakın: Jito paketleri, Lighthouse koruması, reCAPTCHA ve kullanım limitleri.

Kora düğümünüz kullanıcılarınız için işlemleri imzalayacak, bu nedenle düğümü yalnızca iş gereksinimlerinizi karşılayan işlemleri imzalayacak şekilde yapılandırmanız önemlidir. Kora, düğümünüzü nasıl yapılandıracağınız konusunda size büyük esneklik sağlar, ancak yapılandırmanızın etkilerini anlamanız önemlidir. kora.toml, Kora yapılandırmanızın kontrol merkezidir. Bu belge, kora.toml yapılandırma dosyası aracılığıyla Kora ödeme yöneticisi düğümünüzü yapılandırmak için kapsamlı bir referans sağlar.

Genel Bakış

kora.toml dosyası, Kora düğümünüzün davranışının tüm yönlerini kontrol eder; bunlar arasında şunlar yer alır:

  • Hız sınırlama ve kimlik doğrulama
  • RPC metot erişilebilirliği
  • İşlem doğrulama kuralları
  • Ücret fiyatlandırma modelleri
  • Güvenlik politikaları
  • RPC metot erişilebilirliği
  • Ücret fiyatlandırma modelleri
  • Ödeme adresi yapılandırması
  • Performans izleme

Yapılandırma dosyanız, dağıtım dizininize yerleştirilmeli veya sunucuyu başlatırken --config bayrağı aracılığıyla belirtilmelidir.

Yapılandırma Bölümleri

kora.toml dosyası, her birinin kendi seçenek setine sahip bölümlere ayrılmıştır. Bu kılavuz, her bölümü adım adım ele alır ve mevcut seçenekleri açıklar:

Örnek kora.toml dosya bölümleri:

[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 Temel Politikaları

[kora] bölümü, temel sunucu davranışını yapılandırır:

[kora]
rate_limit = 100
payment_address = "YourPaymentAddressPubkey11111111111111111111" # Optional
SeçenekAçıklamaGerekliTür
rate_limitTüm istemciler genelinde global hız sınırı (saniye başına istek)sayı
payment_addressÖdeme tokenlarını almak için isteğe bağlı ödeme adresi (belirtilmezse imzalayan adres(ler)e varsayılan olur)b58 kodlu string

Kora Kimlik Doğrulama

[kora.auth] bölümü, Kora sunucusu için kimlik doğrulamayı yapılandırır:

[kora.auth]
api_key = "kora_live_sk_1234567890abcdef"
hmac_secret = "kora_hmac_your-strong-hmac-secret-key-here"
max_timestamp_age = 300
SeçenekAçıklamaGerekliTür
api_keyBasit kimlik doğrulama için API anahtarıstring
hmac_secretİmza tabanlı kimlik doğrulama için HMAC gizli anahtarı (min 32 karakter)string
max_timestamp_ageBir HMAC zaman damgasının saniye cinsinden maksimum yaşı❌ (varsayılan: 300)sayı

Not: api_key ve hmac_secret tüm istemciler için global bir kimlik doğrulama politikası belirler. Detaylı kimlik doğrulama kurulumu için Kimlik Doğrulama Kılavuzu bölümüne bakın.

Kora Önbellekleme (isteğe bağlı)

[kora.cache] bölümü, Solana RPC çağrıları için Redis tabanlı önbelleklemeyi yapılandırır. Bu, gereksiz hesap verisi çekişlerini azaltarak performansı önemli ölçüde artırabilir:

[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)
SeçenekAçıklamaGerekliTür
enabledRPC çağrıları için Redis önbelleklemeyi etkinleştir❌ (varsayılan: false)boolean
urlRedis bağlantı URL'si (etkinleştirildiğinde gerekli)string
default_ttlÖnbelleğe alınan girdiler için saniye cinsinden varsayılan TTL❌ (varsayılan: 300)sayı
account_ttlHesap verisi önbelleği için saniye cinsinden TTL❌ (varsayılan: 60)sayı

Not: Önbellekleme etkinleştirildiğinde, belirtilen URL'de bir Redis örneği mevcut olmalıdır. Redis kullanılamıyorsa önbellek sorunsuz bir şekilde doğrudan RPC çağrılarına geri döner.

Kora Kullanım Limitleri (isteğe bağlı)

[kora.usage_limit] bölümü, kötüye kullanımı önlemek ve kullanıcılarınız arasında adil kullanım sağlamak için cüzdan başına işlem sınırlaması yapılandırır. Bu, kullanıcıların işlem ücretlerini belirli bir limite kadar sübvanse etmek için ödül programları oluşturmak amacıyla da kullanılabilir.

Önemli: Şu anda Kora tarafından desteklenen tek kullanım sınırlama biçimi kalıcı limittir. Bir cüzdan işlem limitine ulaştığında, sıfırlanamaz ve kullanıcı aynı cüzdanı kullanarak daha fazla işlem gönderemez. Bu limit, Redis'ten manuel olarak temizlenene veya Redis verileri sıfırlanana kadar devam eder.

Not: Bu özellik, birden fazla Kora örneği arasında etkinleştirildiğinde Redis gerektirir:

[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
SeçenekAçıklamaGerekliTür
enabledCüzdan başına işlem sınırlamasını etkinleştir❌ (varsayılan: false)boolean
cache_urlPaylaşılan kullanım takibi için Redis bağlantı URL'sistring
max_transactionsCüzdan başına maksimum işlem sayısı (0 = sınırsız)❌ (varsayılan: 100)number
fallback_if_unavailableRedis kullanılamıyorsa işlemlere izin ver❌ (varsayılan: true)boolean

Not: Kullanım limitleri, otomatik TTL tabanlı süre sonu ile cüzdan adresi başına izlenir. fallback_if_unavailable true olduğunda, sistem Redis geçici olarak kullanılamıyorsa işlemlerin devam etmesine izin vererek hizmet kesintisini önler. max_transactions değerinin 0 olarak ayarlanması sınırsız işlem yapılmasına izin verir.

Kora Etkin Metodlar (isteğe bağlı)

[kora.enabled_methods] bölümü hangi RPC metodlarının etkinleştirileceğini kontrol eder. Bu bölüm isteğe bağlıdır ve varsayılan olarak tüm metodlar etkindir. Her metod true veya false değerine ayarlanarak etkinleştirilebilir veya devre dışı bırakılabilir:

[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
SeçenekMetod AçıklamasıGerekliTür
livenessSağlık kontrolü uç noktasıboolean
estimate_transaction_feeBir işlem için ücreti tahmin etboolean
get_supported_tokensKabul edilen tokenleri listeleboolean
sign_transactionAğa göndermeden bir işlem imzalaboolean
sign_and_send_transactionBir işlem imzala ve ağa gönderboolean
transfer_transactionToken transferlerini yönetboolean
get_blockhashSon blok hash'ini alboolean
get_configKora sunucu yapılandırmasını döndürboolean

Not: Bu bölüm kora.toml dosyanıza dahil edilirse, tüm metodların açıkça true veya false olarak ayarlanması gerekir.

Doğrulama Politikaları

[validation] bölümü Solana ile ilgili güvenlik kurallarını ve işlem limitlerini tanımlar:

[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",
]
SeçenekAçıklamaGerekliTür
max_allowed_lamportsİşlem başına maksimum lamport sayısı belirlemek, Kora düğümünün tek bir işleme maruz kalmasını sınırlar.number
max_signaturesSolana temel ücretleri bir işlemdeki imza sayısının bir fonksiyonudur, bu nedenle işlem başına maksimum imza sayısı belirlemek kullanıcıların tek bir işlemde çok fazla SOL harcamasını önlemenin iyi bir yoludur.number
price_sourceToken fiyat verisi için oracle. Not: "Jupiter" olarak ayarlandığında, JUPITER_API_KEY ortam değişkeni gereklidir. Sunucu bu olmadan başlatılamaz."Jupiter" veya "Mock"
allow_durable_transactionsDayanıklı nonce işlemlerine izin ver. Aşağıdaki Güvenlik Hususları bölümüne bakın.❌ (varsayılan: false)boolean
allowed_programsİşlemlerin etkileşimde bulunabileceği Solana programlarıb58-kodlu string dizisi
allowed_tokensİşlemlerde kullanılabilecek token mint'lerib58-kodlu string dizisi
allowed_spl_paid_tokensİşlem ücretleri için ödeme olarak kabul edilen SPL tokenlerib58-kodlu string dizisi
disallowed_accountsİşlemlerden açıkça engellenen hesaplarb58-kodlu string dizisi

Not: Boş dizilere izin verilir, ancak Kora düğümünün işlemleri işleyebilmesi için en az bir beyaz listeye alınmış allowed_programs, allowed_tokens, allowed_spl_paid_tokens belirtmeniz gerekir. Kora düğümünün transferleri işleyebilmesi için System Program veya Token Program belirtmeniz gerekir. Yaygın talimat türlerini etkinleştirmek için (örn. Compute Budget, Address Lookup Table), Compute Budget Program veya Address Lookup Table Program vb. belirtmeniz gerekir.

Dayanıklı İşlem Güvenliği

GÜVENLİK UYARISI: Dayanıklı nonce işlemleri, imzalanmış işlemlerin süresiz olarak tutulmasına ve daha sonra gönderilmesine olanak tanır. Bu, birinin imzalanmış bir işlemi elde edip piyasa koşulları kendileri için uygun olana kadar (örn. SOL'un değeri düştüğünde veya ödeme tokenının değeri arttığında) bekleyebileceği ekonomik bir saldırı vektörü olarak kullanılabilir.

Varsayılan olarak, tüm dayanıklı nonce işlemlerini engellemek için allow_durable_transactions, false olarak ayarlanmıştır. Bunu yalnızca uygulamanız özellikle dayanıklı işlemler gerektiriyorsa ve riskleri anlıyorsanız etkinleştirin.

Dayanıklı işlemleri etkinleştirmeniz gerekiyorsa, şunları göz önünde bulundurun:

  • API erişimini kısıtlamak için kimlik doğrulama kullanma
  • Ek zincir dışı doğrulama uygulama
  • Olağandışı işlem kalıplarını izleme
  • İmzalayan hesap bakiyelerini izleme ve sınırlama
  • İmzalayan anahtarlarını düzenli olarak değiştirme

Dayanıklı nonce işlemleri hakkında daha fazla bilgiyi Solana Dokümanları'nda öğrenin.

Token-2022 Uzantı Engelleme

[validation.token2022] bölümü, gelişmiş güvenlik için belirli Token-2022 uzantılarını engellemenize olanak tanır. Tüm uzantılar varsayılan olarak etkindir. Belirli uzantıları blocked_mint_extensions veya blocked_account_extensions dizilerine ekleyerek engelleyebilirsiniz:

[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
]

Mevcut Mint Uzantıları

Uzantı AdıAçıklama
confidential_transfer_mintMint için gizli transfer yapılandırması
confidential_mint_burnGizli mint ve burn yapılandırması
transfer_fee_configTransfer ücreti yapılandırması
mint_close_authorityMint'i kapatmasına izin verilen yetkili
interest_bearing_configFaiz getiren token yapılandırması
non_transferableToken'ları transfer edilemez yapar
permanent_delegateMint için kalıcı delege
transfer_hookÖzel transfer hook programı
pausableDuraklatılabilir token yapılandırması

Mevcut Hesap Uzantıları

Uzantı AdıAçıklama
confidential_transfer_accountHesap için gizli transfer durumu
non_transferable_accountTransfer edilemeyen token hesabı
transfer_hook_accountHesap için transfer hook durumu
pausable_accountDuraklatılabilir token hesap durumu
memo_transferTransferler için memo gerektirir
cpi_guardBelirli CPI çağrılarını engeller
immutable_ownerHesap sahibi değiştirilemez
default_account_stateYeni hesaplar için varsayılan durum

transfer_hook

Güvenlik Hususları

PermanentDelegate Uzantısı - Bu uzantıya sahip token'lar, delegenin sahibin onayı olmadan herhangi bir zamanda token'ları transfer etmesine/yakmasına izin verir. Bu, ödeme yapıldıktan sonra ödeme fonlarının ele geçirilebileceği için Kora node operatörü açısından önemli riskler oluşturur.

  • Kullanım durumunuz için açıkça gerekli olmadıkça, [validation.token2022] içindeki blocked_mint_extensions listesine "permanent_delegate" eklemeyi düşünün.
  • permanent_delegate uzantısına sahip ödeme token'larını kullanmaktan kaçının.

Ücret Ödeyici Politikası

[validation.fee_payer_policy] bölümü, Kora düğümünüzün ücret ödeyici cüzdanının gerçekleştirebileceği eylemler üzerinde ayrıntılı kontrol sağlar. Politika, program türüne göre (System, SPL Token, Token-2022) düzenlenmiştir ve tüm farklı talimat türlerini kapsar. Bu, kullanıcıların işlemlerinin Kora düğümünüzü imzalayıcı olarak kullanmasından kaynaklanan beklenmeyen davranışları önler.

Örneğin, spl_token.allow_transfer değeri false olarak ayarlanmışsa, Kora düğümü, Kora düğümünün ücret ödeyicisinin transfer yetkisi olduğu bir SPL token transferi içeren işlemleri imzalamayacaktır.

[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 Talimatları

SeçenekAçıklamaVarsayılanTür
allow_transferTransfer/TransferWithSeed talimatlarında ücret ödeyicinin gönderici olarak kullanılmasına izin verfalseboolean
allow_assignAssign/AssignWithSeed talimatlarında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin verfalseboolean
allow_create_accountCreateAccount/CreateAccountWithSeed talimatlarında ücret ödeyicinin finansman ödeyicisi olarak kullanılmasına izin verfalseboolean
allow_allocateAllocate/AllocateWithSeed talimatlarında ücret ödeyicinin hesap sahibi olarak kullanılmasına izin verfalseboolean
nonce.allow_initializeInitializeNonceAccount talimatında ücret ödeyicinin nonce yetkisi olarak ayarlanmasına izin verfalseboolean
nonce.allow_advanceAdvanceNonceAccount talimatında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin verfalseboolean
nonce.allow_authorizeAuthorizeNonceAccount talimatında ücret ödeyicinin mevcut yetki sahibi olarak kullanılmasına izin verfalseboolean
nonce.allow_withdrawWithdrawNonceAccount talimatında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin verfalseboolean

SPL Token Program Talimatları

SeçenekAçıklamaVarsayılanTür
allow_transferTransfer/TransferChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_burnBurn/BurnChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_close_accountCloseAccount talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_approveApprove/ApproveChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_revokeRevoke talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_set_authoritySetAuthority talimatlarında ücret ödeyicinin mevcut yetki sahibi olarak kullanılmasına izin verfalseboolean
allow_mint_toMintTo/MintToChecked talimatlarında ücret ödeyicinin mint yetkisi olarak kullanılmasına izin verfalseboolean
allow_initialize_mintInitializeMint/InitializeMint2 talimatlarında ücret ödeyicinin mint yetkisi olarak kullanılmasına izin verfalseboolean
allow_initialize_accountInitializeAccount/InitializeAccount3 talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin verfalseboolean
allow_initialize_multisigInitializeMultisig/InitializeMultisig2 talimatlarında ücret ödeyicinin imzalayıcı olarak kullanılmasına izin verfalseboolean
allow_freeze_accountFreezeAccount talimatlarında ücret ödeyicinin dondurma yetkisi olarak kullanılmasına izin verfalseboolean
allow_thaw_accountThawAccount talimatlarında ücret ödeyicinin dondurma yetkisi olarak kullanılmasına izin verfalseboolean

Token-2022, SPL Token ile aynı komut setini aynı yapılandırma seçenekleriyle ([validation.fee_payer_policy.token_2022] bölümü altında) destekler.

Güvenlik Hususları

GÜVENLİK UYARISI: Güvenlik nedenleriyle, tüm bunların false (varsayılan) olarak ayarlanması ve yalnızca gerektiğinde etkinleştirilmesi önerilir. Bu, kullanıcıların ücret ödeme hesabınızı boşaltması veya ücret ödeme hesabınızdan token yakması gibi istenmeyen davranışları önler. Bu, şunları engeller:

  • Hesap Boşaltma: Kullanıcıların ücret ödeme hesabınızdan SOL veya token transfer etmesi
  • Yetki Ele Geçirme: Kullanıcıların ücret ödeme hesabınızın sahip olduğu hesaplarda yetkileri değiştirmesi
  • Yetkisiz Basım: Ücret ödeme hesabınızın basım yetkisi varsa kullanıcıların token basması
  • Hesap Manipülasyonu: Kullanıcıların ücret ödeme hesabınız tarafından kontrol edilen hesapları dondurması, kapatması veya değiştirmesi

En İyi Uygulama: Tüm izinler devre dışı olarak başlayın ve yalnızca özel kullanım durumunuz için gereken minimum seti etkinleştirin.

Fiyat Yapılandırması (isteğe bağlı)

[validation.price] bölümü, işlem ücretlerinin nasıl hesaplandığını tanımlar. Üç fiyatlandırma modeli mevcuttur:

  • Marj Fiyatlandırma (varsayılan) - Gerçek ağ ücretlerinin üzerine yüzde marj ekleyin (varsayılan marj 0.0'dır)
  • Sabit Fiyatlandırma - Ağ ücretlerinden bağımsız olarak belirli bir tokenda sabit tutar alın
  • Ücretsiz Fiyatlandırma - Tüm işlem ücretlerini sponsor olun (kullanıcılara ücret alınmaz)
SeçenekAçıklamaGerekliTür
typeKullanılacak fiyatlandırma modeli"margin", "fixed" veya "free"
marginAğ ücretlerine eklenecek marj yüzdesi(type "margin" olduğunda)sayı
amountToken'ın temel birimlerinde alınacak sabit tutar(type "fixed" olduğunda)sayı
tokenÜcret alınacak token mint(type "fixed" olduğunda)b58-kodlu dize

Marj Fiyatlandırması

Gerçek ağ ücretlerinin üzerine yüzde marjı ekleyin:

[validation.price]
type = "margin"
margin = 0.1 # 10% margin (0.1 = 10%, 1.0 = 100%)

Sabit Fiyatlandırma

GÜVENLİK UYARISI: Sabit fiyatlandırma, ücretlendirilen tutara ücret ödeyici çıkışını DAHİL ETMEZ. Bu, düzgün yapılandırılmadığı takdirde kullanıcıların ücret ödeyici hesabınızı boşaltmasına izin verebilir.

Ağ ücretlerinden bağımsız olarak belirli bir tokenda sabit bir tutar ücretlendirin:

[validation.price]
type = "fixed"
amount = 1000000 # Amount in token's base units
token = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" # USDC mint

Ücretsiz İşlemler

Tüm işlem ücretlerini sponsor olun (kullanıcılara ücret yok):

[validation.price]
type = "free"

Sabit/Ücretsiz Fiyatlandırma Kullanırken Güvenlik Önlemleri

  1. Tüm Transfer ve Parasal İşlemleri Devre Dışı Bırakın - Ücret ödeyicinin transferlerde kaynak olarak kullanılmasını engelleyin:

    [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. Kimlik Doğrulamayı Etkinleştirin - Kötüye kullanımı önlemek için kimlik doğrulama kullanın:

    [kora.auth]
    api_key = "your-secure-api-key"
    # or
    hmac_secret = "your-minimum-32-character-hmac-secret"
  3. Tutucu Limitler Belirleyin - Maruziyeti en aza indirin:

    [validation]
    max_allowed_lamports = 1000000 # 0.001 SOL maximum

UYARI: Sabit/ücretsiz fiyatlandırma kullanırken özellikle tehlikeli işlemler:

  • allow_mint_to: Ücret ödeyici mint yetkisine sahipse sınırsız token oluşturulmasına izin verebilir
  • allow_set_authority: Kritik hesapların kontrolünü saldırganlara aktarabilir
  • allow_transfer: Ücret ödeyici token bakiyelerinin doğrudan boşaltılmasını sağlar
  • allow_close_account: Kirayı saldırgan kontrolündeki hesaplara iade eder

Performans İzleme (isteğe bağlı)

[metrics] bölümü metrik toplama ve izlemeyi yapılandırır. Bu bölüm isteğe bağlıdır ve varsayılan olarak metrikler devre dışıdır.

[metrics]
enabled = true
endpoint = "/metrics"
port = 8080
scrape_interval = 60
[metrics.fee_payer_balance]
enabled = true
expiry_seconds = 30
SeçenekAçıklamaGerekliTür
enabledMetrik toplamayı etkinleştirboolean
endpointÖzel metrik uç noktası yolustring
portMetrik uç noktası portunumber
scrape_intervalPrometheus tarama sıklığı (saniye)number

Ücret Ödeyici Bakiye Takibi

[metrics.fee_payer_balance] bölümü, ücret ödeyicinizin SOL bakiyesinin otomatik olarak izlenmesini yapılandırır:

SeçenekAçıklamaGerekliTür
enabledÜcret ödeyici bakiye takibini etkinleştir❌ (varsayılan: false)boolean
expiry_secondsArka plan takip aralığı (saniye cinsinden)❌ (varsayılan: 30)number

Etkinleştirildiğinde, Kora otomatik olarak ücret ödeyicinizin SOL bakiyesini takip eder ve bunu fee_payer_balance_lamports Prometheus ölçüm göstergesi aracılığıyla sunar. Bu, kapasite planlaması ve düşük bakiye uyarılarında yardımcı olur.

http://localhost:{port}/{metrics-endpoint}

→ Kora İzleme Başvuru Kılavuzu

Tam Örnek

İşte güvenlik en iyi uygulamalarıyla hazırlanmış üretim ortamına hazır bir yapılandırma:

# 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

Yapılandırma Doğrulama

Kora, başlangıçta yapılandırmanızı doğrular. Sunucuyu başlatmadan yapılandırmanızı doğrulamak isterseniz, yapılandırma doğrulama komutunu kullanabilirsiniz:

kora --config kora.toml config validate # or validate-with-rpc

Yapılandırmanızı RPC sunucusuyla doğrulamak için validate-with-rpc komutunu da çalıştırabilirsiniz (bu doğrulama kontrolü biraz daha yavaştır ancak daha kapsamlı hesap kontrolleri yapar)

Sunucuyu Başlatma

kora.toml dosyanızı yapılandırdıktan sonra, Kora sunucusunu başlatabilirsiniz:

kora --config path/to/kora.toml rpc start --no-load-signer # --other-rpc-flags-here

--no-load-signer bayrağı, sunucuyu herhangi bir imzalayıcı yüklemeden başlatacaktır. Bu, yapılandırmanızı test etmek için kullanışlıdır. İmzalayıcıları yüklemek için signers.toml dosyasını yapılandırmanız gerekir. Tek bir imzalayıcıya sahip minimum yapılandırma şöyle görünür:

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

Bu, MY_SIGNER_PRIVATE_KEY ortam değişkeninden tek bir imzalayıcı yükleyecektir. Ardından sunucunuzu şu şekilde başlatabilirsiniz:

kora --config path/to/kora.toml rpc start --signers-config path/to/signers.toml

Daha fazla bilgi ve gelişmiş imzalayıcı yapılandırması için İmzalayıcılar Kılavuzu'na bakın.

En İyi Uygulamalar

  1. Kısıtlayıcı Başlayın: Sıkı limitlerle başlayın ve kademeli olarak genişletin
  2. Kullanımı İzleyin: Hangi programların ve token'ların gerçekten kullanıldığını takip edin
  3. Düzenli Güncellemeler: Engel listelerini ve limitleri düzenli olarak gözden geçirin ve güncelleyin
  4. Değişiklikleri Test Edin: Yapılandırma değişikliklerini önce test ortamında doğrulayın
  5. Sürüm Kontrolü: Yapılandırma değişikliklerinizin bir değişiklik günlüğünü tutun

Yardıma mı İhtiyacınız Var?

Is this page helpful?

Yönetici

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