Resumo
As transações V0 adicionam tabelas de pesquisa de endereços (ALTs), permitindo referências a contas através de índices de 1 byte em vez de chaves de 32 bytes. Isto poupa 31 bytes por conta resolvida por ALT.
A Solana suporta dois formatos de transação: legado e versionado (v0).
O validator determina o formato ao inspecionar o primeiro byte da mensagem:
- Se o primeiro byte tiver o
prefixo de versão
bit definido, é uma mensagem versionada. Atualmente apenas a versão 0 é
suportada. Os próximos 3 bytes são o
MessageHeader. - Caso contrário, é uma mensagem legada. O primeiro byte é
num_required_signatures, e os próximos 2 bytes completam o cabeçalho.
Quando usar transações V0
Use V0 quando a sua transação referenciar muitas contas e se aproximar do limite de pacote de 1.232 bytes. Se a sua transação couber dentro do limite de tamanho com todas as contas inline, as transações legadas são mais simples e têm suporte de ferramentas mais amplo. V0 é necessário para usar tabelas de pesquisa de endereços.
Formato de mensagem V0
Uma mensagem v0 tem os mesmos campos que uma mensagem legada, mais um array
adicional address_table_lookups anexado após as instruções:
| Campo | Tamanho | Descrição |
|---|---|---|
0x80 | 1 byte | Byte de prefixo de versão |
header | 3 bytes | MessageHeader (igual ao legado) |
static_account_keys | compact-u16 + N x 32 bytes | Chaves que aparecem literalmente na transação |
recent_blockhash | 32 bytes | Blockhash |
instructions | compact-u16 + variável | Mesmo formato que o legado |
address_table_lookups | compact-u16 + variável | Referências ALT (ver abaixo) |
Cada entrada da tabela de pesquisa de endereços contém:
| Campo | Tamanho | Descrição |
|---|---|---|
account_key | 32 bytes | A chave pública da conta ALT |
writable_indexes | compact-u16 + N x 1 byte | Índices na ALT para contas graváveis |
readonly_indexes | compact-u16 + N x 1 byte | Índices na ALT para contas somente leitura |
Resolução da tabela de pesquisa de endereços
Uma ALT é uma conta on-chain que armazena até 256 chaves públicas. Ao referenciar uma ALT, uma transação pode incluir contas adicionais usando índices de 1 byte em vez de chaves públicas de 32 bytes, reduzindo significativamente a sobrecarga por conta.
Em tempo de execução, antes do início da execução, o validator resolve todas as referências ALT em chaves públicas completas. Os endereços resolvidos são anexados às chaves de conta estáticas para formar a lista completa de chaves de conta. As contas resolvidas por ALT seguem a mesma ordenação das contas estáticas: pesquisas graváveis vêm antes das pesquisas somente leitura.
As tabelas de pesquisa de endereços afetam apenas como as contas são referenciadas na transação transmitida. Em tempo de execução, o runtime resolve todos os índices para endereços de conta completos. As contas resolvidas por ALT podem ser apenas graváveis ou somente leitura (não signatárias); elas não podem ser signatárias.
Is this page helpful?