Transakcje wersjonowane

Podsumowanie

Transakcje V0 wprowadzają Address Lookup Tables (ALT), umożliwiając odwoływanie się do kont za pomocą 1-bajtowych indeksów zamiast 32-bajtowych kluczy. Pozwala to zaoszczędzić 31 bajtów na każdym koncie rozpoznanym przez ALT.

Solana obsługuje dwa formaty transakcji: legacy oraz wersjonowany (v0).

Validator określa format, sprawdzając pierwszy bajt wiadomości:

  • Jeśli pierwszy bajt ma ustawiony prefiks wersji, to jest to wiadomość wersjonowana. Obecnie obsługiwana jest tylko wersja 0. Kolejne 3 bajty to MessageHeader.
  • W przeciwnym razie jest to wiadomość legacy. Pierwszy bajt to num_required_signatures, a kolejne 2 bajty uzupełniają nagłówek.

Kiedy używać transakcji V0

Używaj V0, gdy Twoja transakcja odwołuje się do wielu kont i zbliża się do limitu pakietu 1 232 bajtów. Jeśli transakcja mieści się w limicie rozmiaru ze wszystkimi kontami wpisanymi bezpośrednio, transakcje legacy są prostsze i mają szersze wsparcie narzędziowe. V0 jest wymagane do korzystania z Address Lookup Tables.

Format wiadomości V0

Wiadomość v0 ma te same pola co wiadomość legacy, plus dodatkową tablicę address_table_lookups dołączoną po instrukcjach:

PoleRozmiarOpis
0x801 bajtBajt prefiksu wersji
header3 bajtyMessageHeader (jak w legacy)
static_account_keyscompact-u16 + N x 32 bajtyKlucze występujące dosłownie w transakcji
recent_blockhash32 bajtyBlockhash
instructionscompact-u16 + zmiennaTen sam format co legacy
address_table_lookupscompact-u16 + zmiennaOdwołania ALT (patrz poniżej)

Każdy wpis w tabeli wyszukiwania adresów zawiera:

PoleRozmiarOpis
account_key32 bajtyKlucz publiczny konta ALT
writable_indexescompact-u16 + N x 1 bajtIndeksy do ALT dla kont z prawem zapisu
readonly_indexescompact-u16 + N x 1 bajtIndeksy do ALT dla kont tylko do odczytu

Rozwiązywanie tabeli wyszukiwania adresów

ALT to konto on-chain, które przechowuje do 256 kluczy publicznych. Odwołując się do ALT, transakcja może uwzględnić dodatkowe konta, używając 1-bajtowych indeksów zamiast 32-bajtowych kluczy publicznych, co znacząco zmniejsza narzut na każde konto.

W czasie wykonywania, zanim rozpocznie się egzekucja, validator rozwiązuje wszystkie odwołania do ALT na pełne klucze publiczne. Rozwiązane adresy są dołączane do statycznych kluczy kont, tworząc pełną listę kluczy kont. Konta rozwiązane przez ALT są uporządkowane tak samo jak konta statyczne: najpierw zapisywalne, potem tylko do odczytu.

Tabele wyszukiwania adresów wpływają jedynie na sposób odwoływania się do kont w transakcji przesyłanej w sieci. Podczas wykonywania, środowisko uruchomieniowe rozwiązuje wszystkie indeksy na pełne adresy kont. Konta rozwiązane przez ALT mogą być tylko zapisywalne lub tylko do odczytu (nie mogą być sygnatariuszami).

Is this page helpful?

Spis treści

Edytuj stronę

Zarządzane przez

© 2026 Solana Foundation.
Wszelkie prawa zastrzeżone.
Bądź na bieżąco