Escale com velocidade: a Bitcoin Lightning Network explicada

Publicados: 2022-03-11

A Bitcoin Lightning Network é uma solução independente que é anunciada como a solução para todos os problemas que impedem a adoção do Bitcoin. Ele afirma resolver o problema de dimensionamento sombrio, fazer transações instantâneas, manter as taxas de transação minúsculas e tirar suas transações do blockchain. Como um sistema independente do núcleo do Bitcoin pode oferecer essas melhorias? Como pode violar as regras convencionais do Bitcoin, oferecendo transações seguras com zero confirmações? O que é a Rede Bitcoin Lightning?

Neste artigo, exploraremos o que realmente é a Bitcoin Lightning Network, como ela pode fazer as garantias que oferece e seu estado atual.

Nota: Este artigo pressupõe familiaridade com Bitcoin. Se você não está familiarizado com o funcionamento das criptomoedas ou precisa de uma atualização, leia Cryptocurrency for Dummies: Bitcoin and Beyond.

Pré-requisito: O problema de dimensionamento do Bitcoin

Se você estiver ciente do problema de dimensionamento do Bitcoin, sinta-se à vontade para pular esta seção, mas se não estiver ou precisar de uma atualização, continue lendo.

O Bitcoin tem um problema de escala. O Bitcoin foi projetado para armazenar todas as transações em uma estrutura de dados chamada bloco. Um bloco contém informações sobre o bloco anterior, dados diversos sobre recompensas de mineração e a maior parte do bloco é apenas dados de transação. Os blocos também são fixados em um tamanho máximo de 1 MB. Esta última parte é onde está o problema.

Como os blocos têm 1 MB de tamanho e um bloco é criado a cada 10 minutos, supondo que as transações não sejam SegWit (a surgir mais tarde), a rede pode processar no máximo entre 3,3 e 7 transações por segundo. Para uma moeda projetada para uso em massa por bilhões de humanos e suas máquinas, 7 transações por segundo simplesmente não estão à altura. A Visa, por outro lado, afirma ser capaz de processar 24.000 transações por segundo.

À medida que o número de transações começa a aumentar, sua transação individual compete com todas as outras pela inclusão dentro de um espaço de bloco limitado e, portanto, a probabilidade de incluir a sua no bloco começa a diminuir. Como os mineradores podem decidir arbitrariamente quais transações incluir em um bloco, nessas ocasiões, a única maneira de incentivar os mineradores a incluir sua transação é aumentando sua taxa de transação. No entanto, isso começa a tornar as transações proibitivamente caras - como essa transação de 192 bytes por US$ 92,98, onde a taxa de transação era de US$ 14,86.

Então, como “escalonamos” o Bitcoin? Existem três grandes escolas de pensamento ou – como gosto de chamá-las – batalhas do Great Scaling Bitcoin Flamewars:

  • Aumentando o tamanho do bloco: 2X, 8X, …, ∞X
  • Transações menores: SegWit et al.
  • Sidechains: a rede Bitcoin Lightning

Aumentando o tamanho do bloco Bitcoin

Este é bastante simples de entender: Se o limite de bloco de 1 MB é o problema, aumente-o! O debate sobre isso foi acirrado e ainda continua. Eventualmente, em 1º de agosto de 2017, o Bitcoin (BTC) foi bifurcado e o Bitcoin Cash (BCH) nasceu. A principal diferença entre os dois é que o BCH possui blocos de 8 MB. Isso mantém os blocos quase vazios e as taxas muito baixas.

No entanto, blocos de 8 MB significam que o tamanho total do blockchain BCH provavelmente aumentará a uma taxa muito mais rápida, tornando os custos de armazenamento uma barreira significativamente maior à entrada no cenário de mineração. O argumento é que isso reduziria o número total de mineradores, que também protegem o blockchain, reduzindo a descentralização e a segurança geral da rede Bitcoin.

Outra crítica aos blocos maiores é que não resolve o problema em si; em vez disso, ele corrige temporariamente o problema. Sempre haverá um limite máximo com blocos maiores, e o limite máximo sempre será muito menor do que o limite de destino que estamos tentando alcançar: 24.000 transações por segundo. Mesmo com seus blocos maiores de 8 MB, o BCH tem um limite de 61 transações por segundo.

Transações menores: testemunha segregada

