Solana DokümantasyonuKoraKatkıda Bulunanlar

Mimari

Kora, üç crate içeren bir Rust workspace'idir:

  • kora-lib çekirdek mantığı ve RPC sunucusunu barındırır,
  • kora-cli operatörlerin çalıştırdığı kora ikili dosyasını oluşturur ve
  • kora-deploy ayrı olarak sürümlendirilen, özel bir program dağıtım aracıdır. Aksi belirtilmedikçe aşağıdaki her şey crates/lib/src altında yer alır.

İstek yaşam döngüsü

Aşağıdaki diyagram, bir işlemin Kora içinde izlediği genel akışı gösterir. Çağrı yolunu anlamak, bir Kora düğümünü yapılandırmak ve yeni özellikler eklemek için önemlidir.

A transaction travels from the client app through the gateway, validation, plugins, and signing, before Kora either returns it or broadcasts it. Each stage is governed by a matching section of kora.toml or signers.toml.

Her aşama nerede bulunuyor

Diyagramdaki aşamaKaynakGiriş noktası
Ağ geçidirpc_server/server.rsrun_rpc_server
Yönlendirmerpc_server/rpc.rsKoraRpc
Metot bazında mantıkrpc_server/method/her JSON-RPC metodu için bir dosya
Doğrulamavalidator/transaction_validator.rsTransactionValidator
Eklentilerplugin/mod.rsTransactionPluginRunner
İmzalamasigner/solana-keychain crate'i tarafından desteklenir

Bilinmesi gereken iki dosya daha var: config.rs tüm kora.toml şemasını tanımlar ve state.rs ayrıştırılmış yapılandırmayı süreç genelindeki global durumda tutar.

RPC sunucusunu okumak

rpc.rs, her JSON-RPC uç noktası için bir metot içeren ince bir yönlendirme katmanıdır ve API'nin tamamını görmenin en hızlı yoludur. Her metodun mantığı rpc_server/method/ altında kendi dosyasında yer alır. sign_transaction.rs dosyasını baştan sona okuyun; diğer imzalama metotları bunun varyasyonlarıdır.

Doğrulayıcıyı okumak

transaction_validator.rs ve transaction/instruction_util.rs, işlemleri ve talimatları doğrulama mantığını barındırır. Ayrıca, kısıtlanan her program için bir dosya olacak şekilde validator/transaction_validator/fee_payer_policy_props/ altında bulunan fee-payer-policy güvenlik özelliği testleri de vardır.

Bilinmesinde fayda olan kurallar

Varsayılan doğrulama. [validation.fee_payer_policy] altındaki her bayrak varsayılan olarak false değerindedir ve politika yapıları #[serde(default)] taşır. Bu ikili kasıtlıdır: yeni kısıtlanan bir talimat eklemek, mevcut bir operatörün yapılandırmasını bozmamalı ve kazara bir izin olarak değil, bir ret olarak devreye girmelidir. Bir bayrak eklerken her ikisini de koruyun.

Ham işlemi değil, çözümlenmiş işlemi doğrulayın. Ham VersionedTransaction yalnızca statik hesap anahtarlarını açığa çıkarır; bu nedenle bir V0 işlemini bundan doğrulamak veya ücretlendirmek, lookup table hesaplarını sessizce atlar ve eksik ücret alınmasına yol açar. VersionedTransactionResolved::from_transaction bu adresleri en baştan çözümler; bu yüzden sonraki her aşama çözümlenmiş türü alır.

İşlem eklentisi ekleme

Eklentiler, plugin/mod.rs içindeki TransactionPlugin trait'ini uygular. İki metodu vardır: validate, imzalama akışları sırasında her işlem için çalışır ve validate_config, başlangıçta bir kez çalışarak operatör için hata ve uyarıları döndürür. PluginExecutionContext, eklentiye dört imzalama metodundan hangisinin onu çağırdığını bildirir.

TransactionPluginRunner::from_config, config.rs içinde tanımlı TransactionPluginType üzerinde eşleştirme yapar. Yeni bir yerleşik eklenti, orada yeni bir varyant ve runner'da yeni bir match kolu demektir. Bugün birlikte gelen iki eklenti gas_swap ve deploy_authority eklentileridir.

Test etme

Kora yapılandırmayı süreç genelindeki global durumda tuttuğundan, tests/ her aşama için bir [[test]] hedefi tanımlar ve her hedef, sıfırdan tohumlanmış kendi gömülü surfnet'ini ve Kora düğümünü başlatır. İkili dosya başına tek yapılandırma: yeni bir aşama, mevcut bir hedefte yeni bir modül değil, yeni bir hedef gerektirir.

cargo test -p tests --test <target>

Geri kalan her şey justfile üzerinden bağlanır. Komutları elle yeniden oluşturmaya çalışmak yerine onu okuyun.

Is this page helpful?

İçindekiler

Sayfayı Düzenle
© 2026 Solana Vakfı. Tüm hakları saklıdır.