Pular para o conteúdo
buybitcoinsmart

Glossário / Lightning e camada 2

Rota cega

O que é uma rota cega?
Uma rota cega é uma rota até um nó da Lightning Network em que o destinatário substitui a chave pública de cada salto por uma chave ajustada, de modo que o remetente nunca descobre o destino real.

O destinatário constrói o caminho e o entrega, de modo que o pagador roteia até um ponto de introdução público e não além dele. Uma fatura BOLT 12 é rejeitada se não carregar nenhuma rota cega, e os saltos cegados compartilham com o restante da rota a carga útil fixa de 1300 bytes da cebola. Se você publica um destino Lightning, o cegamento mantém o id do seu nó fora dele.

Como funciona

Uma rota cega é construída de trás para frente, pelo nó que quer ser alcançado, e não pelo nó que paga.

O destinatário começa com uma rota real até si mesmo e uma chave efêmera aleatória, a partir da qual deriva uma cadeia de chaves de caminho dispostas de modo que cada salto consiga calcular a seguinte sem que ninguém a informe. Cada salto acaba compartilhando um segredo ECDH com o destinatário, e desse segredo saem duas coisas. A primeira é um fator de cegamento, o HMAC da string blinded_node_id sob o segredo compartilhado, que o destinatário multiplica pela chave pública desse salto. O salto ainda consegue assinar o resultado, porque deriva o mesmo fator e o aplica à própria chave privada, mas ninguém mais consegue casar essa chave com o grafo publicado. A segunda é uma chave de criptografia, usada para selar um pequeno bloco de instruções para esse salto com ChaCha20-Poly1305 sob um nonce todo de zeros.

O que é publicado é curto: o ponto de introdução em claro, uma chave de caminho inicial e depois uma lista de chaves ajustadas, cada uma emparelhada com seu bloco selado. Dentro de um bloco estão os campos que esse salto lê: short_channel_id ou next_node_id para onde o pagamento segue, payment_relay para a taxa e o delta de CLTV que ele deve aplicar, payment_constraints para uma expiração máxima e um tamanho mínimo de HTLC, preenchimento e, no último salto, um path_id.

Três dessas escolhas são defensivas, não funcionais. O destinatário, e não o pagador, fixa a taxa e o timelock de cada salto cegado, de modo que um nó intermediário não pode aumentar seu preço no meio da rota e observar quais pagamentos falham. Ele preenche todos os blocos até um mesmo comprimento e pode acrescentar saltos fictícios que depois descarta, de modo que o comprimento real não seja legível pela forma. E o path_id contém dados privados, a pré-imagem por exemplo, para que o destinatário possa confirmar um caminho que ele mesmo construiu em vez de aceitar um que um atacante disparou contra cada nó de que suspeita.

O BOLT 12 acrescenta uma última peça de camuflagem. Em vez de uma taxa por salto cegado, uma fatura carrega exatamente um blinded_payinfo por caminho: uma taxa base em milisatoshis, uma taxa proporcional em milionésimos, um delta de CLTV agregado, um tamanho mínimo e máximo de HTLC e um vetor de recursos. A razão declarada é que o detalhe por salto revelaria trivialmente uma falta de uniformidade que distinguiria o caminho.

Por que isso importa quando você compra bitcoin

Os caminhos cegos mudam o que o meio da rede Lightning aprende sobre você, e não mudam nada sobre o que o seu próprio primeiro salto aprende.

O cegamento de rotas oculta os saltos após o ponto de introdução e não diz nada sobre o nó pelo qual sua carteira se conecta, que é o que vê seus valores e destinos. A Phoenix, que nossa classificação coloca em 4,0 entre nossas 41 análises de carteiras, é incomumente honesta quanto a isso: as próprias perguntas frequentes da ACINQ dizem que a carteira não oferece nenhuma vantagem de privacidade em relação a uma carteira custodial hospedada e que a ACINQ conhece o destino final e o valor dos pagamentos. Um caminho cego em uma oferta que você paga não mexe nisso.

A custódia elimina a questão por completo. A Wallet of Satoshi, que nossa classificação coloca em 2,7 e marca com um aviso, guarda as chaves em seu modo custodial, então as duas pontas de um pagamento são registros dela; ela deixou de atender clientes dos Estados Unidos em 23 de novembro de 2023 e desde então encerrou o serviço custodial em toda a União Europeia. Nada seu fica cego quando o pagamento nunca sai dos livros do provedor.

Onde o cegamento traria algum benefício a você é no próprio saque. A Strike, a plataforma com foco em Lightning com a melhor classificação neste site, com 4,6, não acrescenta taxa própria nas transferências e paga a um destino Lightning que você informar. Entregue a ela uma fatura BOLT 11 e você entrega seu nó: a assinatura carrega um id de recuperação, então a chave do beneficiário pode ser recuperada a partir dela. Uma oferta coloca ali, em vez disso, um ponto de introdução, onde quer que o pagador aceite uma.

O custo é de diagnóstico. Saltos dentro de um caminho cego retornam falhas sem dados de atribuição, e o ponto de introdução é instruído a acrescentar um atraso aleatório antes de repassar um erro, de modo que o teste não consiga medir a que distância está o destinatário. Por isso, um saque que falha para um destino cego quase não diz nada, então teste-o a partir de uma carteira que você controla antes de culpar a plataforma.