Outras soluções apontam que o formato de transação atual não é o mais eficiente e visam empacotar mais transações em um mesmo bloco. O mais notável deles é chamado Segregated Witness (SegWit), proposto via BIP 91 e ativado no bloco 481824 em 25 de agosto de 2017. O SegWit agora faz parte do Bitcoin, alegre-se!

Comparação de blocos Non-SegWit e SegWit
Comparação de blocos Non-SegWit e SegWit, com base em uma ilustração de David A. Harding

O SegWit pega os dados de assinatura das transações e os armazena em uma estrutura separada do bloco de transações, tornando as transações individuais menores e fazendo melhor uso do espaço limitado dentro de cada bloco. Essa estrutura é então opcional ao sincronizar o blockchain, levando a um tamanho reduzido no disco omitido.

Isso também resulta em uma solução para o problema de maleabilidade das transações, e as transações que gastam apenas as saídas do SegWit não são mais vulneráveis.

A rede Bitcoin Lightning

A Lightning Network é uma rede de segunda camada que transmite transações assinadas, mas não transmitidas, entre pares e depende do blockchain do Bitcoin apenas para a liquidação final dos fundos. Isso significa que as transações não estão limitadas ao tamanho do bloco, os tempos de confirmação são irrelevantes e o blockchain do Bitcoin não precisa armazenar todas as transações que acontecem.

Quem desenvolveu a Bitcoin Lightning Network? Ele foi descrito pela primeira vez em um white paper de autoria de Joseph Poon e Thaddeus Dryja, mas desde então evoluiu para um esforço da comunidade com terceiros e até empresas contribuindo para especificações e implementações.

Mais informações posteriormente.

SegWit vs. Blocksize aumentado vs. Bitcoin Lightning Network

Qual é o melhor, então? Não tenho evidências empíricas para basear minha resposta, então esta é uma opinião: Embora eu ache que um melhor uso do espaço do bloco (a la SegWit) é uma coisa boa, acho que um aumento no tamanho do bloco seria como empurrar o poste para o futuro. Se o uso do Bitcoin aumentasse substancialmente, nos encontraríamos logo no início debatendo sobre outro aumento no tamanho do bloco.

Discorda? Deixe um comentário abaixo!

Com isso dito, embora eu ache que uma rede de liquidação alternativa como o Bitcoin Lightning seja uma ideia maravilhosa, também estou esperando para ver como isso funciona no mundo real. A partir de agora, não está realmente no estado que meu pai e eu poderíamos usar.

A Bitcoin Lightning Network explicada

Já mencionei que a Lightning Network é uma rede de segunda camada que transmite transações assinadas, mas não transmitidas, entre pares e depende do blockchain do Bitcoin apenas para liquidação final de fundos.

Vamos dar uma olhada em como isso funcionaria na vida real.

Nós e canais do Lightning

Um nó Lightning funciona de maneira muito parecida e diferente de um nó Bitcoin, pois opera em rede, valida transações e se comunica com outros nós, mas faz coisas que os nós Bitcoin historicamente não fazem: detém fundos, atua como um intermediário financeiro automatizado , monitora ativamente os “canais” do Lightning em busca de comportamento malicioso e reage defensivamente (isso é explicado em detalhes posteriormente), etc.

Para realizar essas funções, os nós precisam de dinheiro.

Nota: Esses exemplos inicialmente pressupõem que todos executam um nó Bitcoin Lightning Network conectado à Internet 24 horas por dia, 7 dias por semana, o que obviamente não será o caso. Essa suposição será quebrada na seção Lightning Wallet vs. Lightning Node.

Criando um canal do Lightning

Suponha que você e seu amigo Bob tenham um relacionamento que envolva uma quantidade razoável de transações financeiras. Você sai juntos de vez em quando para almoçar ou assistir a um filme. Às vezes, um de vocês está com pouco dinheiro, e às vezes o outro e você geralmente acabam se matando depois.

No entanto, sendo defensores de criptomoedas, vocês dois decidem experimentar o Lightning e criar um novo canal mútuo que você financia igualmente com meio bitcoin cada (isso é um monte de almoços).

Ilustração de dois nós criando um canal na Bitcoin Lightning Network

