Categorias
Como funcionam? Mastering Bitcoin

Canais de Pagamentos – Libertar a Blockchain

Um canal de pagamento é um mecanismo para fazer transacções de bitcoin entre dois endereços, fora da blockchain e sem ser necessário que qualquer das partes confie na outra. Como estas transacções são feitas fora da blockchain podem ser feitas sem os atrasos necessários para as confirmar. Esta característica permite um elevado número de transacções e micro-transacções (até às fracções mais pequenas de bitcoin – satoshi). No entanto, são consideradas válidas na blockchain da Bitcoin.

O que acontece num canal de pagamento?

Um canal de pagamento é estabelecido através de uma transacção inicial que bloqueia um estado partilhado na blockchain. Esta é conhecida como a transacção de fundação ou âncora. É necessário transmiti-la para a rede e ser minerada para considerar o canal aberto. Neste caso, o estado partilhado é o saldo inicial do canal definido pelas quantidades fornecidas por cada parte.

Durante a existência do canal cada interveniente emite transacções que têm que ser assinadas pelas duas partes para serem válidas. São chamadas transacções de compromisso. Desta forma, elas são passíveis de ser submetidas à rede e ficarem registadas num bloco a qualquer momento. No entanto, as duas partes escolhem não o fazer até que se feche o canal. O estado do canal, o seu balanço, pode ser actualizado tão rápido quanto os intervenientes conseguirem criar, assinar e transmitir as transacções para o seu par. Isto significa que podem ser criadas milhares de transacções por segundo.

Cada alteração de estado anula a anterior para que apenas a transacção mais actual seja emitida para a blockchain em qualquer momento. Isto evita que uma das partes feche o canal unilateralmente com um estado que a beneficie, quer isto aconteça por má intenção ou perda do acesso à rede.

No final das trocas, será enviada para a blockchain uma transacção de resolução. É com esta troca final que é estabelecido o saldo final do canal e fica assim registado a alteração de fundos entre os intervenientes. Esta transacção pode ser feita em cooperação ou unilateralmente, como referido.

Dois aspectos importantes a reter sobre o funcionamento dos canais de pagamento:

  • apenas as transacções de fundação e resolução do canal são enviadas para a blockchain – todas as trocas feitas no canal ficam entre os intervenientes, registando-se apenas as trocas finais de fundos entre os dois;
  • todas as transacções efectuadas durante a vida do canal requerem assinaturas de ambas as partes – são transacções multi-assinatura 2-de-2.

canal

Exemplo de um canal de pagamento simples

Vamos ver como funciona um canal de pagamento muito simples, em que o valor flui apenas num sentido e em que nenhuma de partes está a tentar enganar a outra.

O Manuel é jogador de videojogos online e tem um serviço de streaming. Cobra 1 satoshi por cada segundo de vídeo. A Maria é sua fã e está interessada em ver os seus vídeos para aprender mais sobre a sua forma de jogar.

A Maria criou um canal de pagamento para aceder ao serviço do Manuel. Para o fazer é criado um endereço multi-assinatura 2-de-2 (necessita de 2 assinaturas para poder assinar uma transacção) em que é entregue a cada interveniente uma das chaves privadas. Ambos utilizam software apropriado para gerir todas as operações envolvidas para que a Maria e o Manuel possam apreciar o jogo.

A Maria faz uma transacção de fundação do canal de 3600 satoshis para esse endereço que funciona como um depósito e que estabelece a capacidade do canal. Este é o montante máximo que pode ser transmitido através deste canal.

Para iniciar a transmissão, o software da Maria cria uma transacção de compromisso que paga 1 satoshi para o Manuel e um reembolso de 3599 satoshis (sats) para si própria. De seguida, assina-a e envia para o Manuel. O seu software recebe, assina a transacção e envia de volta o primeiro segundo de vídeo. Esta transacção pode ser “resgatada” por qualquer das partes já que está assinada pelos dois. No entanto, não é transmitida para a rede pois os intervenientes ainda estão interessados em continuar com o canal aberto para proceder a mais transacções.

No segundo seguinte é feita uma nova transacção que altera os pagamentos a cada parte. 2 sats para o Manuel e diminui o reembolso para 3598 sats. A cada segundo que passe é criada uma nova transacção que altera o saldo do canal de acordo com as regras definidas. Mais um satoshi para o Manuel, menos um para a Maria.

Depois de 600 segundos de vídeo é feita uma transacção que define um pagamento de 600 satoshis para o Manuel e 3000 de volta para a Maria. Neste momento a Maria, pára de ver o vídeo e a última transacção é finalmente transmitida para blockchain da Bitcoin. A transacção de resolução altera de forma definitiva os saldos dos endereços da Maria e do Manuel para incluírem as alterações efectuadas pelo canal de pagamento estabelecido no protocolo.

No final do processo, apesar de terem sido criadas 600 transacções válidas assinadas por ambas partes, apenas duas ocuparam espaço e largura de banda da rede Bitcoin.

Os canais de pagamento permitem incluir na rede Bitcoin transacções instantâneas e em muito maior número.

O exemplo apresentado é simplista mas serve para explicar os parâmetros básicos em que esta tecnologia se baseia. No próximo artigo, vamos perceber mais a fundo como podemos ter canais seguros que não dependam da honestidade e boa-vontade dos intervenientes.

2 replies on “Canais de Pagamentos – Libertar a Blockchain”

[…] No último artigo, vimos como funciona um canal de pagamento. No entanto, esse exemplo dependia da boa-fé dos intervenientes. Quando o objectivo é instalar uma rede que consiga transmitir valor, sem ter uma autoridade central a controlar, as transmissões têm que ser independentes de quaisquer valores éticos e puramente matemáticas para garantir o bom funcionamento da rede. A forma mais eficaz de conseguir resolver este problema é a aplicação de transacções avançadas que já vimos num artigo anterior. […]

Gostar

Deixe uma resposta para Utilizar Transacções Avançadas em Canais de Pagamento – Parte 1 – André Barros – O Aprendiz de Cripto Cancelar resposta