Programs (Programlar)

Facts (Özet Bilgiler)

Bilgi Tablosu

  • Programlar, hem son kullanıcılardan hem de diğer programlardan gelen talimatları işler.
  • Tüm programlar stateless’dır(durumsuzdur): etkileşime girdikleri tüm veriler, talimatlar yoluyla iletilen ayrı account'larda saklanır.
  • Programlar executable (yürütülebilir) olarak işaretlenmiş account'larda saklanır.
  • Tüm programlar BPF Loaderopen in new window'a aittir ve Solana Runtimeopen in new window tarafından yürütülür.
  • Geliştiriciler en yaygın olarak Rust veya C++'da programlar yazarlar, ancak LLVMopen in new window'nin BPFopen in new window arka ucunu hedefleyen herhangi bir dili seçebilirler.
  • Tüm programların, talimat işlemenin gerçekleştiği tek bir giriş noktası vardır. (process_instruction); parametreler her zaman şunları içerir:
    • program_id: pubkey
    • accounts: array,
    • instruction_data: byte array

Deep Dive (Derinlemesine Bakış)

Diğer birçok blockchainden farklı olarak Solana, kodu verilerden tamamen ayırır. Programların etkileşimde bulunduğu tüm veriler ayrı account'larda saklanır ve talimatlar aracılığıyla referans olarak iletilir. Bu model, tek bir genel programın ek dağıtımlar gerektirmeden çeşitli account'larda çalışmasına izin verir. Bu kalıbın yaygın örnekleri, Native(yerel) ve SPL Programlarında görülür.

Native Program’lar & Solana Program Library (SPL)

Solana, on-chain etkileşimler için temel yapı taşları olarak hizmet eden bir dizi programla donatılmış olarak gelir. Bu programlar Native Programlar ve Solana Program Library (SPL) Programları olarak ikiye ayrılır.

Native Program’lar, validator’leri çalıştırmak için gereken temel işlevleri sağlar. Bu programlar arasında en çok bilineni, yeni account’ların yönetilmesinden ve iki taraf arasında SOL transferinden sorumlu olan Sistem Programıdır.

SPL Programları, token oluşturma, takas etme ve ödünç vermenin yanı sıra stake pool (hisse havuzu) oluşturma ve on-chain name service dahil olmak üzere bir dizi on-chain etkinliği destekler. SPL Token Programı doğrudan CLI aracılığıyla çağrılabilirken, Associated Token Account Programopen in new window gibi diğerleri genellikle özel programlardan oluşur.

Writing Programs (Program Yazma)

Programlar en yaygın olarak Rust veya C++ ile geliştirilir, ancak LLVM'nin BPF arka ucunu hedefleyen herhangi bir dille geliştirilebilir. Neon Labsopen in new window ve Solangopen in new window'ın son girişimleri, EVMopen in new window uyumluluğunu mümkün kılar ve geliştiricilerin Solidity'de programlar yazmasına olanak tanır.

Rust tabanlı programların çoğu aşağıdaki mimariye uyar:

DosyaAçıklama
lib.rsModüllerin kaydedilmesi
entrypoint.rsPrograma başlangıç
instruction.rsProgram API'si, komut verilerini (de)serialize etme
processor.rsProgram mantığının bulunduğu bölüm
state.rsProgram nesneleri, durumu (de) serialize etme
error.rsPrograma özgü hatalar

Son zamanlarda, Anchoropen in new window program geliştirmek için popüler bir framework olarak ortaya çıkmıştır. Anchor, Ruby on Rails'e benzeyen, Rust tabanlı geliştirme için (de)serialization sürecini kolaylaştıran, üzerinde düşünülmüş bir frameworktür.

Programlar genellikle Testnet veya Mainnet'e dağıtılmadan önce Localhost ve Devnet geliştirilir ve test edilir. Solana aşağıdaki ortamları destekler:

Cluster EnvironmenRPC Connection URL
Mainnet-betahttps://api.mainnet-beta.solana.com
Testnethttps://api.testnet.solana.com
Devnethttps://api.devnet.solana.com
LocalhostDefault port: 8899 (e.g. http://localhost:8899, http://192.168.1.88:8899)

Bir ortamda deploy edildikten sonra Client’lar ilgili cluster'la olan RPC bağlantılarıopen in new window aracılığıyla on-chain programlarla etkileşime girebilir.

Deploying Programs (Programları Çalıştırma)

Geliştiriciler programlarını CLIopen in new window aracılığıyla çalıştırabilir:

solana program deploy <PROGRAM_FILEPATH>

Bir program çalıştığında, bir ELFopen in new window shared object’e (BPF bayt kodu içeren) derlenir ve Solana cluster’a yüklenir. Programlar account’larda yaşar (Solana'daki diğer her şey gibi), ancak bu account'lar executable olarak işaretlenir ve BPF Loader’a atanır. Bu account’ın adresi program_id olarak adlandırılır ve gelecekteki tüm işlemlerde programa başvurmak için kullanılır.

Solana, Upgradable BPF Loader da dahil olmak üzere birden fazla BPF Loader’ı destekler. BPF Loader, programın account’ını yönetmekten ve program_id aracılığıyla client’lara (client’lara) sunmaktan sorumludur. Tüm programlarda instruction işlemenin gerçekleştiği tek bir giriş noktası vardır (proses_instruction) ve parametreler her zaman şunları içerir:

  • program_id: pubkey
  • accounts: array,
  • instruction_data: byte array

Çağrıldıklarında programlar Solana Runtime tarafından yürütülür.

Other Resources (Diğer Kaynaklar)

Last Updated:
Contributors: rbeyzas