Criar um novo canal Lightning é como criar uma carteira de bitcoin com várias assinaturas que exige que ambas as suas assinaturas aprovem uma transação, mas com uma diferença; cada um de vocês recebe uma “Transação de Compromisso” assinada, mas ainda não transmitida, de acordo com o white paper da Lightning Network, que devolve seus depósitos iniciais para você. Dessa forma, se sua amizade passar por um período difícil, ou um de vocês precisar do dinheiro, você pode fechar unilateralmente o canal transmitindo essa transação e todos recebem seus valores legítimos.

Fazendo transações do Lightning com pessoas para as quais você tem canais

Digamos que você saia para almoçar novamente um dia e acabe devendo a Bob o equivalente a 8.000 satoshis (0,31 USD enquanto escrevo isso). Neste momento, se você usar Bitcoin para liquidar esse valor, acabará pagando 0,10 USD e esperando uma hora, tornando-o inviável.

Ilustração de dois nós atualizando seu estado de canal

Com o Lightning, no entanto, você pode fazer isso de graça simplesmente substituindo sua “Transação de compromisso” por uma nova transação para ambos. Só que desta vez, Bob tem 8.000 satoshis a mais, e você tem menos. (Se você está pensando em trapacear transmitindo a transação antiga neste momento, espere até a seção Fechando um Canal .)

Você pode transmitir a transação e fechar o canal, no entanto, fechar o canal incorreria em taxas de transação e, como nenhum de vocês precisa do valor imediatamente, você pode simplesmente manter o canal e usá-lo para liquidar dívidas futuras.

Fazendo transações Lightning com pessoas para as quais você não tem canais

Digamos que um dia, Bob convida outra de suas amigas, Alice, e depois de uma hora intensa comendo sanduíches, vocês dois ficam em dívida com Alice porque a loja só aceitava Coinye (uma criptomoeda extinta abandonada depois que Kanye West processou), o que Alice aconteceu Ter.

Ilustração de uma transação relâmpago de vários saltos

Agora, supondo que Bob tenha um canal aberto com Alice, com Lightning, você também pode pagar Alice via Bob. Seu nó calcula a rota ideal entre você e Alice — neste caso, com Bob como intermediário financeiro — e os intermediários podem pagar adiantado, com uma pequena taxa, se assim o desejarem.

Fechando um canal: duas maneiras boas e uma maneira ruim

Há três maneiras de fechar um Lightning Channel:

  1. Colaborativamente: Qualquer uma das partes do canal inicia o fechamento de um canal Bitcoin Lightning e a outra aprova. Não há bloqueio de tempo e o dinheiro está pronto para ser gasto assim que a aprovação for confirmada. Esta é a “melhor” maneira de fechar um canal.
  2. Unilateralmente: Qualquer uma das partes no canal pode fechar um canal Bitcoin Lightning quando uma das partes desejar, mesmo que a outra parte não aprove. Isso resulta em um bloqueio de tempo em que a outra parte pode contestar o fechamento com uma transação “Breach Remedy” (veja o cenário 3 abaixo), mas vamos supor que isso não aconteça. Depois que o bloqueio de tempo expirar, os fundos poderão ser usados ​​gratuitamente. Esta é uma maneira “aceitável” de fechar um canal.
  3. Solução de violação: Como as transações relâmpago são uma lista com carimbo de data e hora de transações assinadas em que a divisão de fundos varia, é possível que uma das partes tente trapacear (quebra de confiança) fechando unilateralmente um canal com uma transação antiga em que detêm mais fundos (consulte cenário 2). Isso resulta em um bloqueio de tempo e, durante esse período, a parte prejudicada pode não apenas recuperar seus próprios fundos, mas também roubar toda a capacidade do canal usando uma transação “Breach Remedy”, conforme descrito no white paper Bitcoin Lightning Network.

Lightning Node vs. Lightning Wallet

No exemplo acima, usamos o termo “nó” do Lightning, o que faria você pensar que teria que manter seu nó funcionando 24 horas por dia, 7 dias por semana na Internet. E sim, você estaria correto. A Lightning Network foi projetada para que os nós estejam sempre online, garantindo que a rede opere próximo à capacidade máxima. E, se ninguém estiver online para monitorar uma tentativa de trapaça e for bem-sucedida, o canal fechará como um fechamento unilateral regular, deixando você sem seus fundos.

No entanto, o white paper da Lightning Network descreve uma solução para esse problema:

