Introdução
As criptomoedas têm algumas propriedades bastante únicas. Eles não podem ser facilmente hackeados ou protegidos e qualquer pessoa pode usá-los para transmitir valor ao redor do mundo sem intervenção de terceiros.
Para garantir que estas características sejam mantidas, devem ser feitos compromissos significativos. Como muitos nós são responsáveis pelo funcionamento de uma rede de criptomoedas, o rendimento é limitado. Assim, o número de transações por segundo (TPS) que uma rede blockchain pode processar é relativamente baixo para uma tecnologia destinada à adoção convencional.
Para superar as limitações inerentes ao blockchain, foram propostas diversas soluções de escalabilidade para aumentar o número de transações que a rede pode processar. Neste artigo discutiremos uma das extensões do protocolo Bitcoin, a Lightning Network.
O que é a Rede Lightning?
A Lightning Network é uma rede localizada no topo de um blockchain que permite transações rápidas ponto a ponto. Isto não é exclusivo do Bitcoin: outras criptomoedas como o Litecoin também o integraram.
Você pode estar se perguntando o que queremos dizer com “sentar em cima de uma blockchain”. A Lightning Network é o que chamamos de solução fora da cadeia ou camada 2. Ele permite que os usuários façam transações sem precisar registrar cada transação no blockchain.
A Lightning Network é separada da rede Bitcoin – e tem seus próprios nós e software, mas ainda se comunica com a cadeia principal. Para entrar ou sair da Lightning Network, você deve criar transações especiais no blockchain.
O que você está realmente fazendo com sua primeira transação é criar uma espécie de contrato inteligente com outro usuário. Antes de entrarmos em detalhes – imagine que o contrato inteligente possui o livro razão privado com o outro usuário. Você pode inserir muitas transações neste registro. Eles são visíveis apenas para você e sua contraparte, mas nenhum de vocês pode trapacear devido a certos recursos específicos.
Este mini-registro é um canal. Digamos que Alice e Bob coloquem 5 BTC cada um no contrato inteligente. Em seu canal, eles agora têm saldo de 5 BTC cada. Alice agora pode escrever no livro razão que ela paga 1 BTC para Bob. Bob agora tem 6 BTC e Alice tem 4. Bob pode então decidir enviar 2 BTC de volta para Alice, atualizando os saldos para 6 BTC do lado de Alice e 4 BTC do lado de Bob. Eles podem continuar fazendo isso por um tempo.
A qualquer momento, um deles pode publicar o estado atual do canal na blockchain. Neste ponto, os saldos de cada lado do canal são atribuídos às suas respectivas partes da cadeia.
Fiel ao seu nome, as transações Lightning são rápidas. Não há confirmação de bloqueio para esperar que os pagamentos sejam efetuados tão rapidamente quanto sua conexão com a Internet permitir.
Por que a Lightning Network é necessária?
Até agora, a Lightning Network (ou LN) parece ser a abordagem mais realista para melhorar a escalabilidade da blockchain Bitcoin. Coordenar mudanças em um ecossistema tão grande é muito complicado devido aos riscos de hard forks e bugs potencialmente catastróficos. Com tanto valor em jogo, a experimentação é incrivelmente perigosa.
Quando esta experimentação ocorre fora do blockchain, a flexibilidade aumenta. Se algo der errado, não terá impacto na rede Bitcoin. As soluções da Camada 2 não questionam as suposições de segurança que permitiram que o protocolo operasse por mais de 10 anos.
Também não há obrigação de mudar a velha maneira de fazer as coisas. As transações on-chain continuam a funcionar para o usuário final, mas o usuário final agora tem a opção de realizar transações off-chain.
Existem vários benefícios em usar a Lightning Network. Aqui estão alguns.
Escalabilidade
Os blocos Bitcoin normalmente são criados a cada dez minutos e não podem armazenar muitas transações. O espaço em blocos é um recurso escasso em leilão. Na verdade, você está competindo com outros usuários para que suas transações sejam incluídas. Como os mineradores estão preocupados principalmente em receber o pagamento, eles priorizarão as transações com as taxas mais altas.
Quando poucos usuários tentam enviar fundos ao mesmo tempo, isso não é realmente um problema. Você pode definir uma taxa baixa e terá todas as chances de ver a transação incluída no próximo bloco. Mas quando todos transmitem negociações ao mesmo tempo, as taxas médias podem aumentar significativamente. Em algumas ocasiões, estes ultrapassaram US$ 5. No pico do mercado comprador de 2017, eles chegaram a ultrapassar os US$ 50.

Taxa média de transação de Bitcoin (em dólares americanos)
Isto pode parecer insignificante para transações de vários milhares de dólares em Bitcoin, mas não é viável para pequenos pagamentos. Quem quer pagar taxas de US$ 5 por um café de US$ 3?
Com a Lightning Network, você terá que pagar duas taxas: uma para abrir o canal e outra para fechá-lo. Mas você e sua contraparte podem fazer milhares de negociações gratuitamente assim que o canal estiver aberto. Quando terminar, basta publicar o estado final no blockchain.
No geral, se mais usuários usarem soluções fora da cadeia, como a Lightning Network, o espaço em bloco será usado com mais eficiência. Transferências de baixo valor e alta frequência poderiam ser realizadas em canais de pagamento, enquanto o espaço de bloco é usado para transações maiores e canais de abertura/fechamento. Isto tornaria o sistema acessível a uma base de utilizadores muito mais ampla, permitindo-lhe escalar a longo prazo.
Micropagamentos
A quantidade mínima de Bitcoin que você pode enviar em uma transação é aproximadamente 0,00000546 BTC. No momento em que este artigo foi escrito, isso equivale a cerca de quatro centavos. É uma quantia pequena, mas a Lightning Network permite que você reduza os limites até a menor unidade possível (0,00000001 BTC: o satoshi).
A rede Lightning é muito mais interessante para micropagamentos. As taxas sobre transações normais tornam impraticável o envio de pequenas quantias para a rede principal. Em um canal, entretanto, você pode enviar gratuitamente uma fração de fração de Bitcoin.
Os micropagamentos são adequados para muitos casos de uso. Alguns consideram que poderiam substituir o modelo de assinatura, com os usuários pagando quantias muito, muito pequenas cada vez que usam um serviço em vez de uma assinatura mensal.
Confidencialidade
Outra vantagem da Lightning Network é que ela pode fornecer aos seus usuários um alto grau de privacidade. As partes não precisam divulgar os seus canais para a rede mais ampla. Se você olhar para o blockchain e dizer que esta transação abriu um canal, não será necessariamente capaz de saber o que está acontecendo no canal. Se os participantes decidirem tornar o seu canal privado, serão de facto os únicos a saber das transacções ocorridas.
Se Alice tiver um canal com Bob e Bob tiver um canal com Carol, Alice e Carol poderão enviar pagamentos um ao outro por meio de Bob. Se Dan estiver conectado a Carol, Alice poderá enviar-lhe pagamentos. A Lightning Network pode ser considerada uma ampla rede de canais de pagamento interconectados. Nessa configuração, você não poderia ter certeza para quem Alice enviou os fundos depois que o canal foi fechado.
Como funciona a Rede Lightning?
Explicamos como a Lightning Network depende de canais entre nós em alto nível. Agora vamos dar uma olhada nos bastidores.
Endereços com múltiplas assinaturas
Um endereço multiassinatura (ou multisig) é um endereço a partir do qual várias chaves privadas podem ser gastas. Ao criar um multisig, você deve indicar quantas chaves privadas os fundos podem gastar e quantas são necessárias para assinar uma transação. Por exemplo, um esquema de 1 a 5 significa que cinco chaves podem produzir uma assinatura válida e apenas uma é necessária. Um diagrama 2-3 indica que das três chaves, duas são necessárias para gastar os fundos.
Para inicializar um canal Lightning, os participantes bloqueiam os fundos em um padrão 2-2. Existem apenas duas chaves capazes de assinar, e estas são necessárias para movimentar seus fundos. Vamos trazer de volta nossos amigos Alice e Bob. Como terão que fazer vários pagamentos nos próximos meses, decidem abrir um canal Lightning Network.
Para começar, cada um deles deposita 3 BTC no endereço multisig de propriedade conjunta. É importante reiterar que Bob não pode sacar fundos do endereço sem a aprovação de Alice e vice-versa.
Agora eles poderiam apenas manter um pedaço de papel que ajustaria o equilíbrio de todos. O respectivo saldo inicial é de 3 BTC. Se Alice quiser fazer um pagamento de 1 BTC para Bob, por que não anotar que Alice agora tem 2 BTC e Bob 4? Os saldos podem ser rastreados desta forma até que decidam retirar os fundos.
É possível, mas onde está a diversão nisso? Mais importante ainda, isto não torna mais fácil para uma das partes recusar a cooperação? Se Alice acabar com 6 BTC e Bob 0, nada impede que Bob se recuse a liberar os fundos (exceto talvez sua amizade com Alice).
Contratos Hash Timelock (HTLC)
O sistema acima é enfadonho e não oferece muito mais do que as configurações confiáveis de hoje. A situação torna-se muito mais interessante quando introduzimos um mecanismo que faz cumprir o “contrato” entre Alice e Bob. Se uma parte decidir não seguir as regras, a outra ainda terá o recurso de retirar seus fundos do canal.
Esse mecanismo é o Hash Timelock Contract (ou HTLC). Embora o termo possa ser assustador, é um conceito relativamente simples de entender. Isso usa duas tecnologias (hashlock e timelock) para resolver qualquer comportamento não cooperativo no canal.
Um hashlock é uma condição imposta a uma transação de que você só pode gastar fundos provando que conhece um segredo. O remetente cria um conjunto de dados e inclui o hash na transação do destinatário. O receptor só pode gastá-lo se fornecer os dados originais (o segredo) que correspondem ao hash. E a única maneira de fornecer esses dados é se o remetente os fornecer.
Uma condição de timelock impede que os fundos sejam gastos antes de uma determinada data. Isso é definido como tempo real ou como altura do bloco.
HTLCs representam a combinação de hashlocks e timelocks. Na prática, os HTLCs podem ser usados para criar pagamentos condicionais: o destinatário deve fornecer um segredo até uma determinada data, caso contrário o remetente poderá recuperar os fundos. Provavelmente poderemos explicar melhor a próxima seção com um exemplo, então voltemos a Alice e Bob.
Abrir e fechar canais
Demos o exemplo de Alice e Bob que acabaram de criar transações para financiar o endereço multiassinatura que vão compartilhar. Mas essas transações ainda não foram publicadas na blockchain! Na verdade, resta uma coisa a fazer primeiro.

Três cantos de Bob e 3 cantos de Alice.
Lembre-se de que a única maneira de essas moedas saírem do multisig é Alice e Bob assinarem uma transação em conjunto. Se Alice quiser enviar as seis moedas para um endereço externo, ela precisará da concordância de Bob. Ela primeiro concluiu uma transação (seis bitcoins neste endereço) e adicionou sua própria assinatura.
Ela poderia tentar transmitir a transação imediatamente, mas ela não será válida porque Bob não a assinou. Alice deve primeiro entregar-lhe a transação incompleta. Assim que Bob adicionar sua assinatura, a transação se tornará válida.
Ainda não temos um mecanismo que permita que todos colaborem honestamente. Como dito acima, se a sua contraparte se recusar a cooperar, os seus fundos ficarão efetivamente presos. Vamos ver juntos o mecanismo que evita isso. Existem várias partes para estudar, então acompanhe.
Cada parte deve revelar um segredo – vamos chamá-los de As e Bs. Seriam péssimos segredos se Alice e Bob os revelassem, e é por isso que os estão mantendo escondidos por enquanto. O par irá gerar o hash dos respectivos segredos: h(As) e h(Bs). Em vez de compartilharem seu segredo, eles compartilham seu hash.

Alice e Bob compartilham o segredo de seu segredo.
Alice e Bob também devem criar um conjunto de transações de compromisso antes de postar sua primeira transação no endereço de múltiplas assinaturas. Isso permitirá que eles tenham recurso caso o outro decida manter os fundos como reféns.
Se você pensar em um canal como o mini livro-razão de que falamos anteriormente, as transações de compromisso são as atualizações que você faz no livro-razão. Cada vez que você cria um novo par de transações de compromisso, você reequilibra os fundos entre os dois participantes.
Alice terá duas saídas: uma que paga por um endereço que ela possui e outra que está bloqueada em um novo endereço multisig. Ela assina e entrega para Bob.

Transação de Alice com duas saídas: uma para seu próprio endereço e outra para um novo multisig. Alice ainda precisa da assinatura de Bob para torná-la válida.
Bob faz o mesmo: uma saída se paga, a outra paga por outro endereço multisig. Ele assina e dá para Alice.

Temos duas transações incompletas, mas semelhantes.
Alice normalmente poderia adicionar uma assinatura à transação de Bob para torná-la válida. Você notará, no entanto, que esses fundos estão sendo gastos no multisig 2 de 2, que ainda não financiamos. É como tentar gastar um cheque de uma conta que não tem o saldo necessário. Portanto, essas transações parcialmente assinadas só poderão ser usadas quando o multisig estiver operacional.
Os novos endereços multiassinatura (onde se destinam os 3 BTC) possuem certas propriedades específicas. Vamos dar uma olhada na transação incompleta que Alice assinou e entregou a Bob. A saída Multisig pode ser gasta nas seguintes condições:
Ambas as partes podem assiná-lo cooperativamente.
Bob pode então gastá-los sozinho após um determinado período (devido ao timelock).
Alice pode gastá-los se souber o segredo de Bob Bs.
Para a transação em que Bob deu a Alice:
Ambas as partes podem assiná-lo cooperativamente.
Alice pode gastá-los sozinha após um certo período de tempo.
Bob pode gastá-los se souber o segredo de Alice Ace.
Lembre-se de que nenhuma das partes conhece o segredo da outra, portanto 3) ainda não é possível. Outra coisa a se observar é que, caso você assine uma transação, sua contraparte poderá gastar os recursos imediatamente, pois não há condições especiais para sua liberação. Você pode esperar o tempo expirar para gastar os fundos por conta própria ou cooperar com a outra parte para poder gastá-los diretamente.
BOM ! Agora você pode lançar transações no endereço de assinatura múltipla 2-2. Finalmente é possível fazer isso com segurança, pois você pode recuperar seus fundos caso sua contraparte abandone o canal.
Assim que as transações forem confirmadas, o canal estará operacional. Este primeiro par de transações nos mostra o estado atual do mini-registro. Atualmente, ele pagará 3 BTC para Bob e 3 BTC para Alice.
Quando Alice deseja fazer um novo pagamento a Bob, a dupla cria duas novas transações para substituir o primeiro conjunto. O princípio é o mesmo: estão apenas parcialmente assinados. No entanto, Alice e Bob devem primeiro abandonar seu antigo segredo e trocar novos hashes para a próxima rodada de transações.

Se Alice quiser pagar 1 BTC para Bob, as duas novas transações creditarão 2 BTC para Alice e 4 BTC para Bob. O saldo está, portanto, atualizado.
Cada parte pode assinar e transmitir até mesmo uma das transações recentes para “liquidar” na blockchain. No entanto, qualquer parte que fizer isso terá que esperar que o prazo expire, enquanto a outra poderá gastar os fundos imediatamente. Lembre-se de que se Bob assinar e transmitir a transação de Alice, ela terá uma saída incondicional.
Ambas as partes podem decidir fechar o canal juntas (um fechamento cooperativo). Esta é provavelmente a maneira mais fácil e rápida de recuperar fundos na rede. Se uma parte não responder ou se recusar a cooperar, a outra ainda poderá recuperar os seus fundos enquanto aguarda o timelock.
Você quer começar com criptomoedas? Compre Bitcoin na Binance!
Como a Lightning Network evita trapaças?
Você já deve ter identificado um vetor de ataque aqui. Se Bob tiver saldo de 1 BTC, o que o impede de transmitir uma transação mais antiga mostrando que possui mais de 1 BTC? Ele já recebeu a transação semiassinada de Alice, não basta ele adicionar sua assinatura antes de transmitir a transação?
Nada o impede de fazer isso, exceto talvez o fato de que ele pode perder todo o equilíbrio. Digamos que ele vá até o fim e transmita uma transação antiga em que paga um BTC para Alice e cinco para o endereço multisig que mencionamos anteriormente.
Alice recebe seu BTC imediatamente. Bob, por outro lado, deve esperar o timelock expirar para gastar no endereço multisig. Lembra-se da outra condição que mencionamos que permite que Alice gaste esses fundos imediatamente? Ela precisa de um segredo que ainda não possui. Ela faz isso agora: assim que o segundo conjunto de transações foi criado, Bob lhe deu esse segredo.
Enquanto Bob espera, incapaz de fazer qualquer coisa enquanto espera o timelock expirar, Alice pode movimentar esses fundos. Este mecanismo baseado em punição evita que os participantes trapaceiem ou corram o risco de perder o acesso às suas moedas.
Roteamento de pagamento
Indicamos anteriormente que os canais podem ser conectados. Se isso fosse impossível, a Lightning Network não seria útil para pagamentos. Você realmente vai ganhar US$ 500 em um canal com uma cafeteria, só para conseguir sua dose diária nos próximos meses?
Ninguém faz isso. Se Alice abrir um canal com Bob e Bob tiver um canal com Carol, Bob poderá encaminhar pagamentos entre os dois. Isso pode funcionar em vários "saltos", para que Alice possa pagar qualquer pessoa nessa rota.

