Versionierte Transaktionen

Zusammenfassung

V0-Transaktionen fügen Address Lookup Tables (ALTs) hinzu, die Referenzen auf Konten über 1-Byte-Indizes anstelle von 32-Byte-Schlüsseln ermöglichen. Dies spart 31 Bytes pro ALT-aufgelöstem Konto.

Solana unterstützt zwei Transaktionsformate: Legacy und versioniert (v0).

Der Validator bestimmt das Format durch Prüfung des ersten Bytes der Nachricht:

  • Wenn das erste Byte das Versionspräfix-Bit gesetzt hat, handelt es sich um eine versionierte Nachricht. Derzeit wird nur Version 0 unterstützt. Die nächsten 3 Bytes sind der MessageHeader.
  • Andernfalls handelt es sich um eine Legacy-Nachricht. Das erste Byte ist num_required_signatures, und die nächsten 2 Bytes vervollständigen den Header.

Wann V0-Transaktionen verwendet werden sollten

Verwenden Sie V0, wenn Ihre Transaktion viele Konten referenziert und sich dem 1.232-Byte-Paketlimit nähert. Wenn Ihre Transaktion mit allen inline eingebetteten Konten innerhalb des Größenlimits passt, sind Legacy-Transaktionen einfacher und haben eine breitere Tooling-Unterstützung. V0 ist erforderlich, um Address Lookup Tables zu verwenden.

V0-Nachrichtenformat

Eine v0-Nachricht hat die gleichen Felder wie eine Legacy-Nachricht, plus ein zusätzliches address_table_lookups-Array, das nach den Anweisungen angehängt wird:

FeldGrößeBeschreibung
0x801 ByteVersionspräfix-Byte
header3 BytesMessageHeader (wie bei Legacy)
static_account_keyscompact-u16 + N x 32 BytesSchlüssel, die wörtlich in der Transaktion erscheinen
recent_blockhash32 BytesBlockhash
instructionscompact-u16 + variabelGleiches Format wie Legacy
address_table_lookupscompact-u16 + variabelALT-Referenzen (siehe unten)

Jeder Eintrag in der Adress-Lookup-Tabelle enthält:

FeldGrößeBeschreibung
account_key32 BytesDer öffentliche Schlüssel des ALT-Kontos
writable_indexescompact-u16 + N x 1 ByteIndizes in die ALT für beschreibbare Konten
readonly_indexescompact-u16 + N x 1 ByteIndizes in die ALT für schreibgeschützte Konten

Auflösung von Adress-Lookup-Tabellen

Eine ALT ist ein On-Chain-Konto, das bis zu 256 öffentliche Schlüssel speichert. Durch die Referenzierung einer ALT kann eine Transaktion zusätzliche Konten mithilfe von 1-Byte-Indizes anstelle von 32-Byte-öffentlichen Schlüsseln einbeziehen, wodurch der Overhead pro Konto erheblich reduziert wird.

Zur Laufzeit, vor Beginn der Ausführung, löst der Validator alle ALT-Referenzen in vollständige öffentliche Schlüssel auf. Die aufgelösten Adressen werden an die statischen Kontenschlüssel angehängt, um die vollständige Liste der Kontenschlüssel zu bilden. ALT-aufgelöste Konten folgen derselben Reihenfolge wie statische Konten: beschreibbare Lookups kommen vor schreibgeschützten Lookups.

Adress-Lookup-Tabellen beeinflussen nur, wie Konten in der On-Wire-Transaktion referenziert werden. Zur Ausführungszeit löst die Runtime alle Indizes in vollständige Kontenadressen auf. ALT-aufgelöste Konten können nur beschreibbar oder schreibgeschützt (nicht signierend) sein; sie können keine Signierer sein.

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten

Verwaltet von

© 2026 Solana Foundation.
Alle Rechte vorbehalten.
Verbinden Sie sich