…deve-se monitorar periodicamente o blockchain para ver se a contraparte transmitiu uma Transação de Compromisso invalidada ou delegar a um terceiro para fazê-lo. Um terceiro pode ser delegado apenas dando a transação de Remédio de violação a esse terceiro. Eles podem ser incentivados a assistir a blockchain transmitir tal transação no caso de maldade da contraparte, dando a esses terceiros alguma taxa na saída. Como o terceiro só pode agir quando a contraparte está agindo de forma maliciosa, esse terceiro não tem poder para forçar o fechamento do canal.

Esses terceiros são frequentemente chamados de torres de vigilância e devem remover a carga de estar sempre online dos usuários.

O estado da rede relâmpago

A Bitcoin Lightning Network em 27 de março de 2019:

  • Tem mais de 7,5 mil nós
  • Tem quase 40 mil canais abertos
  • Pouco mais de 1 mil BTC em capacidade

Está crescendo a uma taxa de:

  • 25 nós por hora
  • 304 canais por hora

Existem muitas implementações de nós da Lightning Network, até mesmo uma Eclair Lightning Wallets na Play Store. Ainda é experimental, carece de polimento e da importante característica de receber recursos, mas na minha opinião, embora o ecossistema seja pequeno, está crescendo de forma saudável.

Especificações e Implementações

A especificação Bitcoin Lightning Network está no status Request for Comments (RFC) e é construída a partir de uma série de documentos chamados Basis of Lightning Technology (BOLTS). Os BOLTS estão em constante mudança a partir desta publicação e são bem-vindas contribuições.

Existem também várias implementações compatíveis com BOLT de nós da Lightning Network:

  • LND: Abreviação de Lightning Network Daemon, esta é uma implementação baseada principalmente em Go.
  • Eclair: Uma implementação baseada principalmente em Scala.
  • C-lightning: Uma implementação baseada principalmente em C.

Para obter mais recursos, consulte a conclusão deste artigo.

Vantagens e Críticas da Rede de Iluminação

Então, o que podemos alcançar com a Lightning Network?

  • Verdadeiras microtransações (frações de centavos)
  • Taxas mais baixas imagináveis ​​(frações de centavos)
  • Um grau de privacidade (sem registros de blockchain)

No entanto, como eu disse antes, há uma série de críticas à Lightning Network, algumas delas são válidas e apresentam desafios ainda não resolvidos que a Lightning enfrenta:

  • Roteamento e centralização: Como a Lightning Network está em fluxo constante com os estados do canal mudando, abrindo e fechando todos os dias, e havendo um armazenamento centralizado de histórico ao qual recorrer, as rotas de pagamento precisam ser calculadas novamente a cada vez. Isso é ótimo quando a rede é pequena, mas quando fica grande o suficiente, seu pequeno nó rodando em um hardware minúsculo pode não ter o poder de processamento para calcular a rota. A solução para esse problema pode ser um supernó centralizado com conhecimento avançado que você possa consultar. Isso é descrito com mais detalhes aqui.
  • Muito empréstimo: melhor descrito neste post, que até fez Vitalik Buterin, o cofundador da Ethereum, contribuir. acabam movendo $ 100 em fundos. Em um ponto, mover grandes quantidades se torna inviável. Se isso é verdade ou não no mundo real ainda não foi determinado, mas esse é um argumento convincente.

Senti falta de alguma crítica? Por favor, deixe-me saber nos comentários abaixo.

Outras leituras e recursos

Espero que você finalmente entenda o que realmente é a Lightning Network. Por baixo de tudo, é apenas um sistema de mensagens baseado na troca de tokens criptográficos. Ainda não é perfeito ou amplamente utilizável, mas isso não significa que não seja uma impressionante peça de engenharia.

Eu recomendo a leitura do white paper original do Bitcoin Lightning Network. Eu também poderia recomendar uma lista de outras leituras e aplicativos, livros e artigos, mas o usuário do GitHub Ben Congdon já foi em frente e fez isso, então eu recomendo verificar bcongdon/awesome-lightning-network . Obrigado Ben! Como desenvolvedor de Bitcoin, você deve ler o máximo possível sobre essa nova tecnologia.

Se tudo isso foi muita informação, vamos terminar com uma nota divertida. Aqui está um vídeo divertido do suposto Satoshi Craig Wright tentando falar sobre os bons e velhos dias do bitcoin.