EN

Token-2022 Mint/Account + Extensiones

Las Mints y Token Accounts de Token-2022 comparten los diseños base de SPL Token y añaden funciones como bloques de extensión TLV posteriores a la base — un discriminador de 1 byte en el offset 165 distingue Mint de TokenAccount.

Token-2022 Program 165 bytes

Ejemplo: PYUSD (Token-2022)

(en caché; se actualiza cada hora · solo mainnet)

Mint Owner Amount Delegate Option Delegate (empty) State Is Native Native (reserved) Delegated Amount Close Authority Option Close Authority (empty) Account Type (Token-2022) MintCloseAuthority (header) Close Authority PermanentDelegate (header) Delegate TransferFeeConfig (header) Transfer Fee Config Authority Withdraw Withheld Authority Fee Config Data ConfidentialTransferMint (header) ConfidentialTransferMint ConfidentialTransferFee (header) ConfidentialTransferFee TransferHook (header) Hook Authority Hook Program ID MetadataPointer (header) Pointer Authority Metadata Address TokenMetadata (header) Update Authority Mint Name Symbol URI Data
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 01 00 00 00 6c 91 aa 49 65 90 12 f8 ab e9 61 ec
0010 24 b6 10 74 92 65 47 53 2f f0 94 ed 5b 69 39 82
0020 db 98 73 13 12 cd 38 46 01 a4 02 00 06 01 01 00
0030 00 00 17 85 32 61 ef 6a b8 53 2a 67 f0 53 86 5a
0040 ad 31 29 3f cf 07 cf 12 0a b5 b9 a1 57 06 54 8d
0050 c0 2b 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00a0 00 00 00 00 00 01 03 00 20 00 17 85 32 61 ef 6a
00b0 b8 53 2a 67 f0 53 86 5a ad 31 29 3f cf 07 cf 12
00c0 0a b5 b9 a1 57 06 54 8d c0 2b 0c 00 20 00 17 85
00d0 32 61 ef 6a b8 53 2a 67 f0 53 86 5a ad 31 29 3f
00e0 cf 07 cf 12 0a b5 b9 a1 57 06 54 8d c0 2b 01 00
00f0 6c 00 17 85 32 61 ef 6a b8 53 2a 67 f0 53 86 5a
0100 ad 31 29 3f cf 07 cf 12 0a b5 b9 a1 57 06 54 8d
0110 c0 2b 17 85 32 61 ef 6a b8 53 2a 67 f0 53 86 5a
0120 ad 31 29 3f cf 07 cf 12 0a b5 b9 a1 57 06 54 8d
0130 c0 2b 00 00 00 00 00 00 00 00 5d 02 00 00 00 00
0140 00 00 00 00 00 00 00 00 00 00 00 00 5d 02 00 00
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00
0160 41 00 17 85 32 61 ef 6a b8 53 2a 67 f0 53 86 5a
0170 ad 31 29 3f cf 07 cf 12 0a b5 b9 a1 57 06 54 8d
0180 c0 2b 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01a0 00 00 00 10 00 81 00 17 85 32 61 ef 6a b8 53 2a
01b0 67 f0 53 86 5a ad 31 29 3f cf 07 cf 12 0a b5 b9
01c0 a1 57 06 54 8d c0 2b 1c 37 e6 43 3b 73 04 dd 82
01d0 73 7a e4 0d 9b 8b f3 c4 9f 5b 0e 6c 49 a8 d5 33
01e0 28 b3 e5 06 90 1c 57 01 00 00 00 00 00 00 00 00
01f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0220 00 00 00 00 00 00 00 00 0e 00 40 00 17 85 32 61
0230 ef 6a b8 53 2a 67 f0 53 86 5a ad 31 29 3f cf 07
0240 cf 12 0a b5 b9 a1 57 06 54 8d c0 2b 00 00 00 00
0250 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0260 00 00 00 00 00 00 00 00 00 00 00 00 12 00 40 00
0270 17 85 32 61 ef 6a b8 53 2a 67 f0 53 86 5a ad 31
0280 29 3f cf 07 cf 12 0a b5 b9 a1 57 06 54 8d c0 2b
0290 17 92 48 3b 6c 8a 2a 87 b7 47 1d 81 4f 95 91 f9
02a0 39 5c 84 0a 9c e3 d9 f4 d5 ba 7d 3a 4b 8a 74 9e
02b0 13 00 ae 00 17 85 32 61 ef 6a b8 53 2a 67 f0 53
02c0 86 5a ad 31 29 3f cf 07 cf 12 0a b5 b9 a1 57 06
02d0 54 8d c0 2b 17 92 48 3b 6c 8a 2a 87 b7 47 1d 81
02e0 4f 95 91 f9 39 5c 84 0a 9c e3 d9 f4 d5 ba 7d 3a
02f0 4b 8a 74 9e 0a 00 00 00 50 61 79 50 61 6c 20 55
0300 53 44 05 00 00 00 50 59 55 53 44 4f 00 00 00 68
0310 74 74 70 73 3a 2f 2f 74 6f 6b 65 6e 2d 6d 65 74
0320 61 64 61 74 61 2e 70 61 78 6f 73 2e 63 6f 6d 2f
0330 70 79 75 73 64 5f 6d 65 74 61 64 61 74 61 2f 70
0340 72 6f 64 2f 73 6f 6c 61 6e 61 2f 70 79 75 73 64
0350 5f 6d 65 74 61 64 61 74 61 2e 6a 73 6f 6e 00 00
0360 00 00

