Versioned transactions

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:

VeldGrootteBeschrijving
0x801 byteVersieprefixbyte
header3 bytesMessageHeader (hetzelfde als legacy)
static_account_keyscompact-u16 + N x 32 bytesSleutels die letterlijk in de transactie verschijnen
recent_blockhash32 bytesBlockhash
instructionscompact-u16 + variabelHetzelfde formaat als legacy
address_table_lookupscompact-u16 + variabelALT-referenties (zie hieronder)

Elke adrestabel-opzoekvermelding bevat:

VeldGrootteBeschrijving
account_key32 bytesDe publieke sleutel van het ALT-account
writable_indexescompact-u16 + N x 1 byteIndices in de ALT voor schrijfbare accounts
readonly_indexescompact-u16 + N x 1 byteIndices 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?

Inhoudsopgave

Pagina Bewerken

Beheerd door

© 2026 Solana Foundation.
Alle rechten voorbehouden.
Blijf Verbonden