Tóm tắt
Instructions sysvar (Sysvar1nstructions1111111111111111111111111) cho phép
một chương trình đọc tất cả các instruction cấp cao nhất trong giao dịch hiện
tại theo chỉ mục hoặc độ lệch tương đối. Các instruction bên trong CPI không
thể truy cập được.
Instructions sysvar
Các chương trình có thể kiểm tra tất cả các instruction cấp cao nhất trong giao
dịch hiện tại thông qua Instructions sysvar
(Sysvar1nstructions1111111111111111111111111). Điều này cho phép một chương
trình kiểm tra các instruction khác trong cùng một giao dịch, ví dụ để xác minh
rằng một instruction cụ thể nằm trong cùng một giao dịch với instruction mà nó
đang thực thi.
Instructions sysvar chỉ chứa các instruction cấp cao nhất từ thông điệp giao dịch. Các instruction bên trong được gọi thông qua CPI không thể truy cập thông qua sysvar này.
Instructions sysvar không được truy cập thông qua trait Sysvar thông
thường. Thay vào đó, nó được truy cập thông qua các hàm tự do trong crate
solana_instructions_sysvar.
Dữ liệu sysvar được tuần tự hóa với bố cục nhị phân tùy chỉnh:
| Offset | Kích thước | Mô tả |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Độ lệch byte cho mỗi instruction (u16 mỗi cái) |
| thay đổi | thay đổi | Dữ liệu instruction đã tuần tự hóa |
| 2 byte cuối | 2 | Chỉ mục instruction hiện tại (u16, little-endian) |
Mỗi instruction đã tuần tự hóa chứa: số lượng tài khoản (u16), các tài khoản dưới dạng các mục 33 byte (1 byte cờ + 32 byte pubkey), program ID (32 byte), độ dài dữ liệu (u16), và các byte dữ liệu thô.
Các hàm chính:
load_current_index_checked(account_info): Trả về chỉ số của lệnh đang được thực thi hiện tại. Runtime cập nhật giá trị này mỗi khi một lệnh cấp cao nhất mới bắt đầu.load_instruction_at_checked(index, account_info): Giải mã hóa lệnh tại chỉ số tuyệt đối đã cho.get_instruction_relative(offset, account_info): Tải một lệnh tương đối so với lệnh hiện tại (ví dụ:-1cho lệnh trước đó,1cho lệnh tiếp theo).
Is this page helpful?