Qué es

Token-2022 es un programa de tokens paralelo que mantiene los diseños base de Mint y TokenAccount idénticos byte a byte a SPL Token y añade funciones mediante extensiones. Una Mint de Token-2022 es propiedad de TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb en lugar de TokenkegQ…; todo lo demás sobre los primeros 82 bytes (Mint) o 165 bytes (TokenAccount) sigue el mismo camino de código.

Por qué existe

SPL Token se lanzó en 2020 con diseños de cuenta fijos. Añadir campos habría invalidado cada token existente en Solana, así que las nuevas funciones —comisiones de transferencia, acumulación de intereses, transferencias confidenciales, metadatos, transfer hooks, importes de UI escalados— llegaron en Token-2022 como extensiones TLV posteriores a la base. El compromiso es intencionado: los tokens de SPL Token permanecen estables para siempre, y las funciones nuevas viven en un programa nuevo al que exploradores y billeteras se adhieren.

Diseño de bytes

Offset Tamaño Campo Tipo Notas
0 82 o 165 base base SPL Token Idéntico byte a byte a Mint (82) o TokenAccount (165).
82 83 relleno (solo Mints) bytes a cero Las Mints se rellenan con ceros hasta 165 para que el discriminador quede en un offset fijo sin importar el tipo base.
165 1 account_type u8 enum 1 = Mint, 2 = TokenAccount. Única forma fiable on-chain de distinguirlos, ya que ambos ocupan 165 bytes antes de que empiecen las extensiones.
166 variable extensiones TLV[] Una entrada por extensión activa. Consulta el primer de diseño TLV para el formato de la cabecera de 4 bytes y el algoritmo de recorrido.

Una Mint de Token-2022 sin extensiones ocupa exactamente 166 bytes (82 base + 83 relleno + 1 discriminador). Cualquier tamaño mayor lleva extensiones adjuntas.

Dónde lo encuentras

Token-2022 es la capa detrás de una porción creciente de tokens regulados y con funciones avanzadas: PYUSD (la stablecoin de PayPal), el token BUIDL de BlackRock, tokens de activos del mundo real (RWA) con rendimiento, y la mayoría de los lanzamientos nuevos orientados a pagos. SPL Token sigue anclando la larga cola de memecoins y emisiones anteriores a 2024, así que billeteras e indexadores deben manejar ambos programas.

Errores comunes

  • El propietario del programa es la única señal de tipo fiable. Una cuenta de 200 bytes podría ser una Mint de Token-2022 con extensiones, una cuenta personalizada de un programa ajeno, o cualquier otra cosa. Lee primero accountInfo.owner — si es Tokenz…, los bytes siguen este diseño. El tamaño por sí solo no te dice nada.
  • Una Mint y una TokenAccount de Token-2022 pueden tener el mismo tamaño. Ambas comparten los offsets 0–164 tras el relleno de la Mint; el byte account_type en el offset 165 es el discriminador. Los decodificadores que infieren el tipo a partir del tamaño se equivocan con cualquier Mint que tenga aunque sea una pequeña extensión.
  • El diseño base usa el COption de SPL (etiqueta de 4 bytes). Las extensiones no — la mayoría usa OptionalNonZeroPubkey (32 bytes, todo a cero = None) o Option<T> de Borsh (etiqueta de 1 byte). Tres codificaciones opcionales coexisten en una sola cuenta de Token-2022; elige la equivocada y tu decodificador se desliza tres o cuatro bytes.
  • Las extensiones se añaden de forma incremental a nivel de programa, pero aparecen en un orden fijo on-chain. El programa Token-2022 las serializa en un orden estable determinado por el número de tipo de extensión, no por el orden de inicialización. Si escribes un decodificador que depende del orden de las extensiones, seguirá funcionando — pero no asumas que el orden por cuenta refleja la cronología del usuario.

Última verificación: 2026-05-19