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 9 langkah, semua 9 instruksi loader-v3, verifikasi build, dan 5 jenis loader.

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
InitializeBufferMengatur 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 akun ProgramData melalui CPI ke System Program, memverifikasi dan men-deploy ELF dari buffer, mengatur state akun Program dan menandainya sebagai executable.
UpgradeMengganti bytecode dalam akun ProgramData program yang sudah ada dari buffer.
SetAuthorityMengubah authority akun Buffer atau ProgramData. Mengatur ke None pada ProgramData membuat program menjadi immutable. Authority buffer tidak dapat diatur ke None.
SetAuthorityCheckedSeperti SetAuthority, tetapi memerlukan authority baru untuk 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 pada slot saat ini.
ExtendProgramCheckedMemperluas alokasi akun ProgramData dengan byte tambahan, mendanai rent ekstra dari payer.
MigrateMemigrasikan program loader-v3 ke loader-v4 dengan mentransfer kepemilikan akun program dan menyalin bytecode. Memerlukan migration authority atau upgrade authority program untuk menandatangani. Loader-v4 belum dirilis di mainnet.

Memverifikasi program

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

Untuk memeriksa status verifikasi program yang telah di-deploy, cari program ID-nya di Solana Explorer, atau gunakan Ellipsis Labs Solana Verifiable Build CLI untuk memverifikasi program on-chain secara independen.

Program loader

LoaderAlamatDapat di-upgradeDeskripsi
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 diaturMemiliki semua program yang baru di-deploy
Loader-v4LoaderV411111111111111111111111111111111111Ya, jika authority diaturBelum dirilis di mainnet

Is this page helpful?

Daftar Isi

Edit Halaman

Dikelola oleh

© 2026 Yayasan Solana.
Semua hak dilindungi.
Terhubung