Program dağıtımı

Özet

Loader-v3 aracılığıyla dağıtılan programlar, bir yükseltme yetkisi ayarlandığında yükseltilebilir. Yetkinin iptal edilmesi programı değiştirilemez hale getirir. 9 adımlı yükseltme mekanizması, tüm 9 loader-v3 talimatı, derleme doğrulaması ve 5 yükleyici türünü kapsar.

Programları dağıtma

Programları yükseltme

Bir programı yükseltmek için, bir hesabın yükseltme yetkisine sahip olması gerekir (genellikle programı ilk dağıtan hesap). Dağıtım veya yükseltme sırasında, yeni bytecode geçici bir buffer hesabına yüklenir, ardından program data hesabına yazılır. Yükseltme yetkisinin None olarak ayarlanması programı değiştirilemez hale getirir ve kalıcı olarak daha fazla güncellemeyi engeller.

Yükseltme mekanizması

UpgradeableLoaderInstruction::Upgrade işlendiğinde, runtime:

  1. Program hesabının yazılabilir olduğunu ve loader-v3'e ait olduğunu doğrular.
  2. Buffer hesabının doğru yetki ile bir Buffer durumu içerdiğini doğrular.
  3. ProgramData hesabının upgrade_authority_address değerinin eşleştiğini ve None olmadığını doğrular.
  4. Programın mevcut slot'ta zaten dağıtılmadığını doğrular (clock.slot != slot).
  5. Buffer'dan yeni ELF byte'larını yükler ve doğrular.
  6. Yeni bytecode'u buffer'dan ProgramData hesabına kopyalar ve kalan byte'ları sıfırlar.
  7. ProgramData hesabını kira muafiyetine fon sağlar.
  8. Buffer hesabını boşaltır (lamports'u 0'a ayarlar) ve verisini keser.
  9. Yeni sürüm bir sonraki slot'ta yürürlüğe girer (deployment_slot + 1).

Program hesabının kendisi (durumu ve programdata_address işaretçisi) bir yükseltme sırasında değişmez. Yalnızca ProgramData hesabının bayt kodu ve slot meta verileri güncellenir.

Loader-v3 talimat referansı

Loader-v3 (BPF Loader Upgradeable), Solana üzerinde program dağıtımı için mevcut varsayılan yükleyicidir.

TalimatAçıklama
InitializeBufferBir buffer hesabının durumunu belirtilen yetkiyle Buffer olarak ayarlar. Zaten başlatılmışsa başarısız olur.
WriteBir buffer hesabında belirtilen konuma bayt yazar. Yetki imzalamalıdır.
DeployWithMaxDataLenYeni bir program oluşturur: ProgramData adresini türetir, System Program'a CPI aracılığıyla ProgramData hesabını oluşturur, buffer'dan ELF'yi doğrular ve dağıtır, Program hesabının durumunu ayarlar ve çalıştırılabilir olarak işaretler.
UpgradeMevcut bir programın ProgramData hesabındaki bayt kodunu bir buffer'dan değiştirir.
SetAuthorityBir Buffer veya ProgramData hesabının yetkisini değiştirir. ProgramData üzerinde None olarak ayarlamak programı değiştirilemez yapar. Buffer yetkisi None olarak ayarlanamaz.
SetAuthorityCheckedSetAuthority gibidir, ancak yeni yetkinin de işlemi imzalamasını gerektirir.
CloseBir buffer, başlatılmamış veya ProgramData hesabını lamport'larını bir alıcıya aktararak kapatır. ProgramData'yı kapatmak ayrıca program önbelleğine bir Closed mezar taşı yazar. Mevcut slotta dağıtılmış bir program kapatılamaz.
ExtendProgramCheckedProgramData hesabının tahsisini ek baytlarla genişletir, ekstra rent'i ödeyenden finanse eder.
MigrateBir loader-v3 programını, program hesabının sahipliğini aktararak ve bayt kodunu kopyalayarak loader-v4'e taşır. Geçiş yetkisinin veya programın yükseltme yetkisinin imzalamasını gerektirir. Loader-v4 henüz mainnet'te yayınlanmamıştır.

Programları doğrulama

Solana, kullanıcıların bir programın zincir üzerindeki bayt kodunun genel kaynak koduyla eşleştiğini doğrulamasına olanak tanıyan doğrulanabilir derlemeleri destekler. Anchor çerçevesi, doğrulanabilir derlemeler için yerleşik destek sağlar.

Dağıtılmış bir programın doğrulama durumunu kontrol etmek için program kimliğini Solana Explorer'da arayın veya Ellipsis Labs Solana Verifiable Build CLI'yi kullanarak zincir üzerindeki programları bağımsız olarak doğrulayın.

Yükleyici programlar

YükleyiciAdresYükseltilebilirAçıklama
Native LoaderNativeLoader1111111111111111111111111111111Yalnızca validator yazılım yükseltmesi ileYerleşik programlara (System, Vote, Stake) ve diğer yükleyicilere sahiptir
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Hayır (yükleyici yönetimi devre dışı)Eski programlar
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Hayır (yükleyici yönetimi devre dışı)Eski programlar
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Evet, yükseltme yetkisi ayarlanmışsaYeni dağıtılan tüm programlara sahiptir
Loader-v4LoaderV411111111111111111111111111111111111Evet, yetki ayarlanmışsaHenüz mainnet'te yayınlanmadı

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

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