Son Güncelleme: 2025-08-22
İmzalayan Nedir?
İmzalayan, Kora düğümünüzün Solana işlemlerini ücret ödeyici olarak imzalamak için kullandığı kriptografik keypair'dir. Kullanıcılar Kora düğümünüze işlem gönderdiğinde, düğüm bunları doğrular ve SOL işlem ücretlerini karşılamak için imzalayanınızın özel anahtarıyla birlikte imzalar.
Not: Varsayılan olarak, token ödeme ücretleri imzalayanın adresine
gönderilir. Ancak, kora.toml dosyanızda ayrı bir payment_address
yapılandırarak ödemeleri farklı bir adreste alabilir ve imzalayanınızı ayrı
tutabilirsiniz. Ayrıntılar için
Yapılandırma Kılavuzu bölümüne
bakın.
İmzalayan keypair'iniz, işlem ücretlerini ödemek için kullanılan SOL fonlarınıza doğrudan erişime sahiptir. Ele geçirilirse, bir saldırgan şunları yapabilir:
- SOL bakiyenizi boşaltabilir
- Yetkisiz işlemleri imzalayabilir
- Ödeme hizmetinizi kesintiye uğratabilir
İmzalayan Yapılandırması
Kora RPC CLI, --signers-config bayrağı aracılığıyla belirtilen bir
signer.toml gerektirir. singer.toml dosyası, düğümünüz için imzalayan(ları)
ve imzalayan yapılandırmasını ayarlamanıza olanak tanır. signer.toml iki
bölümden oluşur:
[signer_pool]- İmzalayan havuzu yapılandırması[[signers]]- Her imzalayan için yapılandırma (sınırlı işlevselliğe sahip--no-load-signerbayrağı kullanılmadığı sürece en az bir imzalayan gereklidir)
[signer_pool]
İmzalayan havuzu yapılandırması, bir bütün olarak imzalayan havuzuna özgü özellikleri belirtir:
strategy- İmzalayan seçimi için seçim stratejisi. Kullanılabilir stratejiler:round_robin(varsayılan) - İmzalayanları sırayla döngüsel olarak seç.random- İmzalayanları rastgele seç.weighted- İmzalayanları ağırlığa göre seç.
[[signers]]
Her imzalayan şu şekilde yapılandırılır:
- bir
name: imzalayan için insan tarafından okunabilir bir tanımlayıcı ve imzalayan havuzu içinde benzersiz olmalıdır - isteğe bağlı bir
weight: eğerstrategydeğeriweightedise imzalayanın ağırlığını belirten bir sayı - bir
typeve türe özgü yapılandırma (bkz. İmzalayan Türleri)
--no-load-signer bayrağı kullanılmadığı sürece bir imzalayan gereklidir, bu
bayrak sınırlı işlevselliğe sahiptir. Üretim dağıtımları için, geliştirilmiş
güvenilirlik ve performans için birden fazla imzalayan yapılandırılması
önerilir.
Örnek
İşte üç imzalayanlı round-robin imzalayan havuzunu tanımlayan örnek bir
signers.toml dosyası (not: farklı imzalayan türlerini/yapılandırmalarını bir
sonraki bölümde ele alacağız):
[signer_pool]# Selection strategy: round_robin, random, weightedstrategy = "round_robin"# Primary memory signer[[signers]]name = "signer_1"type = "memory"private_key_env = "SIGNER_1_PRIVATE_KEY"# weight = 1 # Not required if strategy is not weighted# Backup memory signer[[signers]]name = "signer_2"type = "memory"private_key_env = "SIGNER_2_PRIVATE_KEY"# weight = 1 # Not required if strategy is not weighted# Turnkey signer for high-value operations[[signers]]name = "signer_3_turnkey"type = "turnkey"api_public_key_env = "TURNKEY_API_PUBLIC_KEY"api_private_key_env = "TURNKEY_API_PRIVATE_KEY"organization_id_env = "TURNKEY_ORG_ID"private_key_id_env = "TURNKEY_PRIVATE_KEY_ID"public_key_env = "TURNKEY_PUBLIC_KEY"# weight = 2 # Higher weight = selected more often
Ortam Değişkenleri
Yapılandırılmış tüm imzalayanlar için ortam değişkenlerini ayarlayın:
# Memory signersSIGNER_1_PRIVATE_KEY="your_base58_private_key_1"SIGNER_2_PRIVATE_KEY="your_base58_private_key_2"# Turnkey signerTURNKEY_API_PUBLIC_KEY="your_turnkey_api_public_key"TURNKEY_API_PRIVATE_KEY="your_turnkey_api_private_key"TURNKEY_ORG_ID="your_turnkey_organization_id"TURNKEY_PRIVATE_KEY_ID="your_turnkey_private_key_id"TURNKEY_PUBLIC_KEY="your_turnkey_public_key"
Kora'yı İmzalayan Yapılandırmasıyla Başlatın
kora --config path/to/kora.toml rpc start --signers-config path/to/signers.toml
İmzalayan Türleri
Kora, her biri farklı güvenlik ve operasyonel özelliklere sahip dört ana imzalayan türünü destekler (ve sınırlı test için imzalayansız bir seçenek):
- Özel Anahtar - basit, kendi kendini yöneten
- Turnkey - anahtar yönetim hizmeti
- Privy - anahtar yönetim hizmeti
- Vault - HashiCorp Vault entegrasyonu
- İmzalayansız - imzalayan yok (sınırlı test için)
Özel Anahtar İmzalayan
En basit yaklaşım - özel anahtarınızı doğrudan ortam değişkenlerinde saklayın veya CLI bayrakları aracılığıyla iletin. Kora üç formatta özel anahtarları kabul eder:
1. Base58 Formatı (Varsayılan)
Standart Solana base58 kodlu özel anahtar:
KORA_PRIVATE_KEY="5KKsLVU6TcbVDK4BS6K1DGDxnh4Q9xjYJ8XaDCG5t8ht..."
2. U8Array Formatı
JSON formatında 64 baytlık dizi:
KORA_PRIVATE_KEY="[174, 47, 154, 16, 202, 193, 206, 113, 199, 190, 53, 133, 169, 175, 31, 56, 222, 53, 138, 189, 224, 216, 117, 173, 10, 149, 53, 45, 73, 251, 237, 246, 15, 185, 186, 82, 177, 240, 148, 69, 241, 227, 167, 80, 141, 89, 240, 121, 121, 35, 172, 247, 68, 251, 226, 218, 48, 63, 176, 109, 168, 89, 238, 135]"
3. JSON Dosya Yolu
Keypair içeren bir JSON dosyasının yolu:
KORA_PRIVATE_KEY="/path/to/keypair.json"
Burada keypair.json şunları içerir:
[174, 47, 154, 16, 202, 193, 206, 113, 199, 190, 53, 133, 169, 175, 31, 56,222, 53, 138, 189, 224, 216, 117, 173, 10, 149, 53, 45, 73, 251, 237, 246, 15,185, 186, 82, 177, 240, 148, 69, 241, 227, 167, 80, 141, 89, 240, 121, 121,35, 172, 247, 68, 251, 226, 218, 48, 63, 176, 109, 168, 89, 238, 135]
Yeni Keypair Oluşturma
Solana CLI kullanarak Kora düğümünüz için yeni bir keypair oluşturabilirsiniz:
# Generate new keypair filesolana-keygen new --outfile ~/.config/solana/kora-keypair.json# Get the public keysolana-keygen pubkey ~/.config/solana/kora-keypair.json# Fund with SOL for transaction feessolana transfer --from <your-funding-wallet> <kora-public-key> 0.1
Signer.toml Yapılandırması
Gerekli değişkenler:
name- İmzalayıcının adıtype- İmzalayıcının türü (memoryolmalıdır)private_key_env- Özel anahtarı içeren ortam değişkeni
[[signers]]name = "my_memory_signer"type = "memory"private_key_env = "KORA_PRIVATE_KEY" # (or your environment variable name)
Turnkey İmzalayıcı
Turnkey, donanım güvenlik modülleri (HSM'ler) ve politika kontrolleri ile kurumsal düzeyde anahtar yönetimi sağlar.
Ön Koşullar
Turnkey imzalayıcıyı kullanmak için bir Turnkey Hesabına ihtiyacınız olacak. turnkey.com adresinden kaydolun
Kurulum
Turnkey imzalayıcıyı kullanmak için beş anahtara ihtiyacınız olacak:
- Turnkey organizasyon kimliği
- Turnkey API genel anahtarı
- Turnkey API özel anahtarı
- Turnkey özel anahtar kimliği
- Turnkey genel anahtarı
Bunları Turnkey'den alalım:
1. Turnkey Organizasyonu
Turnkey kontrol panelinin sağ üst köşesindeki kullanıcı menüsüne tıklayın ve organizasyon kimliğini kopyalayın:
Turnkey Organizasyon Kimliği
Organizasyon kimliğini bir ortam değişkeninde saklayın:
TURNKEY_ORGANIZATION_ID="your_organization_id"
2. Turnkey API Anahtarları
- Turnkey kontrol panelinin sağ üst köşesindeki kullanıcı menüsüne tıklayın ve "Hesap Ayarları"na tıklayın.
- "API Anahtarları" altında "+ API Anahtarı Oluştur"a tıklayın.
- "API anahtarlarını tarayıcıda oluştur"u seçin
- API anahtarı için bir ad girin ve "Devam"a tıklayın
- Genel ve özel anahtarları kaydedin ve "Onayla"ya tıklayın
Turnkey API Anahtarları
API genel ve özel anahtarlarını ortam değişkenlerinde saklayın:
TURNKEY_API_PUBLIC_KEY="your_turnkey_api_public_key"TURNKEY_API_PRIVATE_KEY="your_turnkey_api_private_key"
3. Turnkey Cüzdan Anahtarları
Ana menüden "Cüzdanlar" bölümüne gidin ve "Özel Anahtar Oluştur" seçeneğine tıklayın.
"Solana" varlık adresi türü ile yeni bir ED25519 özel anahtarı oluşturacağız:
Turnkey Cüzdanları
"Devam Et" ve ardından "Onayla" seçeneklerine tıklayın.
Cüzdanlar sayfanızdan yeni özel anahtarınızı görmelisiniz. Detayları görüntülemek için üzerine tıklayın. "Özel anahtar ID"sini ve cüzdan "Adresini" kopyalamanız gerekecek. Bunları ortam değişkenlerine kaydedin:
TURNKEY_PRIVATE_KEY_ID="your_private_key_id" #7936...TURNKEY_PUBLIC_KEY="your_solana_address" # 4gBe...
Turnkey Cüzdan Detayları
İşlem ücretlerini ödemek için cüzdanı SOL ile fonlamanız gerekecek.
Ortam Değişkenlerini Yapılandırma
Artık aşağıdaki ortam değişkenlerine sahip olmalısınız:
# .env fileTURNKEY_ORGANIZATION_ID="your_organization_id"TURNKEY_API_PUBLIC_KEY="your_turnkey_api_public_key"TURNKEY_API_PRIVATE_KEY="your_turnkey_api_private_key"TURNKEY_PRIVATE_KEY_ID="your_private_key_id"TURNKEY_PUBLIC_KEY="your_solana_public_key"
Eksiksiz bir .env.example dosyası için
Kora deposuna bakın.
Turnkey desteği için Turnkey belgelerine bakın.
Signer.toml Yapılandırması
Gerekli değişkenler:
name- İmzalayanın adıtype- İmzalayan türü (turnkeyolmalıdır)api_public_key_env- Turnkey API genel anahtarını içeren ortam değişkeniapi_private_key_env- Turnkey API özel anahtarını içeren ortam değişkeniorganization_id_env- Turnkey organizasyon ID'sini içeren ortam değişkeniprivate_key_id_env- Turnkey özel anahtar ID'sini içeren ortam değişkenipublic_key_env- Turnkey genel anahtarını içeren ortam değişkeni
[[signers]]name = "my_turnkey_signer"type = "turnkey"api_public_key_env = "TURNKEY_API_PUBLIC_KEY"api_private_key_env = "TURNKEY_API_PRIVATE_KEY"organization_id_env = "TURNKEY_ORG_ID"private_key_id_env = "TURNKEY_PRIVATE_KEY_ID"public_key_env = "TURNKEY_PUBLIC_KEY"
Privy İmzalayıcı
Privy, Web3 uygulamaları için güvenli anahtar yönetimi ile gömülü cüzdan altyapısı sunar.
Ön Gereksinimler
Privy imzalayıcısını kullanmak için bir Privy Hesabına ihtiyacınız olacak. privy.io adresinden kaydolun.
Kurulum
Privy imzalayıcısını kullanmak için üç anahtara ihtiyacınız olacak:
- Privy App ID
- Privy App Secret
- Privy Wallet ID
Bunları Privy'den alalım:
1. Privy App ID
Kontrol panelinizden, Kora için kullanmak istediğiniz uygulamayı seçin (veya bir uygulamanız yoksa "+ Yeni uygulama"ya tıklayın).
"API Anahtarlarını Al"ı seçin ve "+ Yeni Secret"a tıklayın:
Privy Wallets
"App ID" ve "App Secret" bilgilerinizi kopyalayın ve bunları ortam değişkenlerinde saklayın:
PRIVY_APP_ID="your_privy_app_id"PRIVY_APP_SECRET="your_privy_app_secret"
2. Privy Wallet
Ardından, Kora için yeni bir cüzdan oluşturmamız gerekecek. Kontrol panelinizin kenar çubuğundan "Wallet Infrastructure" altındaki "Wallets"a tıklayın ve "Yeni Cüzdan"ı seçin.
Blokzincir olarak "Solana"yı seçin ve "Kaydet"e tıklayın.
Ayrıntıları görüntülemek için cüzdana tıklayın:
Privy Wallets
"Wallet ID"yi kopyalayın ve ortam değişkenlerinde saklayın:
PRIVY_WALLET_ID="your_privy_wallet_id"
İşlem ücretlerini ödemek için cüzdanı SOL ile fonlamanız gerekecektir.
Ortam Değişkenlerini Yapılandırın
Artık aşağıdaki ortam değişkenlerine sahip olmalısınız:
# .env filePRIVY_APP_ID="your_privy_app_id"PRIVY_APP_SECRET="your_privy_app_secret"PRIVY_WALLET_ID="your_wallet_id"
Tam bir .env.example dosyası için
Kora deposuna bakın.
Privy desteği için Privy belgelerine bakın.
Signer.toml Yapılandırması
Gerekli değişkenler:
name- İmzalayanın adıtype- İmzalayan türü (privyolmalıdır)app_id_env- Privy app ID'sini içeren ortam değişkeniapp_secret_env- Privy app secret'ını içeren ortam değişkeniwallet_id_env- Privy wallet ID'sini içeren ortam değişkeni
[[signers]]name = "my_privy_signer"type = "privy"app_id_env = "PRIVY_APP_ID"app_secret_env = "PRIVY_APP_SECRET"wallet_id_env = "PRIVY_WALLET_ID"
İmzalayıcı Yok
Eğer hiçbir imzalayıcı yapılandırılmamışsa, Kora bir hata verecektir. Kora'yı
imzalayıcı olmadan çalıştırmak istiyorsanız, --no-signer bayrağı ile
çalıştırabilirsiniz:
kora --config path/to/kora.toml rpc start --no-signer
Bunun, düğümünüzü yalnızca imzalayıcı gerektirmeyen istekleri işlemekle sınırlayacağını unutmayın.
Sorun Giderme
Hızlı Başvuru
| Hata Mesajı | İmzalayıcı Türü | Hızlı Çözüm |
|---|---|---|
| "En az bir imzalayıcı yapılandırılmalıdır" | Herhangi | Yapılandırmaya en az bir imzalayıcı ekleyin |
| "Yapılandırma dosyası okunamadı" | Herhangi | Dosya yolunu ve içeriğini kontrol edin |
| "İmzalayıcılar yapılandırma TOML'si ayrıştırılamadı" | Herhangi | Dosya formatını ve imzalayıcı içeriğini kontrol edin |
| "Yinelenen imzalayıcı adı" | Herhangi | Yapılandırmada her imzalayıcının benzersiz adlandırıldığından emin olun |
| "Geçersiz base58 dizesi" | Özel Anahtar | Anahtar formatını kontrol edin, fazla boşluk olmamalı |
| "Geçersiz özel anahtar uzunluğu" | Özel Anahtar | Tam 64-baytlık Solana anahtarı kullanın |
| "Turnkey {key} gereklidir" | Turnkey | TURNKEY_{key} ayarlayın |
| "Privy {key} gereklidir" | Privy | PRIVY_{key} ayarlayın |
| "Vault {key} gereklidir" | Vault | VAULT_{key} ayarlayın |
| "Vault istemcisi oluşturulamadı" | Vault | Vault kimlik bilgilerini doğrulayın |
| "[servis] ile imzalama başarısız oldu" | Herhangi | Servis durumunu, kimlik bilgilerini ve hız limitlerini kontrol edin |
| "İmzalayıcı havuzu başlatılmadı" | Çoklu İmzalayıcı | signers.toml yolunu ve formatını kontrol edin |
| "Boş imzalayıcı havuzu oluşturulamaz" | Çoklu İmzalayıcı | Yapılandırmaya en az bir imzalayıcı ekleyin |
| "pubkey ... ile imzalayıcı bulunamadı" | Çoklu İmzalayıcı | İmzalayıcı ipucunun yapılandırılmış imzalayıcılarla eşleştiğini kontrol edin |
| "--no-load-signer kullanılmadıkça imzalayıcılar yapılandırması gereklidir" | Herhangi | Bir imzalayıcılar yapılandırma dosyası ekleyin |
Genel Hata Ayıklama İpuçları
Ayrıntılı Günlük Kaydını Etkinleştir
Sorunları teşhis etmek için ayrıntılı günlük kaydı ekleyin:
RUST_LOG=debug kora rpc --with-turnkey-signer
Güvenlik ve En İyi Uygulamalar
Genel Güvenlik
- Kora için özel keypair'ler kullanın (kişisel cüzdanları yeniden kullanmayın)
- Yalnızca ücretlere harcamaya razı olduğunuz SOL ile fonlayın
- Otomatik izleme ve bakiye ekleme ile minimum operasyonel bakiye tutun
- Olağandışı aktiviteler için izleme ve uyarı sistemleri uygulayın
- Tüm özel anahtarlar ve API anahtarları ortam değişkenlerinde veya gizli anahtar yönetim sistemlerinde (Railway secrets, AWS Secrets Manager vb.) saklanmalıdır
İmzalayıcı Belirtme (İstemci Tarafı)
İstemciler, ilgili işlemler arasında tutarlılık sağlamak için tercih edilen bir imzalayıcı belirtebilir:
// Fetch the signers by calling getPayerSignerconst { signer, payment_destination } = await client.getPayerSigner();console.log(signer, payment_destination);// Estimate with specific signerconst estimate = await client.estimateTransactionFee({transaction: tx,signer_key: signer // Public key of preferred signer (one of the signers in the signer pool)});// Sign with same signerconst signed = await client.signTransaction({transaction: tx,signer_key: signer // Same signer for consistency});
İmzalayıcı anahtarları olmadan, yapılandırılmış strateji imzalayıcı seçimini belirler. Aynı işlemle ilgili çağrılarda anahtarların tutarlı olması gerektiğini unutmamak önemlidir (örneğin, belirli bir imzalayıcı anahtarıyla bir işlem oluşturursanız, ilgili tüm çağrılar için aynı imzalayıcı anahtarını kullanmalısınız).
Is this page helpful?