Resumo
O sysvar Instructions (Sysvar1nstructions1111111111111111111111111) permite
que um programa leia todas as instruções de nível superior na transação atual
por índice ou deslocamento relativo. Instruções internas de CPI não são
acessíveis.
Sysvar Instructions
Os programas podem inspecionar todas as instruções de nível superior na
transação atual através do sysvar Instructions
(Sysvar1nstructions1111111111111111111111111). Isto permite que um programa
inspecione as outras instruções na mesma transação, por exemplo, para verificar
se uma instrução específica está na mesma transação que a instrução que está a
executar.
O sysvar Instructions contém apenas instruções de nível superior da mensagem de transação. Instruções internas invocadas via CPI não são acessíveis através deste sysvar.
O sysvar instructions não é acedido através da trait normal Sysvar. Em vez
disso, é acedido através de funções livres na crate
solana_instructions_sysvar.
Os dados do sysvar são serializados com um layout binário personalizado:
| Deslocamento | Tamanho | Descrição |
|---|---|---|
| 0 | 2 | num_instructions (u16, little-endian) |
| 2 | 2 * N | Deslocamentos de byte para cada instrução (u16 cada) |
| varia | varia | Dados de instrução serializados |
| últimos 2 bytes | 2 | Índice da instrução atual (u16, little-endian) |
Cada instrução serializada contém: o número de contas (u16), as contas como entradas de 33 bytes (1 byte de flag + pubkey de 32 bytes), o ID do programa (32 bytes), o comprimento dos dados (u16) e os bytes de dados brutos.
Funções principais:
load_current_index_checked(account_info): Retorna o índice da instrução atualmente em execução. O runtime atualiza este valor cada vez que uma nova instrução de nível superior é iniciada.load_instruction_at_checked(index, account_info): Desserializa a instrução no índice absoluto fornecido.get_instruction_relative(offset, account_info): Carrega uma instrução relativa à atual (por exemplo,-1para a instrução anterior,1para a próxima).
Is this page helpful?