Dave entrega a Alice um caminho através de Bob e Carol

A especificação da Lightning desenvolve a ideia do caminho cego com quatro nomes, o que é mais rápido de acompanhar do que a álgebra.

Dave quer ser pago sem que Alice saiba que é ele. Ele escolhe uma rota até si mesmo através de dois nós públicos, primeiro Bob e depois Carol, e constrói a cadeia de chaves de caminho para que os três derivem a sua. Depois sela três blocos: um que diz a Bob para encaminhar a Carol, um que diz a Carol para encaminhar a ele e um para si mesmo com metadados e o path_id. Por fim, deriva os fatores que transformam Bob em Bob linha, Carol em Carol linha e Dave em Dave linha.

Alice recebe três linhas: o primeiro nó é Bob, aqui está a primeira chave de caminho, e aqui está a sequência Bob linha, Carol linha, Dave linha, com um bloco selado junto a cada uma. Ela chega a Bob pelo grafo público comum, o que é deliberado: a especificação recomenda um trecho não cego até o ponto de introdução, porque não precisa de apoio dos nós intermediários e retorna erros que podem ser lidos. Bob abre seu bloco, fica sabendo apenas que Carol é a próxima, e repassa a chave de caminho derivada junto com a cebola. Carol usa essa chave duas vezes: uma para ajustar a cebola, que Alice criptografou para Carol linha e não para Carol, e outra para abrir seu próprio bloco. Dave a recebe por último e verifica o path_id antes de aceitar.

Conte o que cada um acaba sabendo. Alice conhece Bob. Bob sabe que é um ponto de introdução e que Carol é a próxima. Carol sabe que um pagamento cego passou por ela e não consegue dizer se Dave é o destinatário ou outro retransmissor. Dave sabe tudo, porque é o único que o construiu.

Rota cega vs dica de rota

Um caminho cego e uma dica de rota respondem à mesma pergunta, como chegar a um nó que o grafo público não consegue ver, e revelam quantidades opostas ao fazê-lo.

Uma dica de rota é o campo r de uma fatura BOLT 11, e é texto claro. Cada entrada carrega uma chave pública de 264 bits, um id curto de canal de 64 bits, uma taxa base, uma taxa proporcional e um delta de CLTV, tudo em claro, então qualquer um que tenha a fatura sabe de qual nó bem conectado você depende. Um caminho cego nomeia o ponto de introdução e depois escurece: cada salto posterior é uma chave ajustada que não casa com nada no grafo, e as taxas chegam agregadas em vez de detalhadas. Os caminhos cegos também assumem uma tarefa que as dicas de rota nunca tiveram: fazer as vezes dos campos payment_secret e payment_metadata de uma fatura BOLT 11.

Rota cega vs roteamento cebola

O roteamento cebola oculta o pagador dos saltos; um caminho cego oculta o beneficiário do pagador.

No roteamento cebola simples, o remetente escolhe cada salto do grafo público e envolve uma camada de criptografia por salto, de modo que nenhum nó que encaminha saiba quem está pagando nem em que ponto da rota ele está. O remetente ainda conhece a rota inteira, incluindo o id de nó real do destino, o que serve para pagar a uma loja e é inútil para publicar um destino reutilizável. O cegamento de rotas fornece a metade que faltava sem substituir nada: um pagamento por um caminho cego continua sendo uma cebola, e o cegamento é um ajuste de chave sobreposto. Eles são separáveis o bastante para que um destinatário que não queira a privacidade possa construir um caminho de um só salto contendo apenas a si mesmo e revelar o id do seu nó mesmo assim.

Não confundir com

Perguntas frequentes

Uma rota cega esconde meu nó Lightning de todo mundo?

Não. O ponto de introdução é publicado em claro, e o seu próprio primeiro salto, normalmente o nó que o provedor da sua carteira opera, vê cada pagamento que você envia, independentemente do que a rota esconda dos saltos atrás dela.

As rotas cegas fazem um pagamento Lightning custar mais?

Normalmente um pouco, porque o destinatário fixa a taxa e o timelock dos saltos cegados em vez de a sua carteira procurar a rota mais barata. Uma fatura BOLT 12 mostra isso como uma única taxa base agregada mais uma taxa proporcional por rota, em vez de um preço por salto.

Por que meu pagamento para uma oferta BOLT 12 falhou sem nenhuma explicação?

Porque as falhas dentro de uma rota cega são deliberadamente pouco informativas. Esses saltos devolvem erros de uma forma que não carrega nenhum dado de atribuição de volta para você, e o ponto de introdução é instruído a adicionar um atraso aleatório antes de repassar uma falha, para que ninguém possa sondar a rota e medir a que distância está o destinatário.

Uma rota cega é a mesma coisa que uma assinatura cega?

Não, apesar da palavra em comum. Uma assinatura cega é o truque chaumiano que o Cashu e o Fedimint usam para que um mint assine uma nota que depois não consegue reconhecer, enquanto uma rota cega é uma rota Lightning cujos saltos são publicados como chaves públicas ajustadas.

Leia a seguir

Termos relacionados

Mais em Lightning e camada 2

Ler esta página em inglês