Feature Bits (BOLT 9)

Decodifique o vetor de funcionalidades que um nó Lightning anuncia

Os feature bits são um vetor de bits que cada nó Lightning inclui na mensagem init e nos anúncios de canal e nó. Cada bit representa uma funcionalidade que o nó suporta. A convenção da BOLT 9 diz: bits pares (even) marcam funcionalidades obrigatórias — a contraparte precisa entender aquilo para se comunicar; bits ímpares (odd) marcam funcionalidades opcionais — podem ser ignoradas se desconhecidas.

A ferramenta apenas decodifica o vetor em hexadecimal. Não cole seed, mnemonic, chave privada, macaroon, senha nem dados reais de nó em ferramentas didáticas de navegador.

Conteúdo

Ferramenta

Cole o vetor em hexadecimal big-endian (como aparece no fio) ou clique em um exemplo para carregar automaticamente.

Bits de Funcionalidades (BOLT 9)

Bits de Funcionalidades (BOLT 9)

As mensagens init e os anúncios carregam um vetor de bits que diz o que um nó suporta. Cole o vetor em hex.

Use bytes big-endian, como aparecem na mensagem.

Exemplos:

Resultado dos feature bits

Fonte primária

A definição completa dos feature bits, incluindo a convenção par/ímpar, a atribuição de bits por funcionalidade e as regras de negociação, está na BOLT 9 — Assigned Feature Bits. As mensagens que carregam o vetor são init (BOLT 1), channel_announcement e node_announcement (BOLT 7).

Convenção par/ímpar

A BOLT 9 define que cada funcionalidade ocupa dois bits consecutivos. O bit par (even) é o bit obrigatório: se está ligado, a contraparte precisa entender aquela funcionalidade. O bit ímpar (odd) é o bit opcional: se está ligado, a contraparte pode ignorá-lo se não conhecer o significado. As regras práticas:

Interpretação dos bits de uma funcionalidade
Bit par (even) Bit ímpar (odd) Significado
0 0 Funcionalidade não suportada.
0 1 Suporte opcional: o nó pode usar, a contraparte pode ignorar.
1 0 Suporte obrigatório: a contraparte precisa entender ou a conexão é inviável.
1 1 Inconsistente — o emissor não deveria ligar os dois. O receptor trata como obrigatório.

Na prática, a maioria dos nós anuncia apenas o bit ímpar (opcional) da maioria das features. Um bit par ligado significa que o nó exige aquilo do outro lado — o que é raro para funcionalidades que não sejam universais (como var_onion_optin).

Exemplos de vetores

Nó mínimo — apenas onion

Hex: 2200
  Bits: 8 (var_onion_optin, opcional) e 12 (option_static_remotekey, opcional)

Um nó que suporta onion routing (bit 9) e chave remota estática (bit 13) — os bits pares (8, 12) estão ligados, ou seja, ele exige que a contraparte também suporte ambas. Isso é comum para essas features porque hoje são essenciais para a rede funcionar.

Nó com suporte a pagamentos modernos

Hex: 028000
  Bits: 14 (payment_secret, opcional) e 16 (basic_mpp, opcional)

O nó entende payment_secret (BOLT 4, anti-probing) e basic_mpp (pagamento multi-parte). Ambos como opcionais — não rejeita nós que não os suportam.

Anchors opcional

Hex: 800000
  Bits: 22 (option_anchors, opcional) e 23 (option_anchors, obrigatório — não, é o bit par)

Neste exemplo, o bit 23 (opcional) está ligado, significando que o nó pode usar anchor outputs (BOLT 3) em commitment transactions, mas não exige.

Par duplicado (inconsistente)

Hex: c000
  Bits: 14 (payment_secret, obrigatório) e 15 (payment_secret, opcional)
  ⚠️ Aviso: par com bit opcional e obrigatório ativos: 14/15.

O nó ligou tanto o bit 14 (obrigatório) quanto o 15 (opcional) da mesma funcionalidade. A BOLT 9 diz que o receptor deve tratar como obrigatório, mas o emissor não deveria enviar ambos. Esse cenário é raro em nós reais, mas a ferramenta o detecta e avisa.

Limites da ferramenta

A ferramenta interpreta o vetor hexadecimal e exibe os nomes das funcionalidades conhecidas (até bit 63). Ela não valida se o vetor veio de uma mensagem real, não negocia conexão, não monta mensagem init, não verifica consistência entre channel_announcement e node_announcement e não substitui um nó real da rede. Bits acima de 63 são exibidos como "reservado/desconhecido".

Mapa conceitual

Antes de usar esta ferramenta

Depois de usar esta ferramenta

Referências