# Lightning Network

A Lightning Network é uma das mais antigas e proeminentes ideias na busca de solucionar a barreira da escalabilidade existente no Bitcoin. Consiste em se utilizar canais de micro pagamentos instantâneos espalhados pela rede que removem o risco de se delegar a custódia de fundos à terceiro, o que a difere da técnica da Testemunha Segregada.
Considerada uma proposta de implementação Hashed Timelock Contracts (HTLCs) com canais de pagamentos bidirecionais que permitem que pagamentos sejam seguramente roteados através de múltiplos canais de pagamentos pessoa-para-pessoa. Proposta por Joseph Poon e Thaddeus Dryja, ela permite que a informação trafegue através da rede passando por intermediários minimamente confiáveis, proporcionando que um nó possa pagar qualquer outro nó mesmo que eles não tenham um canal direto aberto entre eles.
Tida como uma das mais esperadas inovações tecnológicas a ser implementada sobre o Bitcoin, a camada de pagamento promete suportar uma quantidade de transações financeiras similares à quantidade suportada por uma rede de cartão de crédito. Imagina-se que este volume de transações fora da blockchain entre usuários possa ser alcançado a um custo irrisório, enquanto aproveita a segurança oferecida pelo Bitcoin.

## Problema da escalabilidade do Bitcoin

Bitcoin, a moeda digital mais utilizada e valiosa do mundo, permite que qualquer pessoa envie valor sem um intermediário ou depositário confiável. Bitcoin contém um sistema avançado de scripting que permite aos usuários programar instruções para fundos. Existem, no entanto, algumas desvantagens para o design descentralizado da bitcoin. Transações confirmadas na Blockchain podem levar até uma hora antes serem irreversíveis, porém os micropagamentos, ou pagamentos menores que centavos, são inconsistentemente confirmados, mas as taxas cobradas atualmente tornam tais transações inviáveis na rede.
Como o "protocolo de fofocas" utilizado pelo Bitcoin é quem confirma o estado de todos os nós da rede e faz com que cada nó tenha as informações sobre todas transações da Blockchain. O que faz com que cada transação cause um 'overhead' na rede, que apesar de manter a tão desejada descentralização, cria um gargalo na quantidade máxima de transações possíveis na rede. A rede de pagamentos da Visa registrou 47.000 transações por segundo [tps] em um teste de carga realizado em 2013 e, atualmente, calcula centenas de milhões durante o dia. Em contrapartida, o Bitcoin suporta cerca de 7 tps com um limite de bloco de 1MB, para obter uma capacidade equivalente ao volume máximo de 47.000 / tps da Visa o limite seria quase 8 gigabytes por bloco Bitcoin, a cada 10 minutos em média se utilizarmos uma média de 300 bytes por transação de Bitcoin e assumimos tamanhos de bloco ilimitados. Isto resultaria em 400 TB ao ano.
Este volume de dados foge das capacidades de computador pessoal atual e, mesmo nas previsões mais otimistas, dos computadores da próxima geração. Dito isto, é evidente que o Bitcoin ainda não está pronto para assumir o posto dos meios de pagamento eletrônico vigentes, pois apenas alguns mineradores teriam capacidade de arcar com as dificuldades técnicas que surgiriam e isto acabaria centralizando a rede Bitcoin, tornando-a menos segura. O mesmo problema de centralização também ocorreria se o tamanho do bloco fosse aumentado em demasia.
Afim de se alcançar taxas superiores a 47.000 tps, o Bitcoin necessariamente tem que permitir transações fora da sua Blockchain. Qualquer observador olhando atentamente pode observar sinais de uma futura desaceleração e um gargalo, ao menos que algo seja feito logo. De acordo com as simulações de Monte Carlo, feitas por Dave Hudson, quando o Bitcoin Core atingir 80% da capacidade total, metade das transações levariam vinte minutos ou mais para serem confirmadas. Ao atingir 100%, metade das transações levariam 6 horas ou mais. Desta forma o ideal permitir um número ainda maior de transações por segundo com taxas quase inexistentes, o que possibilitaria a transferência entre dois nós de praticamente qualquer valor.

## Funcionamento

