Транзакции с версией

Кратко

Транзакции V0 добавляют Address Lookup Tables (ALT), что позволяет ссылаться на аккаунты по 1-байтовым индексам вместо 32-байтовых ключей. Это экономит 31 байт на каждый аккаунт, разрешённый через ALT.

Solana поддерживает два формата транзакций: legacy и версионный (v0).

Validator определяет формат, анализируя первый байт сообщения:

  • Если в первом байте установлен префикс версии, это версионное сообщение. В настоящее время поддерживается только версия 0. Следующие 3 байта — это MessageHeader.
  • В противном случае это legacy-сообщение. Первый байт — num_required_signatures, а следующие 2 байта завершают заголовок.

Когда использовать транзакции V0

Используйте V0, если ваша транзакция ссылается на множество аккаунтов и приближается к лимиту пакета в 1232 байта. Если ваша транзакция помещается в лимит размера со всеми аккаунтами внутри, legacy-транзакции проще и поддерживаются большим количеством инструментов. Для использования Address Lookup Tables требуется V0.

Формат сообщения V0

Сообщение v0 содержит те же поля, что и legacy-сообщение, плюс дополнительный массив address_table_lookups, добавленный после инструкций:

ПолеРазмерОписание
0x801 байтБайт префикса версии
header3 байтаMessageHeader (как в legacy)
static_account_keyscompact-u16 + N × 32 байтаКлючи, которые явно присутствуют в транзакции
recent_blockhash32 байтаBlockhash
instructionscompact-u16 + переменныйТакой же формат, как в legacy
address_table_lookupscompact-u16 + переменныйСсылки на ALT (см. ниже)

Каждая запись в таблице поиска адресов содержит:

ПолеРазмерОписание
account_key32 байтаПубличный ключ ALT аккаунта
writable_indexescompact-u16 + N x 1 байтИндексы в ALT для записей с правом записи
readonly_indexescompact-u16 + N x 1 байтИндексы в ALT для записей только для чтения

Разрешение таблицы поиска адресов

ALT — это ончейн-аккаунт, который хранит до 256 публичных ключей. Ссылаясь на ALT, транзакция может включать дополнительные аккаунты, используя однобайтовые индексы вместо 32-байтовых публичных ключей, что значительно снижает накладные расходы на каждый аккаунт.

Во время выполнения, до начала исполнения, validator разрешает все ссылки на ALT в полные публичные ключи. Разрешённые адреса добавляются к статическим ключам аккаунтов для формирования полного списка ключей аккаунтов. Аккаунты, разрешённые через ALT, следуют тому же порядку, что и статические аккаунты: сначала идут записи с правом записи, затем только для чтения.

Таблицы поиска адресов влияют только на то, как аккаунты указываются в транзакции на проводе. Во время исполнения рантайм разрешает все индексы в полные адреса аккаунтов. Аккаунты, разрешённые через ALT, могут быть только с правом записи или только для чтения (не подписанты); они не могут быть подписантами.

Is this page helpful?

Содержание

Редактировать страницу

Управляется

© 2026 Solana Foundation.
Все права защищены.
Связаться с нами