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:
- Kora Temel Politikaları - Temel sunucu ayarları
- Kora Kimlik Doğrulama - Kimlik doğrulama ayarları
- Kora Önbellekleme - RPC çağrıları için Redis önbellekleme
- Kora Kullanım Limitleri - Cüzdan başına işlem sınırlama
- Kora Etkin Metotlar - Etkinleştirilecek Kora RPC metotları
- Doğrulama Politikaları - İşlem doğrulama ve güvenlik
- Token-2022 Uzantı Engelleme - Riskli Token-2022 uzantılarını engelleme
- Ücret Ödeyici Politikası - Ücret ödeyici cüzdanı üzerindeki kısıtlamalar
- Fiyat Yapılandırması - İşlem ücreti fiyatlandırma modelleri
- Performans İzleme - Metrik toplama ve izleme
- Tam Örnek - Üretime hazır eksiksiz yapılandırma
Ö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 = 100payment_address = "YourPaymentAddressPubkey11111111111111111111" # Optional
| Seçenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
rate_limit | Tü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çenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
api_key | Basit 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_age | Bir HMAC zaman damgasının saniye cinsinden maksimum yaşı | ❌ (varsayılan: 300) | sayı |
Not:
api_keyvehmac_secrettü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 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)
| Seçenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
enabled | RPC çağrıları için Redis önbelleklemeyi etkinleştir | ❌ (varsayılan: false) | boolean |
url | Redis 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_ttl | Hesap 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 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
| Seçenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
enabled | Cüzdan başına işlem sınırlamasını etkinleştir | ❌ (varsayılan: false) | boolean |
cache_url | Paylaşılan kullanım takibi için Redis bağlantı URL'si | ❌ | string |
max_transactions | Cüzdan başına maksimum işlem sayısı (0 = sınırsız) | ❌ (varsayılan: 100) | number |
fallback_if_unavailable | Redis 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_unavailabletrue olduğunda, sistem Redis geçici olarak kullanılamıyorsa işlemlerin devam etmesine izin vererek hizmet kesintisini önler.max_transactionsdeğ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 = trueestimate_transaction_fee = trueget_supported_tokens = truesign_transaction = falsesign_and_send_transaction = falsetransfer_transaction = falseget_blockhash = trueget_config = trueget_payer_signer = true
| Seçenek | Metod Açıklaması | Gerekli | Tür |
|---|---|---|---|
liveness | Sağlık kontrolü uç noktası | ✅ | boolean |
estimate_transaction_fee | Bir işlem için ücreti tahmin et | ✅ | boolean |
get_supported_tokens | Kabul edilen tokenleri listele | ✅ | boolean |
sign_transaction | Ağa göndermeden bir işlem imzala | ✅ | boolean |
sign_and_send_transaction | Bir işlem imzala ve ağa gönder | ✅ | boolean |
transfer_transaction | Token transferlerini yönet | ✅ | boolean |
get_blockhash | Son blok hash'ini al | ✅ | boolean |
get_config | Kora sunucu yapılandırmasını döndür | ✅ | boolean |
Not: Bu bölüm
kora.tomldosyanıza dahil edilirse, tüm metodların açıkçatrueveyafalseolarak 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 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",]
| Seçenek | Açıklama | Gerekli | Tü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_signatures | Solana 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_source | Token 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_transactions | Dayanı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'leri | ✅ | b58-kodlu string dizisi |
allowed_spl_paid_tokens | İşlem ücretleri için ödeme olarak kabul edilen SPL tokenleri | ✅ | b58-kodlu string dizisi |
disallowed_accounts | İşlemlerden açıkça engellenen hesaplar | ✅ | b58-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_tokensbelirtmeniz 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_mint | Mint için gizli transfer yapılandırması |
confidential_mint_burn | Gizli mint ve burn yapılandırması |
transfer_fee_config | Transfer ücreti yapılandırması |
mint_close_authority | Mint'i kapatmasına izin verilen yetkili |
interest_bearing_config | Faiz getiren token yapılandırması |
non_transferable | Token'ları transfer edilemez yapar |
permanent_delegate | Mint için kalıcı delege |
transfer_hook | Özel transfer hook programı |
pausable | Duraklatılabilir token yapılandırması |
Mevcut Hesap Uzantıları
| Uzantı Adı | Açıklama |
|---|---|
confidential_transfer_account | Hesap için gizli transfer durumu |
non_transferable_account | Transfer edilemeyen token hesabı |
transfer_hook_account | Hesap için transfer hook durumu |
pausable_account | Duraklatılabilir token hesap durumu |
memo_transfer | Transferler için memo gerektirir |
cpi_guard | Belirli CPI çağrılarını engeller |
immutable_owner | Hesap sahibi değiştirilemez |
default_account_state | Yeni 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_extensionslistesine "permanent_delegate" eklemeyi düşünün. permanent_delegateuzantı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/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 Talimatları
| Seçenek | Açıklama | Varsayılan | Tür |
|---|---|---|---|
allow_transfer | Transfer/TransferWithSeed talimatlarında ücret ödeyicinin gönderici olarak kullanılmasına izin ver | false | boolean |
allow_assign | Assign/AssignWithSeed talimatlarında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin ver | false | boolean |
allow_create_account | CreateAccount/CreateAccountWithSeed talimatlarında ücret ödeyicinin finansman ödeyicisi olarak kullanılmasına izin ver | false | boolean |
allow_allocate | Allocate/AllocateWithSeed talimatlarında ücret ödeyicinin hesap sahibi olarak kullanılmasına izin ver | false | boolean |
nonce.allow_initialize | InitializeNonceAccount talimatında ücret ödeyicinin nonce yetkisi olarak ayarlanmasına izin ver | false | boolean |
nonce.allow_advance | AdvanceNonceAccount talimatında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin ver | false | boolean |
nonce.allow_authorize | AuthorizeNonceAccount talimatında ücret ödeyicinin mevcut yetki sahibi olarak kullanılmasına izin ver | false | boolean |
nonce.allow_withdraw | WithdrawNonceAccount talimatında ücret ödeyicinin yetki sahibi olarak kullanılmasına izin ver | false | boolean |
SPL Token Program Talimatları
| Seçenek | Açıklama | Varsayılan | Tür |
|---|---|---|---|
allow_transfer | Transfer/TransferChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_burn | Burn/BurnChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_close_account | CloseAccount talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_approve | Approve/ApproveChecked talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_revoke | Revoke talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_set_authority | SetAuthority talimatlarında ücret ödeyicinin mevcut yetki sahibi olarak kullanılmasına izin ver | false | boolean |
allow_mint_to | MintTo/MintToChecked talimatlarında ücret ödeyicinin mint yetkisi olarak kullanılmasına izin ver | false | boolean |
allow_initialize_mint | InitializeMint/InitializeMint2 talimatlarında ücret ödeyicinin mint yetkisi olarak kullanılmasına izin ver | false | boolean |
allow_initialize_account | InitializeAccount/InitializeAccount3 talimatlarında ücret ödeyicinin sahip olarak kullanılmasına izin ver | false | boolean |
allow_initialize_multisig | InitializeMultisig/InitializeMultisig2 talimatlarında ücret ödeyicinin imzalayıcı olarak kullanılmasına izin ver | false | boolean |
allow_freeze_account | FreezeAccount talimatlarında ücret ödeyicinin dondurma yetkisi olarak kullanılmasına izin ver | false | boolean |
allow_thaw_account | ThawAccount talimatlarında ücret ödeyicinin dondurma yetkisi olarak kullanılmasına izin ver | false | boolean |
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çenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
type | Kullanılacak fiyatlandırma modeli | ✅ | "margin", "fixed" veya "free" |
margin | Ağ ücretlerine eklenecek marj yüzdesi | (type "margin" olduğunda) | sayı |
amount | Token'ı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 unitstoken = "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
-
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 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 -
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"# orhmac_secret = "your-minimum-32-character-hmac-secret" -
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 verebilirallow_set_authority: Kritik hesapların kontrolünü saldırganlara aktarabilirallow_transfer: Ücret ödeyici token bakiyelerinin doğrudan boşaltılmasını sağlarallow_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 = trueendpoint = "/metrics"port = 8080scrape_interval = 60[metrics.fee_payer_balance]enabled = trueexpiry_seconds = 30
| Seçenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
enabled | Metrik toplamayı etkinleştir | ✅ | boolean |
endpoint | Özel metrik uç noktası yolu | ✅ | string |
port | Metrik uç noktası portu | ✅ | number |
scrape_interval | Prometheus 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çenek | Açıklama | Gerekli | Tür |
|---|---|---|---|
enabled | Ücret ödeyici bakiye takibini etkinleştir | ❌ (varsayılan: false) | boolean |
expiry_seconds | Arka 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 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
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, weightedstrategy = "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
- Kısıtlayıcı Başlayın: Sıkı limitlerle başlayın ve kademeli olarak genişletin
- Kullanımı İzleyin: Hangi programların ve token'ların gerçekten kullanıldığını takip edin
- Düzenli Güncellemeler: Engel listelerini ve limitleri düzenli olarak gözden geçirin ve güncelleyin
- Değişiklikleri Test Edin: Yapılandırma değişikliklerini önce test ortamında doğrulayın
- 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?
- Kimlik doğrulama kurulumu için Kimlik Doğrulama Kılavuzu'na bakın
- İmzalayıcı yapılandırması için İmzalayıcılar Kılavuzu'na bakın
- Kora düğümü nasıl çalıştırılır hakkında daha fazla bilgi için Operatör Kılavuzu'na bakın
koraetiketi ile Solana Stack Exchange'i ziyaret edin- Sorunları GitHub'da bildirin
Is this page helpful?