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. Yükseltme mekanizmasını, loader-v3 dağıtım ve yükseltme talimatlarını, yapı doğrulamasını ve kullanılabilir yükleyici programları 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 ofsette bayt yazar. Yetkinin imzalaması gerekir.
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 ayarlanması programı değiştirilemez hale getirir. Buffer yetkisi None olarak ayarlanamaz.
SetAuthorityCheckedSetAuthority gibidir, ancak yeni yetkinin de işlemi imzalamasını gerektirir.
CloseLamport'larını bir alıcıya aktararak bir buffer, başlatılmamış veya ProgramData hesabını kapatır. ProgramData'nın kapatılması aynı zamanda program önbelleğine bir Closed mezar taşı yazar. Mevcut slot'ta dağıtılmış bir program kapatılamaz.
ExtendProgramCheckedProgramData hesabının tahsisini ek baytlarla genişletir ve ekstra rent'i ödeyenden finanse eder.

Programları doğrulama

Solana, kullanıcıların bir programın zincir üstü bayt kodunun halka açık kaynak koduyla eşleştiğini doğrulamalarını sağlayan doğrulanabilir yapıları destekler. Anchor framework'ü, doğrulanabilir yapılar 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 zincir üzerindeki programları bağımsız olarak doğrulamak için Ellipsis Labs Solana Verifiable Build CLI aracını kullanı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 ayarlandıysaYeni dağıtılan tüm programlara sahiptir

Is this page helpful?

İçindekiler

Sayfayı Düzenle

Yönetici

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