Ringkasan
Sysvar Instructions (Sysvar1nstructions1111111111111111111111111)
memungkinkan program membaca semua instruksi tingkat atas dalam transaksi saat
ini berdasarkan indeks atau offset relatif. Instruksi inner CPI tidak dapat
diakses.
Sysvar Instructions
Program dapat memeriksa semua instruksi tingkat atas dalam transaksi saat ini
melalui sysvar Instructions (Sysvar1nstructions1111111111111111111111111).
Hal ini memungkinkan program memeriksa instruksi lain dalam transaksi yang sama,
misalnya untuk memverifikasi bahwa instruksi tertentu berada dalam transaksi
yang sama dengan instruksi yang sedang dieksekusi.
Sysvar Instructions hanya berisi instruksi tingkat atas dari pesan transaksi. Instruksi inner yang dipanggil melalui CPI tidak dapat diakses melalui sysvar ini.
Sysvar instructions tidak diakses melalui trait Sysvar normal. Sebaliknya,
ia diakses melalui fungsi bebas dalam crate
solana_instructions_sysvar.
Data sysvar diserialisasi dengan tata letak biner khusus:
| Offset | Ukuran | Deskripsi |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Offset byte untuk setiap instruksi (u16 masing-masing) |
| bervariasi | bervariasi | Data instruksi yang diserialisasi |
| 2 byte terakhir | 2 | Indeks instruksi saat ini (u16, little-endian) |
Setiap instruksi yang diserialisasi berisi: jumlah akun (u16), akun sebagai entri 33-byte (1 byte flag + pubkey 32-byte), ID program (32 byte), panjang data (u16), dan byte data mentah.
Fungsi utama:
load_current_index_checked(account_info): Mengembalikan indeks dari instruksi yang sedang dieksekusi. Runtime memperbarui nilai ini setiap kali instruksi tingkat atas yang baru dimulai.load_instruction_at_checked(index, account_info): Mendeserialisasi instruksi pada indeks absolut yang diberikan.get_instruction_relative(offset, account_info): Memuat instruksi relatif terhadap instruksi saat ini (misalnya,-1untuk instruksi sebelumnya,1untuk instruksi berikutnya).
Is this page helpful?