Entendendo a Lightning Network, Parte 3: Fechando o Canal

primeira parte desta série abrangeu a construção dos blocos e explicou como eles são usados para estabelecer canais de pagamento bidireccionais. A segunda parte explicou como uma rede é formada, e como o Hash Timelock Contracts (HTLCs) vinculam diferentes canais da rede juntos. Esta terceira e última parte da série explica como os HTLCs são colocados dentro dos canais de pagamento bidirecionais para garantir que as transações possam ocorrer totalmente fora da blockchain.

Lightning Network

Até agora, Alice e Bob abriram um canal de pagamento bidirecional, ambos financiados com cinco bitcoins. Eles fizeram duas transações para frente e para trás, e no estado do canal atual, Alice e Bob podem reivindicar cinco bitcoins para eles mesmos “saindo do canal” na blockchain.

Agora, eles querem incluir um HTLC no canal. Isto é para garantir que se Carol reivindique um bitcoin de Bob em troca de seu valor, garantindo a Bob um bitcoin de Alice em troca.

Como o passo anterior, Alice e Bob começam criando uma nova transação de compromisso cada. De muitas maneiras, essas transações de compromisso são muito similares às transações de compromisso anteriores. Eles incluem uma saida (output) normal e um output para um endereço Multisig com um CSV (CheckSequenceVerify)-timelock e um hash-lock especial. Da mesma forma, como no passo anterior, Alice e Bob trocam seus antigos segredos, invalidando efetivamente o antigo canal. E, uma vez trocado, Alice e Bob podem assinar suas metades das transações de compromissos e potencialmente lançá-las na blockchain a qualquer momento.

Tudo normal. Com exceção de uma mudança. As transações de compromisso de Alice e Bob agora incluem um novo output, que vale um bitcoin. (Isso faz o equilíbrio 4-5-1; quatro para Alice, cinco para Bob, um para o novo resultado.)

Esta nova saída (output) é essencialmente o HTLC. E ainda mais legal do que todos os outros resultados até agora, porque existem três maneiras de desbloqueá-lo.

Primeiro, o novo resultado (nas transações de compromisso de Alice e Bob) libera o bitcoin na condição de que a assinatura de Bob e o valor estejam incluídos na transação subsequente. Como tal, independentemente de Alice ou Bob assinar e transmitir a transação de compromisso, apenas Bob pode desbloquear este output – se ele incluir o valor. Mas há uma pequena diferença entre as duas transações de compromisso: se Bob derruba o canal, há um CSV-timelock envolvido. Ele precisará esperar 1.000 blocos. (Se Alice derruba o canal, ele pode reivindicar este bitcoin imediatamente.)

A razão pela qual Bob tem que esperar 1.000 blocos se ele derrubar o canal é muito parecido com o que vimos antes: permite que Alice tome esse bitcoin caso Bob nunca tente assinar e transmitir um estado antigo do canal. É aí que entra a segunda maneira de desbloquear o output. Alice pode “roubar” os fundos se ela fornecer o segredo (mais novo) de Bob.

Dois podem jogar este jogo: se Alice tenta enganar e transmitir este canal quando já está desatualizado, Bob pode reivindicar este bitcoin usando o segredo de Alice. (Ele nem precisaria fornecer o valor.)

E, em terceiro lugar, como acontece com qualquer outro HTLC, ambas as transações de compromisso também incluem o retorno normal do time-out do CLTV para Alice. Se Bob não inclui o valor em – digamos – duas semanas (por exemplo, porque ele não conseguiu de Carol), Alice pode reivindicar seu bitcoin de volta. Mais uma vez, se Alice ou Bob sairem do canal não importaria para esta opção.

Então, onde nos trouxe tudo isso?

Tanto Alice quanto Bob possuem uma transação de compromissos meio valida. Se Alice coloca sua transação de compromisso na blockchain, ela imediatamente envia cinco bitcoins para Bob. Além disso, ela pode aguardar 1.000 blocos e reivindicar quatro bitcoins para si. Além disso, Bob tem duas semanas para fornecer o valor e reivindicar o bitcoin em “HTLC output”. (Se ele não fornecer o valor em duas semanas, Alice pode reivindicar este bitcoin de volta.)

Bob, entretanto, também pode deixar sua transação de compromisso a qualquer momento e enviar imediatamente quatro bitcoins para Alice. Então, ele teria esperado 1.000 blocos para reivindicar mais cinco bitcoins de um endereço e outro bitcoin do output do HTLC se ele fornecer o valor. (Se ele não fornecer o valor em duas semanas, Alice pode recuperá-lo.)

E, claro, se Alice ou Bob tentam enganar em qualquer ponto do futuro, e assinar e transmitir este canal quando está desatualizado, ambos podem bloquear completamente o outro e roubar todos os bitcoins no canal.

Configurando o Status

Neste ponto, Bob é garantido para receber um bitcoin em troca do valor (assumindo que ele tem). Tudo o que ele tem a fazer é assinar e transmitir a transação de compromisso que recebeu de Alice, incluir o valor em uma transação subseqüente e assinar e transmitir isso também.

Alice sabe disso. Não há nenhuma maneira que ela possa enganar Bob fora de seu bitcoin – nem mesmo se ela descobrir qual o seu valor através de outros meios.

Como tal, os dois também podem simplesmente “se estabelecer” fora do canal. Bob pode simplesmente dar o valor a Alice, e Alice pode concordar em atualizar o status do canal para o estado mais normal sem o HTLC e o prazo limite de tempo limite.

Supondo que ambas as partes querem manter o canal aberto, é o que eles fariam naturalmente: é menos um aborrecimento do que ter que soltar o canal na blockchain.

Fechando o canal

E, finalmente, aqui está o verdadeiro poder da Lightning Network: Quase tudo descrito nestes três artigos geralmente nunca precisará atingir a blockchain.

Se Alice e Bob querem fechar o canal “pacificamente”, eles podem simplesmente criar uma transação da transação de abertura original para anular tudo o que aconteceu desde a transação de abertura. A partir dessa transação de fechamento, eles se enviam sua parte justa do canal, conforme representado pelo estado do canal mais recente.

Concretamente, isso significa que, se Alice quiser fechar o canal, ela pode, neste momento, simplesmente criar uma transação pagando-se quatro bitcoins e Bob seis e pedir a Bob para assinar e transmitir a transação. Como não há nenhuma razão para ele não, ele provavelmente irá cooperar e fechar o canal.

No final, apenas duas transações terão sido transmitidas pela rede Bitcoin e incluídas em um bloco: as operações de abertura e de fechamento. Isso será verdade mesmo se Alice e Bob transacionarem um milhão de vezes no meio, então, tirando um enorme fardo da blockchain.

As outras partes:

Entendendo a Lightning Network, Parte 1: Construindo um Canal de Pagamento Bidirecional

Entendendo a Lightning Network, Parte 2: Criando a Rede

 

*Texto escrito por Aaron van Wirdum.