Triển khai chương trình

Tóm tắt

Các chương trình được triển khai qua loader-v3 có thể được nâng cấp khi có quyền nâng cấp được thiết lập. Thu hồi quyền này sẽ làm cho chương trình trở nên bất biến. Bao gồm cơ chế nâng cấp, hướng dẫn triển khai và nâng cấp loader-v3, xác minh bản dựng, và các chương trình loader có sẵn.

Triển khai chương trình

Nâng cấp chương trình

Để nâng cấp một chương trình, một tài khoản phải nắm giữ quyền nâng cấp (thường là tài khoản đã triển khai chương trình ban đầu). Trong quá trình triển khai hoặc nâng cấp, bytecode mới được tải lên một buffer account tạm thời, sau đó được ghi vào programdata account. Đặt quyền nâng cấp thành None sẽ khiến chương trình trở nên bất biến và ngăn chặn vĩnh viễn các cập nhật tiếp theo.

Cơ chế nâng cấp

Khi UpgradeableLoaderInstruction::Upgrade được xử lý, runtime sẽ:

  1. Xác minh program account có thể ghi và thuộc sở hữu của loader-v3.
  2. Xác minh buffer account chứa trạng thái Buffer với quyền chính xác.
  3. Xác minh upgrade_authority_address của programdata account khớp và không phải None.
  4. Xác minh chương trình chưa được triển khai trong slot hiện tại (clock.slot != slot).
  5. Tải và xác minh các byte ELF mới từ buffer.
  6. Sao chép bytecode mới từ buffer vào programdata account và đặt các byte còn lại về 0.
  7. Cấp vốn cho programdata account để miễn phí thuê.
  8. Rút cạn buffer account (đặt lamports về 0) và cắt bớt dữ liệu của nó.
  9. Phiên bản mới có hiệu lực trong slot tiếp theo (deployment_slot + 1).

Bản thân tài khoản Program (trạng thái và con trỏ programdata_address của nó) không thay đổi trong quá trình nâng cấp. Chỉ có bytecode và metadata slot của tài khoản ProgramData được cập nhật.

Tham chiếu lệnh Loader-v3

Loader-v3 (BPF Loader Upgradeable) là trình tải mặc định hiện tại để triển khai program trên Solana.

LệnhMô tả
InitializeBufferĐặt trạng thái của buffer account thành Buffer với quyền được chỉ định. Thất bại nếu đã được khởi tạo.
WriteGhi các byte tại vị trí được chỉ định trong buffer account. Quyền phải ký xác nhận.
DeployWithMaxDataLenTạo một chương trình mới: dẫn xuất địa chỉ ProgramData, tạo programdata account qua CPI đến System Program, xác minh và triển khai ELF từ buffer, đặt trạng thái của program account và đánh dấu là thực thi được.
UpgradeThay thế bytecode trong programdata account của chương trình hiện có từ một buffer.
SetAuthorityThay đổi quyền của Buffer hoặc ProgramData account. Đặt thành None trên ProgramData sẽ làm cho chương trình trở nên bất biến. Quyền của Buffer không thể được đặt thành None.
SetAuthorityCheckedGiống như SetAuthority, nhưng yêu cầu quyền mới cũng phải ký xác nhận giao dịch.
CloseĐóng buffer, chưa khởi tạo, hoặc ProgramData account bằng cách chuyển lamport của nó đến người nhận. Đóng ProgramData cũng ghi một dấu hiệu Closed vào bộ nhớ cache chương trình. Không thể đóng chương trình đã được triển khai trong slot hiện tại.
ExtendProgramCheckedMở rộng phân bổ của programdata account thêm số byte bổ sung, tài trợ rent bổ sung từ người thanh toán.

Xác minh chương trình

Solana hỗ trợ bản dựng có thể xác minh, cho phép người dùng xác nhận rằng bytecode onchain của chương trình khớp với mã nguồn công khai của nó. Framework Anchor cung cấp hỗ trợ tích hợp sẵn cho bản dựng có thể xác minh.

Để kiểm tra trạng thái xác minh cho một chương trình đã triển khai, hãy tìm kiếm ID chương trình của nó trên Solana Explorer, hoặc sử dụng Solana Verifiable Build CLI của Ellipsis Labs để xác minh độc lập các chương trình onchain.

Chương trình loader

LoaderĐịa chỉCó thể nâng cấpMô tả
Native LoaderNativeLoader1111111111111111111111111111111Chỉ thông qua nâng cấp phần mềm validatorSở hữu các builtin (System, Vote, Stake) và các loader khác
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Không (quản lý loader đã bị vô hiệu hóa)Chương trình cũ
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Không (quản lý loader đã bị vô hiệu hóa)Chương trình cũ
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Có, nếu quyền nâng cấp được thiết lậpSở hữu tất cả các chương trình mới triển khai

Is this page helpful?

Mục lục

Chỉnh sửa trang

Quản lý bởi

© 2026 Solana Foundation.
Đã đăng ký bản quyền.
Kết nối