Arquitetura da Lightning
Como Bitcoin, canais, transporte, mensagens, roteamento e invoices se encaixam
Lightning · Técnico
A Lightning não é uma blockchain nova nem um consenso paralelo. Ela é uma rede de contratos off-chain ancorados no Bitcoin, operada por peers que trocam mensagens, assinaturas e HTLCs. A arquitetura fica mais clara quando se separa o que é garantia on-chain, o que é protocolo entre peers e o que é política local de implementação.
As fontes primárias desta página são os BOLTs principais: BOLT 1, BOLT 2, BOLT 3, BOLT 4, BOLT 5, BOLT 7, BOLT 8, BOLT 9 e BOLT 11. BOLT 12 aparece aqui como evolução, não como requisito universal.
Conteúdo
Modelo mental
A forma mais segura de entender Lightning é imaginar três planos ao mesmo tempo:
- Plano Bitcoin: UTXOs, scripts, transações, taxas, mempool, confirmações, locktime e sequence.
- Plano de canal: mensagens entre dois peers, commitments locais/remotas, revogações, HTLCs e fechamento.
- Plano de rede: gossip, grafo público, roteamento onion, pathfinding, invoices, retries e política operacional.
fluxo conceitual de um pagamento:
recebedor:
cria invoice BOLT 11
inclui payment_hash, payment_secret, valor, expiração e features
pagador:
valida invoice
consulta grafo BOLT 7 e políticas locais
escolhe rota provável
calcula fees e CLTV acumulado de trás para frente
monta onion BOLT 4 com payload por hop
peers intermediários:
recebem update_add_htlc
verificam valor, CLTV, canal de saída e política local
encaminham novo HTLC sem conhecer rota completa
recebedor:
valida payload final e payment_secret
revela payment_preimage
rede de canais:
liquida o HTLC de volta até o pagador
atualiza commitments e revoga estados antigos Repare no ponto central: o pagamento parece instantâneo para o usuário, mas por baixo ele atravessa várias camadas. O Bitcoin fornece a saída de emergência; os canais fornecem atualização rápida de estado; o onion reduz vazamento de rota; e a busca de caminho tenta entregar algo com informação incompleta.
Descrição longa do diagrama
O diagrama mostra Bitcoin como camada de base. Acima dele ficam canais de pagamento, que dependem da funding transaction e das commitment transactions. Depois aparecem transporte criptografado e protocolo wire, responsáveis por carregar mensagens entre peers. Em seguida vem roteamento, composto por HTLCs, onion routing, gossip e busca de caminho. No topo estão invoices e pagamentos que o usuário enxerga.
Camadas arquiteturais
Esta tabela resume onde cada parte vive, quais BOLTs entram e que tipo de falha ela tenta limitar.
| Camada | Função | Fontes | Estado principal | Riscos típicos |
|---|---|---|---|---|
| Bitcoin on-chain | Ancora os fundos em UTXOs, scripts, assinaturas, taxas e confirmações. | BOLT 3, BOLT 5 | funding output, commitment transactions, closes | fee spike, reorg, pinning, eclipse, perda de watchtower |
| Canal entre dois peers | Mantém um contrato revogável entre duas chaves de nó. | BOLT 2, BOLT 3 | channel_id, balances, HTLCs, commitments | estado antigo, backup errado, desconexão, limites de HTLC |
| Transporte e wire | Cria sessão cifrada e carrega mensagens binárias tipadas. | BOLT 8, BOLT 1, BOLT 9 | Noise session, init, features, type/payload/TLV | feature incompatível, parser frágil, metadados de conexão |
| Roteamento | Encaminha pagamentos por canais que não pertencem ao pagador. | BOLT 2, BOLT 4, BOLT 7 | update_add_htlc, onion packet, channel_update, graph | falha de rota, liquidez remota desconhecida, probing, jamming |
| Pagamento | Liga invoice, payment hash, preimage, segredo do recebedor e liquidação final. | BOLT 11, BOLT 4 | invoice, payment_secret, payment_hash, preimage, MPP | invoice expirada, metadados, fallback, privacidade do destino |
| Política local | Escolhe canais, fees, peers, retries, backups e operação. | fora do consenso dos BOLTs | scores, liquidez, políticas, monitoramento | heurística ruim, centralização, indisponibilidade, custo on-chain |
A camada Bitcoin aparece em quase toda página técnica Lightning. Funding e fechamento são transações Bitcoin; scripts de commitment dependem de Script e witness; segurança contra estados antigos usa sequence/CSV; expiries de HTLC usam locktime/CLTV; e fechamento unilateral depende da mempool e de taxas.
Ciclo de vida
Uma implementação Lightning não executa uma única rotina chamada "pagar". Ela atravessa estados e subsistemas diferentes.
| Etapa | Mensagens ou dados | O que precisa dar certo |
|---|---|---|
| 1. Conectar | Noise handshake, init | Os nós autenticam a sessão, anunciam features e verificam se falam o mesmo conjunto mínimo de regras. |
| 2. Abrir canal | open_channel/accept_channel ou fluxo v2 | Os peers negociam parâmetros, chaves-base, limites, funding e formato de commitment. |
| 3. Ancorar no Bitcoin | funding_created, funding_signed, channel_ready | A funding transaction cria o UTXO 2-de-2; depois de confirmações, o canal fica utilizável. |
| 4. Atualizar estado | update_add_htlc, commitment_signed, revoke_and_ack | Cada mudança de saldo ou HTLC só fica segura quando assinaturas e revogações cruzam corretamente. |
| 5. Roteiar pagamento | onion payload, update_fulfill_htlc, update_fail_htlc | O pagador escolhe rota, monta onion, paga fees e CLTV por hop, e aprende com falhas. |
| 6. Fechar ou resolver | shutdown, closing_* ou transações on-chain | O canal fecha cooperativamente, unilateralmente ou por resolução de disputa na blockchain. |
estado de um canal:
funding output on-chain
-> commitment local
-> commitment remoto
-> HTLCs em voo
-> próxima atualização proposta
-> commitment_signed
-> revoke_and_ack do estado antigo
regra mental:
saldo Lightning não é um banco de dados global.
é um conjunto de transações assináveis, mensagens pendentes,
revogações e dados que precisam sobreviver a reconexões. Esse estado é local. Não existe um "saldo Lightning global" consultável na rede. Cada nó conhece seus próprios canais, vê o grafo público por gossip e infere o resto por tentativa, política e histórico.
Especificação vs política local
Os BOLTs definem interoperabilidade. Eles não definem toda a experiência de carteira, todo algoritmo de pathfinding, toda estratégia de liquidez ou toda política contra abuso.
| Área | Fonte normativa | Definido pelo protocolo | Escolha local |
|---|---|---|---|
| Consenso Bitcoin | não é BOLT Lightning | validade de blocos, transações, Script, witness, UTXO, locktime, sequence e assinatura | qual nó Bitcoin usar, quantos peers, política de mempool observada |
| Formato de mensagens | BOLT 1 | type de 2 bytes, payload, TLV, BigSize, regra par/ímpar e grupos de mensagens | estrutura interna do parser, logs, métricas, limites defensivos adicionais |
| Canais | BOLT 2/3/5 | mensagens, chaves, scripts, commitments, HTLCs, revogação e tratamento on-chain | quando abrir, com quem abrir, reservas extras, automação de fee bump e watchtower |
| Grafo público | BOLT 7 | channel_announcement, channel_update, node_announcement, SCID e validações | poda, scoring, preferência por peers, cache e interpretação de falhas |
| Pathfinding | BOLT 7 recomendações | fees e CLTV são dados do grafo; não há algoritmo único obrigatório | Dijkstra, Yen, randomização, shadow route, MPP, retries e penalização de canais |
| Invoice | BOLT 11 | Bech32, HRP, tagged fields, assinatura, payment_secret e feature bits | UX, expiração exibida, descrição sanitizada, tentativa de fallback e limites de valor |
Essa separação evita dois erros: tratar heurística de uma implementação como regra universal e, no sentido oposto, chamar de "detalhe de implementação" algo que é exigido para interoperabilidade.
Anatomia de um nó
Um nó Lightning completo costuma combinar vários módulos:
- Chaves e identidade: node id, chaves de funding, basepoints, chaves por commitment e armazenamento de segredos de revogação.
- Peer manager: conexões, Noise, init, ping/pong, reconnect e rate limits.
- Channel state machine: abertura, commitments, HTLCs, revogação, fechamento e retransmissão.
- Chain monitor: funding spends, confirmações, reorgs, unilateral closes, HTLC transactions e penalty transactions.
- Gossip store: channel_announcement, channel_update, node_announcement, SCIDs e poda local.
- Router/pathfinder: grafo, scores, fees, CLTV, liquidez estimada, retries, MPP e privacidade.
- Wallet e operação: UTXOs para abrir canais, fee bumping, backups, watchtower, métricas e políticas de liquidez.
Descrição longa do diagrama
O diagrama mostra camadas internas: Bitcoin e monitoramento de cadeia na base, estado de canais e commitments acima, mensagens e transporte entre peers, gossip para formar o grafo, busca de caminho e onion routing para pagamentos, e invoices no topo. As setas indicam dependência: roteamento depende do grafo, canal depende de mensagens e chain monitor, e tudo depende da capacidade de resolver disputas no Bitcoin.
Unidades e estado
A unidade contábil da Lightning é o millisatoshi (msat), a milésima parte de um satoshi. Isso permite representar micropagamentos e fees proporcionais menores que 1 satoshi por hop. Na blockchain, porém, saídas só existem em satoshis inteiros. Por isso a BOLT 3 precisa lidar com arredondamento, dust e trimming de outputs.
Regra útil: 1 BTC = 100.000.000 sat = 100.000.000.000 msat. Em commitments on-chain, valores abaixo de 1 satoshi não viram output Bitcoin.
Conversor de Millisatoshis
Mapa dos BOLTs
Os BOLTs são a camada de especificação que permite interoperabilidade entre LND, Core Lightning, Eclair e outras implementações. Eles não são "documentação de produto"; são contratos técnicos de mensagem, validação e comportamento mínimo.
| BOLT | Tema | Página relacionada | Papel arquitetural |
|---|---|---|---|
| BOLT 1 | Base protocol | Protocolo Wire | Define envelope de mensagem, TLV, BigSize, init, warning/error, ping/pong e regra par/ímpar. |
| BOLT 2 | Peer protocol | Operação de canais | Define abertura, operação normal, HTLCs, commitment_signed, revoke_and_ack, update_fee, fechamento e retransmissão. |
| BOLT 3 | Transações e scripts | Canais de pagamento | Define funding output, commitment transaction, HTLC outputs, anchors, dust, fees e derivação de chaves. |
| BOLT 4 | Onion routing | Roteamento onion | Define pacote Sphinx, hop payload TLV, failure onion, MPP e route blinding. |
| BOLT 5 | Tratamento on-chain | Segurança e privacidade | Recomenda como reagir a mutual close, unilateral close, revoked close e reorgs. |
| BOLT 7 | Gossip e roteamento | Gossip e busca de caminho | Define anúncios de nós/canais, channel_update, consultas de gossip, SCID, fees e CLTV delta. |
| BOLT 8 | Transporte | Transporte criptografado | Define Noise_XK, acts de handshake, framing cifrado, tamanho máximo e rotação de chaves. |
| BOLT 9 | Feature bits | Wire, invoices e gossip | Define bits opcionais/obrigatórios em init, node/channel announcements, invoices e channel_type. |
| BOLT 10 | DNS bootstrap | Arquitetura | Ajuda descoberta inicial de nós; não substitui gossip assinado nem validação on-chain. |
| BOLT 11 | Invoices | Pedidos de pagamento | Define invoice Bech32, HRP, valor, timestamp, tagged fields, assinatura e payment_secret. |
| BOLT 12 | Offers | Evolução | Evolução para pedidos reutilizáveis e fluxos modernos; não tratar como base universal. |
O caminho de leitura desta trilha segue essa arquitetura: comece por canais de pagamento, avance para operação de canais, depois onion, gossip, busca de caminho, invoices, wire, transporte, segurança e privacidade e mensagens do protocolo.
Implicações operacionais
A arquitetura explica por que operar Lightning é diferente de manter uma carteira on-chain simples:
- Disponibilidade importa: um nó precisa reagir a force closes, revogações, HTLC timeouts e reorgs.
- Liquidez tem direção: capacidade total não basta; pagamento depende de liquidez local, remota, inbound e outbound.
- Grafo não mostra saldo: gossip publica canais e políticas, mas não revela a distribuição atual de fundos.
- Fees existem em duas camadas: on-chain para funding/closing e off-chain para roteamento.
- Privacidade é parcial: onion limita informação por hop, mas timing, valores, gossip, peers diretos e probing ainda vazam dados.
- Backups são delicados: estado antigo de canal pode ser perigoso; backup de wallet não substitui estado de canal nem watchtower.
Armadilhas comuns
- Chamar Lightning de sidechain. Ela não tem bloco próprio nem consenso próprio; usa contratos Bitcoin e mensagens off-chain.
- Confundir capacidade com saldo gastável. Um canal de 1.000.000 sat pode ter pouca liquidez local para enviar.
- Assumir que pathfinding é especificado pelos BOLTs. Os dados de fee/CLTV são especificados; o algoritmo de escolha é política local.
- Tratar canal privado como invisível. Ele sai do gossip público, mas pode aparecer por routing hints, probing e relação direta com peers.
- Ignorar custos on-chain. O protocolo depende da possibilidade real de publicar e confirmar transações de resolução.
- Apresentar BOLT 12, splicing, dual funding ou Taproot channels como base universal. São evoluções importantes, mas suporte varia por implementação e versão.
Resumo
- A Lightning é uma rede de canais off-chain ancorados em UTXOs Bitcoin.
- Canais são máquinas de estado entre dois peers; pagamentos roteados são cadeias de HTLCs entre vários canais.
- BOLT 8 protege o link, BOLT 1 define o envelope, BOLT 2/3/5 definem canais e resolução, BOLT 4/7 definem roteamento, e BOLT 11 define invoices.
- Gossip mostra topologia pública e políticas, não saldos reais.
- Algoritmos de rota, scoring, liquidez e retries são heurísticas locais, não consenso da rede.
- A segurança final depende da capacidade de voltar para a blockchain com taxas e tempo suficientes.
Mapa de dependências conceituais
Antes de ler esta página
Depois desta página
- Canais de Pagamento a fundo
- Operação de Canais e Encaminhamento
- Gossip e o Grafo de Canais
- Busca de Caminho
- Segurança e Privacidade a fundo
Referências técnicas usadas
- BOLT 1 — Base Protocol
- BOLT 2 — Peer Protocol for Channel Management
- BOLT 3 — Bitcoin Transaction and Script Formats
- BOLT 4 — Onion Routing Protocol
- BOLT 5 — Recommendations for On-chain Transaction Handling
- BOLT 7 — P2P Node and Channel Discovery
- BOLT 8 — Encrypted and Authenticated Transport
- BOLT 9 — Assigned Feature Flags
- BOLT 10 — DNS Bootstrap and Assisted Node Location
- BOLT 11 — Invoice Protocol for Lightning Payments
- BOLT 12 — Offers
- Taxa de Transação
- Sequence
- Locktime
Com o mapa em mãos, o próximo passo é descer para a base da arquitetura: os canais de pagamento e suas transações de compromisso.