Decodificador BigSize/TLV

Decodifique inteiros BigSize e fluxos TLV do protocolo Lightning

O BigSize é a codificação de inteiros de tamanho variável usada pelo protocolo Lightning (BOLT 1). Valores pequenos (0–252) cabem em 1 byte; valores maiores usam prefixos 0xFD (2 bytes), 0xFE (4 bytes) ou 0xFF (8 bytes). O TLV (Type-Length-Value) empacota um tipo BigSize, um comprimento BigSize e o valor correspondente, formando a base das mensagens modernas da Lightning.

A ferramenta apenas decodifica bytes. Ela não interpreta semântica de tipos TLV, não valida regras de odd/even, não monta mensagens e não substitui um nó Lightning. Use valores fictícios.

Conteúdo

Ferramenta

Escolha o modo BigSize para decodificar um inteiro, ou TLV para decodificar uma sequência de registros Tipo-Comprimento-Valor. Cole os bytes em hexadecimal (sem 0x) ou clique em um exemplo.

Decodificador BigSize/TLV

Decodificador BigSize/TLV

Decodifica inteiros BigSize e fluxos TLV (BOLT 1) a partir de hexadecimal.

Sem 0x, apenas pares de caracteres hex. Ex.: fd0100 para BigSize 256.

Resultado da decodificação

Fonte primária

O BigSize e o formato TLV são definidos na BOLT 1 — Base Protocol. A seção Type-Length-Value especifica a codificação, as regras de odd/even para tipos (ímpares = opcionais/ignoráveis, pares = obrigatórios/conhecidos) e a ordem canônica (tipo crescente, sem duplicatas de tipos pares).

Codificação BigSize

Faixas da codificação BigSize
Valor mínimo Valor máximo Prefixo Bytes totais
0 252 Nenhum (valor direto) 1
253 65.535 0xFD 3
65.536 4.294.967.295 0xFE 5
4.294.967.296 2⁶⁴−1 0xFF 9

BigSize aparece em quase toda mensagem Lightning moderna: comprimentos de payload, tipos TLV, tamanhos de campos, channel_id v2, feature bits estendidos e short_channel_id em contexto TLV.

TLV (Type-Length-Value)

Um registro TLV é composto por:

[type: BigSize] [length: BigSize] [value: length bytes]

O tipo BigSize diz o que o valor significa (ex.: tipo 2 = amount_msat em um payload onion). O comprimento BigSize diz quantos bytes o valor ocupa. O valor são os bytes brutos. Vários TLV podem aparecer em sequência — a BOLT 1 exige ordem crescente de tipo (canônica) e sem duplicatas de tipos pares.

Tipos pares (even) são obrigatórios: quem recebe precisa entender. Tipos ímpares (odd) são opcionais: podem ser ignorados se desconhecidos — mesma regra dos feature bits.

Exemplos

BigSize: valor 0, 252 e 253

Hex: 00fc fd00fd
0       = 1 byte
252     = 1 byte
253     = 0xFD + 0x00FD (big-endian) = 3 bytes

BigSize: valor 65535 e 65536

Hex: fdffff fe00010000
65535   = 0xFD + 0xFFFF = 3 bytes
65536   = 0xFE + 0x00010000 = 5 bytes

TLV: tipo 1, comprimento 5, valor "hello"

Hex: 01 05 68656c6c6f
tipo 1 (BigSize 1 byte) | compr. 5 (BigSize 1 byte) | 68 65 6c 6c 6f ("hello" em ASCII)

TLV: múltiplos registros

Hex: 010568656c6c6f0203020301
TLV #1: tipo=1, compr.=5, valor="hello"
TLV #2: tipo=2, compr.=3, valor=0x020301

Limites da ferramenta

A ferramenta decodifica a estrutura, mas não valida: ordenação canônica, duplicatas, tipos reservados, ranges de valores semânticos, nem se o TLV faz sentido no contexto de uma mensagem específica. BigSize acima de 2⁵³−1 (não seguro para inteiro JS) é exibido como string. O modo TLV aceita qualquer sequência — mesmo que viole as regras de odd/even ou ordem canônica.

Mapa conceitual

Antes de usar esta ferramenta

Depois de usar esta ferramenta

Referências