Categorias
Como funcionam? Mastering Bitcoin

Utilizar Transacções Avançadas em Canais de Pagamento – Parte 2

No último artigo vimos que para tornar os canais de pagamento mais capazes devemos utilizar as transacções avançadas. Aprendemos também de que forma as trancas de tempo podem melhorar os canais. Neste artigo vamos introduzir mais duas ferramentas que tornarão os canais de pagamento viáveis.

As trancas de tempo aplicadas a um canal de pagamento deixavam ainda duas limitações na sua utilização: um número limite de transacções suportadas e a duração máxima do canal.

Compromissos de Revogação Assimétrica

Uma maneira de prevenir estes problemas é simplesmente anular as transacções anteriores para que apenas a  última seja publicada. No entanto, na Bitcoin, uma transacção não pode ser revogada depois de ter sido minerada.

Apesar de não podermos cancelar uma transacção, conseguimos usar as bitcoins que estavam associadas a esse pagamento e tornar futuras transacções inválidas. Fazemos isto através de uma chave de revogação para que cada interveniente possa punir a outra parte se esta tentar enganá-lo. Esta chave é composta por duas metades. Cada uma construída por um dos intervenientes, sem que o outro a conheça.

Antes de avançar para um novo balanço do canal, as partes trocam as suas metades da chave, dando ao outro participante a capacidade de o castigar se tentar publicar na rede Bitcoin um estado anterior que o beneficie.

A cada novo balanço é feita uma transacção para assegurar que qualquer dos intervenientes pode castigar o outro se ele o tentar enganar. Essa transacção é composta por dois pagamentos, com os montantes de cada pagamento reflectindo o estado actual:

  • o primeiro feito ao outro interveniente e para ser feito imediatamente;
  • o segundo pagamento pago à chave de imediato, ou a si próprio ao fim de algum tempo.

O pagamento feito à chave significa que quem recebe as bitcoins é o endereço que apresentar a chave completa para as desbloquear.

Antes de cada novo estado cada participante, constrói uma transacção idêntica à descrita em cima. De seguida vai enviar dois itens para o seu parceiro:

  1. a transacção assinada;
  2. a sua metade da chave.

Assim cada interveniente fica com uma transacção assinada pela outra parte que lhe dá o poder de o castigar ficando com todos os fundos que estão no canal. Se se detectar alguma irregularidade pode-se completar a chave, publicar a transacção construída pelo outro participante e reclamar para si os dois pagamentos com a totalidade do dinheiro no canal.

Como funciona?

Para entender melhor, vamos usar um exemplo em que a Ana, no Brasil, e o Luís, em França, gerem cada um a sua correctora de criptoactivos e utilizam um canal de pagamentos em bitcoins para registar as suas transacções. Cada um aloca 5 bitcoins para a fundação do canal.

Quando um cliente do Luís quer enviar 2 bitcoins para um cliente da Ana, será feita uma transacção no canal para reflectir o novo estado do canal: 7 bitcoins para a Ana, 3 para o Luís.

Revogacao

No entanto, antes de se avançar para esse novo balanço o Luís fará a transacção que dará à Ana a segurança que se ele a tentar enganar ela pode ficar com o total das bitcoins no canal. Essa transacção terá dois pagamentos:

  1. feito à Ana imediatamente;
  2. feito à chave imediatamente ou ao Luís ao fim de 1000 blocos.

De seguida, o Luís envia à Ana a transacção e a metade da chave que construiu. A Ana envia também a sua metade da chave.

A Ana não tem interesse em publicar o primeiro estado pois tem menos bitcoins do que no segundo. Já o Luís ficaria a ganhar se publicasse o primeiro estado, uma vez que nesse não está reflectido a última transacção. Ao enviar a transacção descrita em cima e a sua metade da chave está a dar à Ana a capacidade para o castigar caso ela detecte que ele a está a tentar enganar.

A Ana guarda esta transacção e só a publicará se detectar na rede que o primeiro estado foi publicado. Enquanto isso, o canal passa ao estado 2 e fica pronto para mais transacções.

Esta ferramenta é um grande avanço para os canais de pagamento já que assim os canais podem ficar abertos indefinidamente e podem ter biliões de transacções de compromisso. Desta forma a rede aumenta a sua capacidade de maneira astronómica.

Contrato de Dispersão com Tranca de Tempo – HTLC

Os canais de pagamento ainda podem ser melhorados através de um contrato inteligente que se chama Hash Time Lock Contract (HTLC) – Contrato de Dispersão com Tranca de Tempo. Esta ferramenta é uma combinação de transacções avançadas as Trancas de Tempo e os Pagamentos a Dispersão de Código (P2SH).

Como vimos, utilizando a ferramenta P2SH podemos criar uma expressão mais curta que funciona como um segredo. Este segredo serve como chave que desbloqueia os fundos e os entrega a quem o provar saber. Está seguro através de uma função que cria uma dispersão dos dados inseridos.

Neste caso, aplica-se a Tranca de Tempo para adiar a transacção que devolveria os fundos ao emissor original ao fim de algum tempo. 

Da combinação destas duas condições temos uma transacção que funciona da seguinte forma: “Se alguém provar saber o segredo, recebe as bitcoins. Senão estas são devolvidas ao endereço original.

HTLC

Este segredo pode ser partilhado previamente ou ter sido acordado entre os softwares dos intervenientes de forma a que se consiga proceder à transacção de forma segura.

 

Os canais de pagamentos, e em especial a ferramenta HTLC, são muito importante para viabilizar a tecnologia Lightning Network – Rede Relâmpago – que implementa os canais de pagamento de forma generalizada no mundo, permitindo aumentar significativamente a capacidade da Bitcoin e reduzir o atraso nas suas transacções. Vamos perceber como no próximo artigo.

2 replies on “Utilizar Transacções Avançadas em Canais de Pagamento – Parte 2”

Deixe uma resposta para A Lightning Network em Acção – André Barros – O Aprendiz de Cripto Cancelar resposta