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)
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:
| 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
- Protocolo Wire e Mensagens, para entender onde o vetor de features aparece no fio.
- Gossip e o Grafo de Canais, contexto dos anúncios que carregam features.
Depois de usar esta ferramenta
- Mensagens Wire e TLV, para montar e desmontar mensagens que carregam o vetor.
- Arquitetura da Lightning, para localizar cada feature na pilha de protocolo.