Samenvatting
V0-transacties voegen Address Lookup Tables (ALTs) toe, waardoor accounts kunnen worden gerefereerd via 1-byte indices in plaats van 32-byte sleutels. Dit bespaart 31 bytes per ALT-opgelost account.
Solana ondersteunt twee transactieformaten: legacy en versioned (v0).
De validator bepaalt het formaat door de eerste byte van het bericht te inspecteren:
- Als de eerste byte de
versieprefix
bit heeft ingesteld, is het een versioned bericht. Momenteel wordt alleen
versie 0 ondersteund. De volgende 3 bytes zijn de
MessageHeader. - Anders is het een legacy bericht. De eerste byte is
num_required_signatures, en de volgende 2 bytes voltooien de header.
Wanneer V0-transacties gebruiken
Gebruik V0 wanneer je transactie naar veel accounts verwijst en de 1.232-byte pakketlimiet nadert. Als je transactie binnen de groottelimiet past met alle accounts inline, zijn legacy transacties eenvoudiger en hebben ze bredere tooling-ondersteuning. V0 is vereist om Address Lookup Tables te gebruiken.
V0-berichtformaat
Een v0-bericht heeft dezelfde velden als een legacy bericht, plus een extra
address_table_lookups-array toegevoegd na de instructies:
| Veld | Grootte | Beschrijving |
|---|---|---|
0x80 | 1 byte | Versieprefixbyte |
header | 3 bytes | MessageHeader (hetzelfde als legacy) |
static_account_keys | compact-u16 + N x 32 bytes | Sleutels die letterlijk in de transactie verschijnen |
recent_blockhash | 32 bytes | Blockhash |
instructions | compact-u16 + variabel | Hetzelfde formaat als legacy |
address_table_lookups | compact-u16 + variabel | ALT-referenties (zie hieronder) |
Elke adrestabel-opzoekvermelding bevat:
| Veld | Grootte | Beschrijving |
|---|---|---|
account_key | 32 bytes | De publieke sleutel van het ALT-account |
writable_indexes | compact-u16 + N x 1 byte | Indices in de ALT voor schrijfbare accounts |
readonly_indexes | compact-u16 + N x 1 byte | Indices in de ALT voor alleen-lezen accounts |
Adrestabel-opzoekresolutie
Een ALT is een on-chain account dat tot 256 publieke sleutels opslaat. Door naar een ALT te verwijzen, kan een transactie extra accounts opnemen met behulp van 1-byte indices in plaats van 32-byte publieke sleutels, wat de overhead per account aanzienlijk vermindert.
Tijdens runtime, voordat de uitvoering begint, lost de validator alle ALT-verwijzingen op naar volledige publieke sleutels. De opgeloste adressen worden toegevoegd aan de statische account sleutels om de volledige lijst met accountsleutels te vormen. ALT-opgeloste accounts volgen dezelfde volgorde als statische accounts: schrijfbare opzoekingen komen vóór alleen-lezen opzoekingen.
Adrestabel-opzoektabellen beïnvloeden alleen hoe accounts worden gerefereerd in de on-wire transactie. Tijdens uitvoering lost de runtime alle indices op naar volledige accountadressen. ALT-opgeloste accounts kunnen alleen schrijfbaar of alleen-lezen (niet-ondertekenaar) zijn; ze kunnen geen ondertekenaars zijn.
Is this page helpful?