Notícias

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin

Um usuário do Reddit sob o apelido btc_throwaway1337 relatou a compra bem-sucedida de um roteador VPN da TorGuard utilizando a Lightning Network na rede principal do Bitcoin.

 

A empresa Bitlum – que desenvolve aplicativos através da rede Lightning Network – criou uma série de artigos sobre a operação desta rede especificamente para a revista ForkLog. A primeira parte descreve pré-requisitos para a criação do conceito Lightning Network e oferece análise comparativa com outros sistemas de pagamento.

A série inteira inclui as seguintes partes:
  • Lightning Network parte 1: Introdução: descrição dos pré-requisitos para criar o conceito da Lightning Network e análise comparativa com outros sistemas de pagamento.
  • Lightning Network parte 2: Áreas de Aplicação: uma descrição breve da tecnologia e exemplos de uso em vários campos.
  • Lightning Network parte 3: Contratos Inteligentes: Explicação dos principais blocos necessários para a descrição técnica mais detalhada do conceito.
  • Lightning Network parte 4: Canal de Pagamento: uma explicação do conceito do canal de pagamento e sua aplicação para troca rápida de bitcoins.
  • Lightning Network parte 5: Resolvendo o Problema da Escala: Explicação do uso dos canais de pagamento para construir uma rede de pagamento e resolver o problema da escala.

Este artigo fornecerá uma definição completa do canal de pagamento e explicará o desenvolvimento evolutivo de contratos inteligentes que formam o seu núcleo.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 1: Descrição dos símbolos utilizados nos diagramas

Há três processos relacionados ao funcionamento de um canal de pagamento:

  1. Abertura do canal: processo de registro do canal de pagamento na Blockchain e a formação do estado inicial.
  2. Uso do canal: processo de uso de um sistema de contratos inteligentes para pagamentos fora da Blockchain (off-chain).
  3. Encerramento do canal: processo de registro do estado final dos saldos dos usuários na Blockchain.

Abertura e encerramento do canal

Para abrir um canal, a Alice e o Bob devem:

  1. Bloquear seu dinheiro em um cofre comum (multisig) através do processo de criar e enviar uma transação de financiamento (funding transaction) para a rede.
  2. Criar uma transação (commitment transaction), que reflete o estado atual e distribui o dinheiro do cofre comum na proporção original.
  3. Salvar a transação gerada em ambos os lados e não enviar esta transação à rede para processamento pelos mineradores.
  4. Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 2: Criando um cofre comum através de uso do contrato inteligente multisig

Vamos chamar uma transação que gaste dinheiro do cofre comum de “transação-estado”. Com esta transação, Alice e Bob podem recuperar seu dinheiro do cofre comum. De uma certa forma, uma transação-estado é um contrato entre dois participantes que podem executá-la a qualquer momento, enviando-a à rede dos mineradores.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 3: Criando uma transação-estado inicial

O envio da transação-estado para a rede e a divisão do dinheiro do cofre comum é equivalente a encerrar o canal. Nesse caso, se fizermos isso, dividiremos o dinheiro do cofre comum na proporção original.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 4: Encerrando o canal através do envio da transação-estado para a rede dos mineradores.

Conforme mencionado anteriormente, transações-estado armazenam contratos inteligentes para cada um dos cofres, onde o princípio da abertura adicional dos mesmos é registrado. Em nosso caso, o cofre número três pode ser aberto por Alice e o do número quatro, por Bob.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 5: Uma opção de cofre para Alice e Bob, registrada no conrato intelligente da transação-estado

É importante notar que, devido ao fato de que estamos usando um cofre comum (multisig), assinaturas eletrônicas de ambas as partes são necessárias para a criação de uma nova transação-estado, portanto, nenhum dos lados pode criar um novo estado sem o conhecimento da outra parte.

O processo de criar um cofre comum e da transação-estado inicial leva pelo menos 10 minutos e é chamado de abrir um canal. O ato de enviar uma transação-estado para a rede e dividir o dinheiro na proporção designada é chamado de encerramento do canal e leva 10 minutos também. Agora vamos ver como esta estrutura permite a execução de pagamentos sem a utilização da Blockchain.

Usando o canal

Vamos definir “pagamento” como um processo de cancelamento da transação-estado antiga e criação de uma nova, onde um dos participantes obterá uma quantidade de dinheiro maior do cofre comum, em comparação com o estado anterior.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 6: Realizando um pagamento de Alice para Bob no valor 1,33 BTC, modificando a transação-estado

O processo de transição do estado antigo para o novo leva uma fração de segundo, uma vez que não requer um registro na Blockchain e é limitado apenas pela velocidade da conexão com a Internet entre os nós. É através disso que a velocidade é alcançada no conceito da Lightning Network.

O ponto fraco deste conceito é que o valor máximo que pode ser transferido para a outra parte não pode ser maior que a quantidade de dinheiro bloqueada no cofre comum. Esta restrição pode ser parcialmente levantada aumentando o cofre e reequilibrando os canais.

Depois que a interação entre os participantes termina, eles enviam a transação-estado final à rede e encerram o canal, recebendo assim o dinheiro de volta, mas em uma proporção diferente.

Exemplo: Vamos supor que você deseja vender 10 BTC na bolsa de valores, mas existem alguns requisitos:

  1. Você não quer manter seu dinheiro na bolsa.
  2. Quando chegar a hora X, você deseja poder transferir o dinheiro rapidamente para a bolsa e fazer uma troca.