A Lightning Network depende da tecnologia subjacente da Blockchain. Usando transações reais de Bitcoin / blockchain e usando sua linguagem de script de contrato inteligente nativa, é possível criar uma rede segura de participantes que são capazes de transacionar em alto volume e alta velocidade.
Os fundos são colocados em um endereço de bitcoin de dois canais, multi-assinatura. Este canal é representado como uma entrada no ledger público bitcoin. Para gastar fundos do canal, ambas as partes devem concordar com o novo saldo. O saldo atual é armazenado como a transação mais recente assinada por ambas as partes, gastando do endereço do canal. Para efetuar um pagamento, ambas as partes assinam um novo gasto de transação de saída do endereço do canal. Todas as transações de saída antigas são invalidadas ao fazê-lo.
A Rede Lightning não requer cooperação da contraparte para sair do canal. Ambas as partes têm a opção de unilateralmente fechar o canal, terminando seu relacionamento. Uma vez que todas as partes têm vários canais multi-assinados com muitos usuários diferentes nesta rede, pode-se enviar um pagamento para qualquer outra parte através desta rede.
Ao incorporar o pagamento condicional ao conhecimento de um hash criptográfico seguro, os pagamentos podem ser feitos através de uma rede de canais sem a necessidade de qualquer parte ter a propriedade de custódia unilateral dos fundos. A Lightning Network permite o que antes não era possível com sistemas financeiros confiáveis e vulneráveis a monopólios sem a necessidade de confiança e apropriação de custódia, a participação na rede pode ser dinâmica e aberta para todos

### Blockchain como árbitro

Como resultado, é possível realizar transações fora da blockchain sem limitações. As transações podem ser feitas fora da blockchain sem perder a confiança das transações registradas nela. Isto é similar a como os contratos legais com outros, mas um não ir ao tribunal cada vez que um contrato é feito. Ao tornar as transações e scripts acessíveis, o contrato inteligente pode ser colocado na blockchain. Somente em caso de não cooperação é a arbitragem é envolvida - mas com a blockchain, o resultado é determinista.

### Hashed Time-Lock Contract(HTLCs)

A Hashed TimeLock Contrato ou HTLC é uma classe de pagamentos que usam hashlocks e timelocks para exigir que o receptor de um pagamento ou reconheça recebendo o pagamento antes de um prazo através da geração de prova criptográfica de pagamento ou perca a capacidade de reivindicar o pagamento, devolvendo-lo ao pagador.
A prova criptográfica de pagamento que o receptor gera pode então ser usada para desencadear outras ações em outros pagamentos, tornando os HTLCs uma poderosa técnica para produzir pagamentos condicionais no Bitcoin.
Canais de pagamento já usam timelocks, e podem ser relativamente simples conceitualmente para estendê-los com hashlocks. Isso fornece o benefício útil de tornar os pagamentos roteáveis em dois ou mais canais de pagamento.
Exemplo:
* Alice abre um canal de pagamento para Bob, e Bob abre um canal de pagamento para Charlie.
* Alice quer comprar algo de Charlie por 1000 satoshis.
* Charlie gera um número aleatório e gera seu hash SHA256. Charlie dá esse hash para Alice.
* Alice usa seu canal de pagamento para Bob para lhe pagar 1.000 satoshis, mas ela acrescenta o hash que Bob deu a ela ao pagamento juntamente com uma condição extra: para que Bob reivindique o pagamento, ele tem que fornecer os dados que foram usados para produzir Que hash.
* Bob usa seu canal de pagamento para Charlie para pagar Charlie 1.000 satoshis, e Bob adiciona uma cópia da mesma condição que Alice pagou o pagamento que deu a Bob.
* Charlie tem os dados originais que foram usados para produzir o hash (chamado uma pré-imagem), assim Charlie pode usá-lo para finalizar seu pagamento e receber completamente o pagamento de Bob. Ao fazê-lo, Charlie necessariamente torna a pré-imagem disponível para Bob.
* Bob usa a pré-imagem para finalizar seu pagamento de Alice.

## Casos de uso

Além de ajudar na solução do problema da escalabilidade do bitcoin, existem muitos usos para transações na Lightning Network:

### Transações Instantâneas

Atualmente, o Bitcoin agrega transações em blocos espaçados de dez em dez minutos de distância. As transações são consideradas como seguras após a confirmação de ao menos seis blocos, ou cerca de uma hora. Na Rede Lightning, os pagamentos não precisam de confirmações de bloqueio, e são instantâneas e atômicas.

### Arbitragem de câmbio

Atualmente, há incentivos para manter os fundos nas bolsas de valores para estarem prontos para grandes movimentos de mercado, devido aos tempos de confirmação de bloqueio de 3-6. É possível para a troca de participar nesta rede e para os clientes para mover seus fundos dentro e fora da troca de pedidos quase instantaneamente. Se a bolsa não tem profundidade de mercado profunda e se compromete a permitir apenas ordens limite perto do topo do livro de encomendas, então o risco de roubo de moeda torna-se muito menor. A troca, na verdade, não teria mais necessidade de uma carteira de armazenamento a frio. Isso pode reduzir substancialmente roubos e a necessidade de guardiões de terceiros confiáveis.

### Micropagamentos

As taxas de bloqueio Bitcoin são muito altas para aceitar micropagamentos, especialmente com o menor valor. Com este sistema, micropagamentos quase instantâneos usando Bitcoin sem um terceiro ente seria possível. Permitiria, por exemplo, pagar por megabyte por serviço de internet ou por artigo para ler um jornal.

### Contratos Financeiros Inteligentes e Custódia

Os contratos financeiros são especialmente sensíveis ao tempo e têm demandas mais altas no cálculo de cadeias de blocos. Ao mover a esmagadora maioria das transações sem confiança fora da cadeia, é possível ter termos de contrato de transação altamente complexos sem nunca bater o blockchain.

### Pagamentos Cross-Chain

Enquanto existirem funções de hash semelhantes entre cadeias, é possível que as transações sejam roteadas em várias cadeias com regras de consenso diferentes. O remetente não tem que confiar ou até mesmo saber sobre as outras cadeias - até mesmo a cadeia de destino. Simi- larmente, o receptor não precisa saber nada sobre a cadeia do emissor ou qualquer outra cadeia. Todo o receptor se preocupa é um pagamento condicional sobre o conhecimento de um segredo em sua cadeia.
O pagamento pode ser encaminhado pelos participantes em ambas as cadeias no salto. Por exemplo. Alice está em Bitcoin, Bob está em Bitcoin e X-Coin e Carol está em uma hipotética X-Coin, Alice pode pagar Carol sem entender as regras de consenso X-Coin

## Riscos

Os riscos primários tangem ao estouro do tempo determinados pelos timelocks. Além disso, para nós principais e, possivelmente, alguns comerciantes para ser capazes de rotear fundos, as chaves devem ser mantidos on-line para menor latência. No entanto, os usuários finais e os nós são capazes de manter suas chaves privadas protegidas fora em armazenamento frio.
* Timelocks incorretos - Os participantes dever escolher timelocks com tempo suficiente.
* Spam de expiração forçada - Se um usuário malicioso criar muitos canais e forçar a expiração de todos ao mesmo tempo, isso pode imundar a capacidade de dados do bloco.
* Roubo de créditos por cracking - Como as partes devem estar online e usar chaves privadas para assinar, existe a possibilidade de que, se o computador onde as chaves privadas estão armazenadas estiver comprometido, as moedas serão roubadas pelo invasor.
* Perda de Dados - Quando um lado perde dados, é possível que o outro lado roube fundos
* Esquecimento do envio de broadcast com o tempo da transação - Se um não enviar uma transação na hora correta, o outro lado pode roubar fundos
* Inabilidade de realizar 'soft-forks' necessários
* Combate a ataque de mineradores - Os mineiros podem optar por recusar entrar em transações específicas (por exemplo, transações de reparação de infração) para auxiliar no roubo de moeda. Um atacante pode pagar todos os mineiros para se recusar a incluir certas transações no seu mempool e bloco

## Conclusão

A criação de uma rede de canais de micropagamento permite que o bitcoin consiga a tão desejada escalabilidade , micropagamentos que partem desde o satoshi, e transações quase instantâneas. Esses canais representam transações Bitcoin de verdade, usando a linguagem de scripting do Bitcoin para permitir a transferência de fundos sem risco de roubo de contraparte, especialmente com mitigação de longo prazo do risco do minerador.
Se todas as transações usando Bitcoin estivessem na blockchain, para permitir que 7 bilhões de pessoas fizessem duas transações por dia, exigiria blocos de 24GB a cada dez minutos na melhor das hipóteses (supondo 250 bytes por transação e 144 blocos por dia). Realizar todas as transações globais na blockchain hoje implica que os mineradores precisarão fazer uma quantidade incrível de computação, limitando severamente a escalabilidade bitcoin e os nós completos a alguns processadores centralizados.
Se todas as transações usando o Bitcoin fossem conduzidas dentro de uma rede de canais de micropagamento, para permitir que 7 bilhões de pessoas fizessem dois canais por ano com transações ilimitadas dentro do canal, exigiria blocos de 133 MB (supondo 500 bytes por transação e 52560 blocos por ano) . A geração atual de computadores desktop será capaz de rodar um nó completo com blocos velhos configurados em 2TB de armazenamento.
Com uma rede de canais de micropagamento confirmados instantaneamente cujos pagamentos são sobrecarregados por timelocks e saídas de hashlock, o Bitcoin pode escalar para bilhões de usuários sem o risco de custódia ou a centralização blockchain quando as transações são conduzidas de forma segura fora da blockchain usando o script do bitcoin, com a aplicação da não-cooperação através da transmissão de transações multiassinadas na blockchain.