Deployment program

Ringkasan

Program yang di-deploy melalui loader-v3 dapat di-upgrade ketika upgrade authority ditetapkan. Mencabut authority membuat program menjadi immutable. Mencakup mekanisme upgrade, instruksi deployment dan upgrade loader-v3, verifikasi build, dan program loader yang tersedia.

Melakukan deployment program

Melakukan upgrade program

Untuk meng-upgrade program, sebuah akun harus memiliki upgrade authority (biasanya akun yang awalnya melakukan deploy program). Selama deployment atau upgrade, bytecode baru diunggah ke akun buffer sementara, kemudian ditulis ke programdata account. Menetapkan upgrade authority ke None membuat program menjadi immutable dan secara permanen mencegah update lebih lanjut.

Mekanisme upgrade

Ketika UpgradeableLoaderInstruction::Upgrade diproses, runtime:

  1. Memverifikasi program account dapat ditulis dan dimiliki oleh loader-v3.
  2. Memverifikasi buffer account berisi state Buffer dengan authority yang benar.
  3. Memverifikasi upgrade_authority_address programdata account cocok dan bukan None.
  4. Memverifikasi program belum di-deploy dalam slot saat ini (clock.slot != slot).
  5. Memuat dan memverifikasi byte ELF baru dari buffer.
  6. Menyalin bytecode baru dari buffer ke programdata account dan mengosongkan byte yang tersisa.
  7. Mendanai programdata account hingga rent-exemption.
  8. Menguras buffer account (mengatur lamports ke 0) dan memotong datanya.
  9. Versi baru menjadi efektif di slot berikutnya (deployment_slot + 1).

Akun Program itu sendiri (state-nya dan pointer programdata_address) tidak berubah selama upgrade. Hanya bytecode akun ProgramData dan metadata slot yang diperbarui.

Referensi instruksi Loader-v3

Loader-v3 (BPF Loader Upgradeable) adalah loader default saat ini untuk men-deploy program di Solana.

InstruksiDeskripsi
InitializeBufferMenetapkan state akun buffer menjadi Buffer dengan authority yang ditentukan. Gagal jika sudah diinisialisasi.
WriteMenulis byte pada offset yang ditentukan dalam akun buffer. Authority harus menandatangani.
DeployWithMaxDataLenMembuat program baru: menurunkan alamat ProgramData, membuat programdata account ProgramData melalui CPI ke System Program, memverifikasi dan melakukan deploy ELF dari buffer, menetapkan state program account Program dan menandainya sebagai executable.
UpgradeMengganti bytecode dalam programdata account ProgramData program yang ada dari buffer.
SetAuthorityMengubah authority dari akun Buffer atau ProgramData. Menetapkan ke None pada ProgramData membuat program menjadi immutable. Authority buffer tidak dapat ditetapkan ke None.
SetAuthorityCheckedSeperti SetAuthority, tetapi mengharuskan authority baru juga menandatangani transaksi.
CloseMenutup akun buffer, uninitialized, atau ProgramData dengan mentransfer lamport-nya ke penerima. Menutup ProgramData juga menulis tombstone Closed ke cache program. Tidak dapat menutup program yang di-deploy dalam slot saat ini.
ExtendProgramCheckedMemperluas alokasi programdata account ProgramData dengan byte tambahan, mendanai rent ekstra dari payer.

Memverifikasi program

Solana mendukung verifiable builds, yang memungkinkan pengguna mengonfirmasi bahwa bytecode onchain program cocok dengan kode sumber publiknya. Framework Anchor menyediakan dukungan bawaan untuk verifiable builds.

Untuk memeriksa status verifikasi program yang telah dideploy, cari ID program tersebut di Solana Explorer, atau gunakan Solana Verifiable Build CLI dari Ellipsis Labs untuk memverifikasi program onchain secara independen.

Program loader

LoaderAlamatDapat DiupgradeDeskripsi
Native LoaderNativeLoader1111111111111111111111111111111Hanya melalui upgrade software validatorMemiliki builtins (System, Vote, Stake) dan loader lainnya
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Tidak (manajemen loader dinonaktifkan)Program legacy
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Tidak (manajemen loader dinonaktifkan)Program legacy
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Ya, jika upgrade authority ditetapkanMemiliki semua program yang baru dideploy

Is this page helpful?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2026 Yayasan Solana.
Semua hak dilindungi.
Terhubung