Neste cenário, Alice pode fazer diversas conexões para chegar à casa de Frank. Na prática, ela sempre escolherá o mais fácil.
Pelo seu papel na entrega, os intermediários podem cobrar uma pequena taxa (mas isto não é obrigatório). Como a Lightning Network é relativamente nova, o mercado de taxas ainda não se concretizou. O que muitos esperam é uma taxa baseada na liquidez fornecida.
Na cadeia base, suas taxas são baseadas exclusivamente no espaço que sua transação ocupa em um bloco – o valor transmitido não importa – pagamentos de US$ 1 ou mesmo US$ 10.000.000 custam o mesmo. Por outro lado, não há espaço de bloco na Lightning Network.
Em vez disso, existe um conceito de equilíbrio local e distante. O equilíbrio local é o valor que você pode “empurrar” em direção ao final do canal. O equilíbrio distante é o equilíbrio que sua contraparte pode empurrar para você.
Vejamos outro exemplo. Vamos dar uma olhada mais de perto na rota acima: Alice <> Carol <> Frank.

Saldo do usuário antes e depois de uma transferência de 0,3 BTC de Alice para Frank.
As transações Alice <> Carol e Carol <> Frank têm, cada uma, capacidade total de 1 BTC. O saldo local de Alice é de 0,7 BTC. Se as transações fossem liquidadas agora na blockchain, Alice teria 0,7 BTC e Carol receberia o saldo remoto (0,3 BTC).
Se Alice quiser enviar 0,3 BTC para Frank, ela só precisa transmitir 0,3 BTC para Carol através do canal. Carol então transmite 0,3 BTC de seu saldo local para Frank através do canal. Assim, o saldo de Carol permanece o mesmo: os +0,3 BTC de Alice e os -0,3 BTC de Frank são anulados.
Carol não perde valor ao atuar como ligação entre Frank e Alice, mas perde flexibilidade. Veja, ela agora pode gastar 0,6 BTC em seu canal com Alice, mas apenas 0,1 BTC no canal com Frank.
Também podemos imaginar uma situação em que Alice esteja conectada apenas a Carol, enquanto Frank esteja conectado a uma rede muito maior. Carol, que antes podia enviar um total de 0,4 BTC para outras pessoas através de Frank, agora só pode enviar 0,1 BTC porque é tudo o que ela tem no canal.
Neste cenário, Alice está efetivamente esgotando o fluxo de caixa de Carol. Sem qualquer recompensa, Carol pode não querer enfraquecer a sua própria posição. Então, em vez disso, ela poderia simplesmente dizer: vou encaminhar cada 0,01 BTC a uma taxa de dez satoshis. Dessa forma, quanto mais Carol sacrificar seu equilíbrio local em caminhos “mais fortes”, ela se beneficiará.
Como dito anteriormente, não existe obrigação de facto de cobrar taxas. Alguns podem não estar preocupados com a redução da liquidez. Outros podem simplesmente abrir canais diretamente para o receptor.
Limites da Lightning Network
Seria simplesmente fantástico se a Lightning Network fosse a solução para todos os problemas de escalabilidade do Bitcoin. Infelizmente, ele também tem suas próprias falhas.
Usabilidade
Bitcoin não é o sistema mais intuitivo para iniciantes: endereços e taxas são conceitos difíceis de abordar. Mas as carteiras podem eliminar os aspectos complicados para oferecer aos usuários algo que se assemelha vagamente aos sistemas de pagamento existentes. Mas você pode fazer com que alguém baixe uma carteira de smartphone, envie fundos e esteja pronto para o que vem a seguir.
Atualmente, isso é impossível para a Lightning Network. As opções ainda são muito limitadas quando se trata de aplicativos para smartphones: em geral, os nós Lightning exigem acesso a um nó Bitcoin para serem usados.
Após a configuração do cliente, os usuários devem começar a abrir canais antes de efetuar pagamentos. Além de consumir muito tempo, rapidamente se torna complicado para um iniciante ter que entender conceitos como capacidade de entrada/saída.
Dito isto, melhorias estão sendo feitas constantemente para reduzir as barreiras de entrada e fornecer aos usuários uma experiência mais simples.
Liquidez
Uma das principais críticas à Lightning Network é que sua capacidade de transação é limitada. Você não pode gastar mais do que o que está bloqueado em um canal. Se você gastar todos os seus fundos para que o saldo remoto tenha todos os fundos no canal, você precisará fechá-lo. Você também pode esperar que alguém pague para fazer isso, mas isso não é o ideal.
Suas conexões também são limitadas pela capacidade total do canal. Voltemos ao nosso exemplo da conexão Alice <> Carol <> Frank. Se Alice e Carol tiverem capacidade de 5 BTC em seu canal, mas Carol e Frank tiverem apenas capacidade de 1 BTC, Alice nunca poderá enviar mais de 1 BTC. Mesmo assim, todo o saldo precisaria estar do lado de Carol (no canal Carol<>Frank) para que isso funcionasse. Isto pode limitar significativamente a quantidade de fundos que pode ser transmitida através dos canais do LN e, portanto, impactar a sua praticidade.
Centralização de hubs
Devido ao problema mencionado na secção anterior, existe também o receio de que a rede facilite a criação de grandes “hubs”. Ou seja, entidades grandes, altamente conectadas e com muita liquidez. Quaisquer pagamentos grandes terão de ser encaminhados através de algumas destas entidades.
Obviamente, isso não é algo positivo. Na verdade, isto enfraqueceria o sistema, porque simplesmente colocar estas entidades offline teria um grande impacto em todas as relações entre pares. O risco de censura também aumenta, com as transações circulando apenas através de algumas entidades.
Status atual da Lightning Network
Desde abril de 2020, a Lightning Network parece estar indo bem. Possui mais de 12.000 nós ativos, mais de 30.000 canais abertos e mais de 920 BTC de capacidade.

Distribuição global de nós da Lightning Network. Fonte: explorer.aquin.co
Existem várias implementações de nós: c-lightning da Blockstream, Lightning Network Daemon da Lightning Labs e Eclair da ACINQ estão entre as mais populares. Muitas empresas oferecem nós prontos para usuários menos experientes. A única coisa que você precisa fazer com esses dispositivos é ligá-los e você estará pronto para usar a Lightning Network.
Concluir
Desde o lançamento de sua rede principal em 2018, a Lightning Network teve um crescimento impressionante. No entanto, muitas pessoas consideram que ainda está em fase beta.
Ainda existem alguns obstáculos a serem superados no setor de utilidades, pois o uso de um nó Lightning atualmente exige um certo grau de habilidade técnica. Mas dada a escala do desenvolvimento em curso, poderemos ver as barreiras à entrada reduzidas nos próximos anos.
Se esses problemas puderem ser resolvidos, a Lightning Network poderá se tornar parte integrante do ecossistema Bitcoin e melhorar significativamente sua escalabilidade e velocidade de transação.



