Podsumowanie
Sysvar Instructions (Sysvar1nstructions1111111111111111111111111) pozwala
programowi odczytać wszystkie instrukcje najwyższego poziomu w bieżącej
transakcji według indeksu lub względnego przesunięcia. Wewnętrzne instrukcje
CPI są niedostępne.
Sysvar Instructions
Programy mogą analizować wszystkie instrukcje najwyższego poziomu w bieżącej
transakcji za pomocą sysvar Instructions
(Sysvar1nstructions1111111111111111111111111). Pozwala to programowi sprawdzić
inne instrukcje w tej samej transakcji, na przykład w celu weryfikacji, czy
określona instrukcja znajduje się w tej samej transakcji, w której wykonywana
jest bieżąca instrukcja.
Sysvar Instructions zawiera tylko instrukcje najwyższego poziomu z komunikatu transakcji. Wewnętrzne instrukcje wywoływane przez CPI są niedostępne przez ten sysvar.
Sysvar instructions nie jest dostępny przez standardowy trait Sysvar.
Zamiast tego korzysta się z wolnych funkcji w
solana_instructions_sysvar
crate.
Dane sysvar są serializowane w niestandardowym układzie binarnym:
| Przesunięcie | Rozmiar | Opis |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Bajtowe przesunięcia dla każdej instrukcji (po 2 bajty, u16) |
| zmienny | zmienny | Zserializowane dane instrukcji |
| ostatnie 2 bajty | 2 | Indeks bieżącej instrukcji (u16, little-endian) |
Każda zserializowana instrukcja zawiera: liczbę kont (u16), konta jako 33-bajtowe wpisy (1 bajt flagi + 32-bajtowy pubkey), program ID (32 bajty), długość danych (u16) oraz surowe bajty danych.
Kluczowe funkcje:
load_current_index_checked(account_info): Zwraca indeks aktualnie wykonywanej instrukcji. Środowisko uruchomieniowe aktualizuje tę wartość za każdym razem, gdy rozpoczyna się nowa instrukcja najwyższego poziomu.load_instruction_at_checked(index, account_info): Deserializuje instrukcję pod podanym bezwzględnym indeksem.get_instruction_relative(offset, account_info): Ładuje instrukcję względem bieżącej (np.-1dla poprzedniej instrukcji,1dla następnej).
Is this page helpful?