Transacciones versionadas

Resumen

Las transacciones V0 añaden tablas de búsqueda de direcciones (ALTs), permitiendo referencias a cuentas mediante índices de 1 byte en lugar de claves de 32 bytes. Esto ahorra 31 bytes por cuenta resuelta mediante ALT.

Solana soporta dos formatos de transacción: legacy y versionadas (v0).

El validador determina el formato inspeccionando el primer byte del mensaje:

  • Si el primer byte tiene el prefijo de versión bit establecido, es un mensaje versionado. Actualmente solo se soporta la versión 0. Los siguientes 3 bytes son el MessageHeader.
  • De lo contrario, es un mensaje legacy. El primer byte es num_required_signatures, y los siguientes 2 bytes completan el encabezado.

Cuándo usar transacciones V0

Usa V0 cuando tu transacción referencie muchas cuentas y se acerque al límite de paquete de 1,232 bytes. Si tu transacción cabe dentro del límite de tamaño con todas las cuentas inline, las transacciones legacy son más simples y tienen mayor soporte de herramientas. V0 es requerido para usar tablas de búsqueda de direcciones.

Formato de mensaje V0

Un mensaje v0 tiene los mismos campos que un mensaje legacy, más un array adicional address_table_lookups añadido después de las instrucciones:

CampoTamañoDescripción
0x801 byteByte de prefijo de versión
header3 bytesMessageHeader (igual que legacy)
static_account_keyscompact-u16 + N x 32 bytesClaves que aparecen literalmente en la transacción
recent_blockhash32 bytesBlockhash
instructionscompact-u16 + variableMismo formato que legacy
address_table_lookupscompact-u16 + variableReferencias ALT (ver abajo)

Cada entrada de la tabla de búsqueda de direcciones contiene:

CampoTamañoDescripción
account_key32 bytesLa clave pública de la cuenta ALT
writable_indexescompact-u16 + N x 1 byteÍndices en la ALT para cuentas con permisos de escritura
readonly_indexescompact-u16 + N x 1 byteÍndices en la ALT para cuentas de solo lectura

Resolución de la tabla de búsqueda de direcciones

Una ALT es una cuenta on-chain que almacena hasta 256 claves públicas. Al referenciar una ALT, una transacción puede incluir cuentas adicionales usando índices de 1 byte en lugar de claves públicas de 32 bytes, reduciendo significativamente la sobrecarga por cuenta.

En tiempo de ejecución, antes de que comience la ejecución, el validador resuelve todas las referencias de ALT en claves públicas completas. Las direcciones resueltas se añaden a las claves de cuenta estáticas para formar la lista completa de claves de cuenta. Las cuentas resueltas por ALT siguen el mismo orden que las cuentas estáticas: las búsquedas con permisos de escritura vienen antes que las búsquedas de solo lectura.

Las tablas de búsqueda de direcciones solo afectan cómo se referencian las cuentas en la transacción transmitida. En tiempo de ejecución, el runtime resuelve todos los índices a direcciones de cuenta completas. Las cuentas resueltas por ALT solo pueden tener permisos de escritura o ser de solo lectura (no firmantes); no pueden ser firmantes.

Is this page helpful?

Tabla de Contenidos

Editar Página

Gestionado por

© 2026 Fundación Solana.
Todos los derechos reservados.
Conéctate