Para fazer isso, você precisa criar um canal com a bolsa, no qual, da sua parte, você investe 10 BTC. Uma vez que já tem uma transação-estado inicial, você não precisa se preocupar com seu dinheiro, pois sabe que será possível retirá-lo. Na hora hora da venda, você deverá fazer uma mudança de estado e atribuir 1 BTC à bolsa. Por sua vez, a bolsa vê que no novo estado, ela possui 1 BTC e agora pode lhe dar o direito de comprar outro bem. Depois de ter feito um número suficiente de transações na bolsa, você encerra o canal e, ela receberá do cofre comum a quantia de dinheiro que você transferiu.

A figura 5 mostra um esquema muito simplificado de obtenção de dinheiro. Ela não contém um mecanismo para cancelar um estado. Vamos continuar a explicar o processo de cancelamento da transação-estado e introduzir mecanismos adicionais no contrato inteligente.

Cancelamento do estado

Problema: dada a estrutura da transação-estado, durante a transição para um novo estado, o participante que agora tem menos dinheiro pode enviar o estado antigo para a rede, cancelando assim seus gastos.

Objetivo: como não podemos garantir que a outra parte removerá a transação-estado antiga ao mudar para uma nova, devemos assegurar que o envio do estado antigo não seja economicamente lucrativo. Isso pode ser feito através da introdução de um mecanismo do fino: se uma das partes enviar o estado antigo para a rede, todo o dinheiro dela pode ser pego por outra parte.

Mudança 1: vamos fazer com que Bob também possa abrir o novo cofre de Alice (3). Para abrir o cofre de Alice, Bob terá que fornecer sua assinatura eletrônica, bem como uma chave adicional, que inicialmente pertence apenas à Alice. O mesmo será feito com o cofre de Bob. Durante a transição para um novo estado, Alice e Bob são obrigados a trocar de chaves, cancelando assim o estado anterior.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 7: Esquema suplementar de gastos dos cofres de Alice e Bob

Mudança 2: nesta fase, pioramos a situação: durante a transição para um novo estado, ambos os lados enviarão o estado antigo e tomarão o dinheiro dele e da outra parte, pois anteriormente tinham trocado chaves secretas.

É necessário garantir que, se Alice enviar o estado antigo, Bob possa pegar o dinheiro dela, e vice-versa. Isso pode ser atingido armazenando várias transações-estados do lado de Alice e Bob.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 8: Armazenamento de várias transações-estado do lado de Alice e Bob

Se a Alice enviar sua antiga transação-estado agora, Bob poderá pegar tanto seu próprio dinheiro como o dela, já que a Alice deu a chave, contudo, o mesmo é válido para Bob também. Com esta configuração, nenhum dos lados terá motivação para enviar seu estado antigo à rede.

Mudança 3: ainda resta um problema: uma das partes pode aproveitar do fato de a outra parte estar offline e enviar o estado antigo, conseguindo assim tirar o dinheiro antes que a outra parte reaja. Portanto, um mecanismo de bloqueio de tempo deve ser inserido.

Vamos garantir que, se Alice enviar seu estado, ela pode retirar seu dinheiro não imediatamente, mas depois de algum tempo, enquanto Bob não terá essa restrição. Neste caso, se Alice quiser aproveitar a ausência do Bob, o mesmo terá um tempo a mais para multar Alice.

Canal de pagamento dentro da rede Lightning Network: maneiras de usá-lo para troca rápida de Bitcoin. BTCSoul.com

Figura 9: Transação-estado com o mecanismo de bloqueio de tempo

Encerramento cooperativo

Problema: as mudanças que fizemos na transação-estado geraram um novo problema: se Alice e Bob querem encerrar o canal de forma cooperativa, nenhum deles terá a motivação para fazê-lo primeiro, porque neste caso, a pessoa não poderá retirar dinheiro imediatamente devido ao mecanismo de bloqueio de tempo.

Solução: vamos dividir o processo de encerramento em dois tipos: encerramento forçado e cooperativo.

No momento, as duas partes armazenam diferentes transações-estados que lhes garantem que possam retirar o dinheiro estipulado e também contêm mecanismos necessários para o cancelamento em caso de transição para um novo estado.

Todos os mecanismos que adicionamos para o cancelamento seguro são necessários apenas durante a transição para um novo estado. No caso do encerramento cooperativo do canal de pagamento, as partes podem gerar um novo estado que reflete os mesmos saldos, mas não contém mecanismos de cancelamento. A resultante transição-estado cooperativa será equivalente à versão original (Fig. 5). O processo acima é chamado de encerramento cooperativo (cooperative close).

Se uma das partes se desligou (ficou offline) e não há possibilidade de encerrar o canal de forma cooperativa, a outra parte ainda pode receber o dinheiro dela, enviando a ultima transação-estado, mas nesse caso, o dinheiro será recebido após a expiração do período de bloqueio de tempo. O envio da ultima transação-estado para a rede é chamado de encerramento forçado. (force close).

No próximo artigo, veremos como usar o htlc para fazer pagamentos via vários canais.

Assine nossa lista de e-mail!

e não perca nenhuma novidade sobre o Bitcoin e as criptomoedas
*Não se preocupe, nós odiamos spam e você pode sair da lista quando quiser.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *