Glossário / Lightning e camada 2
Anúncio de canal
- O que é um anúncio de canal?
- Um anúncio de canal é a mensagem de gossip assinada que informa à rede Lightning que existe um canal público, provando a propriedade da saída de financiamento com quatro assinaturas.
Todo canal Lightning público entra no grafo de roteamento por meio de um desses, e só pode existir um anúncio válido por canal. Ele não pode ser enviado até que a transação de financiamento tenha seis confirmações, e os pares esquecem o canal 72 blocos depois que a saída é gasta. Anunciar custa privacidade, porque a mensagem publica a saída on-chain que financia seu canal e a associa à chave do seu nó.
Como funciona
Um anúncio de canal é caro de falsificar, e esse é justamente o objetivo do desenho.
O gossip é gratuito para enviar, então um nó poderia, de outra forma, inundar a rede com canais imaginários. O BOLT 7 impede isso ao tornar toda afirmação verificável contra a blockchain. A mensagem, do tipo 256, nomeia um short_channel_id que aponta para uma saída específica: três bytes de altura de bloco, três de índice de transação e dois de índice de saída. Um nó que a recebe consulta essa saída e descarta o anúncio, a menos que ela seja um P2WSH não gasto que pague às duas chaves Bitcoin indicadas.
Quatro assinaturas vêm à frente. Duas vêm das chaves de identidade dos nós, e duas das chaves de financiamento que controlam a saída on-chain, bitcoin_key_1 e bitcoin_key_2. As quatro assinam o mesmo hash duplo SHA256, calculado do deslocamento de byte 256 até o fim da mensagem. Associar as chaves de nó às chaves Bitcoin prova que os dois nós que anunciam o canal são as duas partes que o financiaram, e não estranhos apontando para a saída de outra pessoa. node_id_1 também deve ser a menor, em ordem lexicográfica, das duas chaves comprimidas, e um nó que recebe o anúncio deve ignorar qualquer anúncio que inverta essa ordem.
Anunciar é opcional, definido pelo bit announce_channel quando o canal é aberto. Se estiver ativado, os pares trocam announcement_signatures (tipo 259) assim que a transação de financiamento estiver suficientemente profunda, e qualquer um dos lados pode então transmitir o resultado. Um splice produz um anúncio novo para a nova transação, e é por isso que os nós esperam 72 blocos depois que uma saída de financiamento é gasta antes de esquecer o canal: o gasto pode ser um redimensionamento e não um fechamento.
Onde você o encontra
Os anúncios de canal são o que um explorador Lightning lê quando desenha o grafo da rede.
O identificador impresso ao lado de cada canal vem direto da mensagem. Um short_channel_id escrito como 539268x845x1 significa a saída 1 da transação no índice 845 no bloco 539268, então qualquer pessoa pode conferir essa saída on-chain. O anúncio não carrega nada parecido com uma listagem: nem taxa, nem capacidade, nem nome do operador. Um canal não é utilizável até que ao menos um dos lados envie um channel_update com suas taxas e seu delta de expiração, e o nome do nó chega separadamente em um node_announcement.
Essa separação explica por que canais desaparecem dos exploradores embora continuem existindo. Se o channel_update mais recente em qualquer uma das direções tiver mais de duas semanas (1209600 segundos), um nó pode podar o canal de sua visão. Um anúncio nunca é renovado por si só, então um canal permanece no mapa apenas enquanto um operador continua reassinando seus termos.
Do lado da carteira, você encontra os anúncios de canal principalmente por sua ausência. Um canal só precisa ser anunciado se você quiser que estranhos encaminhem pagamentos por ele, e uma carteira de celular existe para gastar e receber, não para ser um salto. É por isso que as questões práticas em nossas análises da Phoenix e da Muun são a tabela de taxas publicada e o arquivo de backup, e não uma posição no grafo público.
Anúncio de canal vs capacidade do canal
Um anúncio de canal prova que um canal existe, enquanto a capacidade do canal é o número de satoshis dentro dele, e a mensagem não informa valor algum. Seus campos são quatro assinaturas, um vetor de recursos, um hash da cadeia, o ID curto de canal e quatro chaves públicas. Quem cita um número de capacidade juntou o anúncio aos dados da cadeia, lendo o valor da saída que o identificador aponta. É por isso que um canal não anunciado tem capacidade mas nenhum número público: nada diz à rede qual saída ler.