Como os canais de pagamento e a rede de raios funcionam no Bitcoin?

Este artigo é dedicado à consideração dos canais de pagamento fora da cadeia: seus tipos, princípios operacionais e recursos de aplicativo. O material apresentado ajudará a entender por que a idéia de canais de pagamento é revolucionária nos sistemas de contabilidade financeira. Falaremos sobre canais de pagamento especificamente para Bitcoin. Este artigo será útil para aqueles que não estão familiarizados com o conceito de canais de pagamento e também dará uma compreensão dos princípios da rede de raios.

Canais de pagamento e informações básicas sobre eles


O que é um canal de pagamento?


Um canal de pagamento é um método de fazer vários pagamentos sem adicionar uma transação ao blockchain. Ao mesmo tempo, os membros do canal interagem apenas entre si. A presença de validadores adicionais ou de terceiros confiáveis ​​não é necessária.

Benefícios do canal de pagamento


Quais são os benefícios de um canal de pagamento em transações regulares?
Como parte de um canal de pagamento já aberto, os participantes têm a oportunidade de fazer pagamentos instantâneos. A parte receptora realiza uma verificação independente rápida e aceita o pagamento. Não há comissões na versão básica. Por conseguinte, os micropagamentos têm um lugar para estar. É por esse recurso que os canais de pagamento também são chamados de canais de micropagamento.

Outra vantagem interessante é que a interação dos participantes do canal pode ser realizada em particular. Consequentemente, os detalhes de cada micropagamento permanecerão em segredo de todos os outros, embora o fato de usar um canal de pagamento entre endereços Bitcoin específicos seja conhecido por todos.

Recursos do canal de pagamento


Isso não quer dizer que os canais de pagamento tenham sérias falhas em comparação às transações regulares, mas existem algumas características.

O canal de pagamento deve ser aberto e, portanto, fechado mais cedo ou mais tarde. Isso é feito por transações separadas na cadeia. Para eles, o pagamento de uma comissão é inevitável e requer confirmação pendente. Para uma transação de abertura, é melhor aguardar a confirmação completa.

Dentro de um canal específico, os pagamentos estão disponíveis apenas dentro de um valor predeterminado. É definido pelos próprios participantes, congelando a quantidade desejada usando um script Bitcoin especial.

Os canais de pagamento podem ser unidirecionais e bidirecionais, monidirecionais ou bidirecionais, respectivamente. Depende da própria metodologia de implementação do canal.

A vida útil do canal e o número máximo de pagamentos podem ou não ser limitados. Depende da técnica. Consequentemente, os canais podem ser fechados após um certo tempo ou antes do previsto. Além disso, o canal pode ser fechado por consentimento mútuo dos participantes ou a pedido de um deles, mas com alguns recursos.

Em uma versão simplificada, a operação do canal de pagamento pode ser representada nesse esquema.

imagem

Existe uma rede bitcoin. Existem dois usuários: Alice e Bob. Eles possuem carteiras Bitcoin com um módulo adicional para o canal de pagamento funcionar de acordo com um determinado método. Esses módulos trocam dados por pagamentos diretos.

De quem ideia?


Pela primeira vez, a idéia de canais de pagamento foi descrita pelo próprio Satoshi Nakamoto em uma carta pessoal a um dos desenvolvedores de protocolo ativos há muitos anos. Então, de volta ao Bitcoin, não foram aceitas atualizações muito importantes que permitiram projetar canais de pagamento confiáveis. No entanto, mais tarde, tornou-se possível e em 2013 retornou a essa ideia verdadeiramente promissora.

Sobre métodos de implementação de canais de pagamento


Vamos considerar quatro principais.
Os canais de pagamento no estilo Spillman são a versão mais simples de um canal unidirecional com uma vida útil limitada e um número ilimitado de pagamentos.

Posteriormente, outra melhoria do protocolo Bitcoin foi adotada e os canais de pagamento no estilo CLTV, que representam um método anterior aprimorado, tornaram-se possíveis.

Os canais de pagamento Poon-Dryja são um método de canal bidirecional com tempo de execução ilimitado. Eles exigem mais algumas atualizações do protocolo Bitcoin que foram adotadas recentemente. Além disso, esses canais são usados ​​no design da rede de raios.

Os canais de pagamento duplex Decker-Wattenhofer são uma opção para usar dois canais unidirecionais ao mesmo tempo, melhorando suas propriedades formando não uma cadeia seqüencial de transações substituíveis, mas uma árvore inteira de transações substituíveis. Além disso, esses canais podem ter mais de dois participantes.

Vamos nos concentrar nos dois primeiros métodos com mais detalhes, mas primeiro repetiremos alguns recursos do protocolo Bitcoin.

Alguns dos protocolos Bitcoin


nLockTime é um campo no corpo de cada transação que contém um carimbo de data / hora ou número de bloco. Antes desse período ou altura da blockchain, os validadores não têm permissão para incluir uma transação em um bloco.

nSequence é um campo em cada entrada de transação que contém o valor de tempo durante o qual a confirmação dessa transação não é possível. Além disso, o tempo é calculado em relação a quando a saída que esta entrada gasta foi confirmada.

A MultiSignature possibilita definir essas condições na saída de uma transação, segundo a qual é necessário fornecer várias assinaturas eletrônicas. Essas assinaturas serão verificadas por chaves públicas específicas.

Canais de pagamento no estilo Spillman


Portanto, os canais de pagamento no estilo Spillman são um método de criação de canais de pagamento monidirecionais em que há uma função de remetente e outra de destinatário. O tempo de operação desse canal é definido arbitrariamente pelo remetente, enquanto o receptor pode fechar prematuramente o canal.

Vejamos as principais etapas desse canal no diagrama.

imagem

Por conveniência, imagine que exista algum serviço que negocie o acesso à rede global por meio de um ponto de acesso wi-fi e algum cliente que queira acessar a rede por um dia. O serviço custará um bitcoin. Obviamente, o cliente não confia no serviço por esse valor e deseja pagar pelo tráfego por segundo.

Eles decidem abrir um canal de pagamento por um dia com uma quantidade de um bitcoin. O serviço gera um novo par de chaves para assinatura eletrônica e transfere a chave pública para o cliente. O cliente, por sua vez, gera um novo par de chaves e usa sua chave pública e a chave pública do serviço para formar o endereço de multi-assinatura 2-de-2. Além disso, o cliente forma a transação número um, na qual ele envia um bitcoin para um endereço de várias assinaturas, assina, mas não o distribui para a rede Bitcoin, já que o serviço pode substituir o cliente e se recusar a assinar transações para transferência adicional de um bitcoin.

Portanto, o cliente forma a transação número dois, em que moedas com endereços com várias assinaturas são enviadas para o endereço que ele controla. Além disso, define o campo nLockTime para que a transação possa ser confirmada em um dia. Ele não assina esta transação, mas a envia para o serviço. Por sua vez, o serviço concorda que o cliente pode pegar a moeda inteira para si mesmo, mas não antes de um dia, e assina a transação com sua chave. Ele passa a assinatura para o cliente, o cliente verifica. Agora ele tem a oportunidade de pré-assinar a transação com sua chave e garante a retirada da moeda se o serviço decidir recusar o serviço.

Na próxima etapa, o cliente distribui a transação número um à rede Bitcoin ou a transfere para o serviço para distribuição, caso não possua a conexão. Após a confirmação da primeira transação, o canal de pagamento é considerado aberto.

Nesse caso, a transação número um é chamada de transação de financiamento e a segunda é a transação de reembolso.

Como é realizada a interação nos cálculos dentro do canal de pagamento? Vejamos o diagrama a seguir.

imagem

Para enviar o primeiro pagamento, o cliente solicita ao Bitcoin o endereço do serviço, que ele controla independentemente. Além disso, o cliente forma a transação número três, na qual uma moeda com um endereço de multi-assinatura é distribuída entre duas saídas: a primeira é um pagamento ao endereço de serviço em um segundo da operação do ponto de acesso e a segunda é a entrega no endereço do próprio cliente. O cliente assina a transação número três com sua chave e a passa para o serviço. O serviço verifica a exatidão da transação e a assinatura, após o que aceita o pagamento, porque pode assinar novamente essa transação com sua chave privada e é garantido que receberá o pagamento pelo primeiro segundo de tráfego, se o fizer dentro de 24 horas. Mas se o serviço pretende continuar a prestar serviço ao cliente e receber o pagamento dentro do canal, ele simplesmente salva a transação número três localmente até que o canal seja fechado.

Para enviar todos os pagamentos subsequentes, o cliente altera a saída da transação número três, respectivamente, a assina novamente e transfere apenas a assinatura e o valor da alteração para o serviço. O serviço também verifica os dados recebidos e salva a nova versão da transação número três, porque nesta versão recebe mais moedas.

Como é feito o fechamento do canal?

imagem

O diagrama mostra que o serviço deve ter tempo para publicar a versão mais recente da transação número três na rede Bitcoin antes do final do tempo de operação do canal. Caso contrário, o remetente pode trapacear, pré-assinar e publicar a transação número dois, onde ele levará o valor total para o seu endereço.

Vale ressaltar que o cliente pode publicar uma transação de reembolso a qualquer momento durante a operação do canal. O serviço consideraria esse comportamento trouxa. Portanto, ele monitora constantemente a aparência dessa transação na rede e, se detectado, encerra o contrato com o cliente, fechando o canal com antecedência, publicando a versão mais recente da transação número três.

Canais de pagamento no estilo CLTV


Vamos agora ver uma versão aprimorada desse método, a saber, os canais de pagamento no estilo CLTV.

Esse método de canais de pagamento tornou-se aplicável após a atualização do softfork Bitcoin com a adição de um novo código de script - OP_CHECKLOCKTIMEVERIF. Sua peculiaridade é que agora na saída da transação você pode definir essas regras de acordo com as quais as moedas podem ser gastas apenas em uma transação com o parâmetro set nLockTime não inferior ao especificado. De fato, isso significa que, entre outras condições, as moedas podem ser gastas somente após um certo período de tempo. Agora, usando operações de ramificação de condição com script, ou seja, IF-ELSE, você pode definir diferentes condições de gasto, dependendo do tempo. A vantagem desses canais de pagamento em comparação com os anteriores é que você não precisa criar uma transação de reembolso. Em vez disso, você pode especificar uma condição dupla para gastar moedas no script de saída da transação de financiamento. Ou seja, antes do horário de fechamento do canal, as moedas podem ser gastas de acordo com as regras da multissinatura e, após o fechamento, uma assinatura será suficiente.

Como os canais de pagamento são aplicados?


Existem duas opções: na forma pura para pagamentos regulares entre partes pré-estabelecidas, ou na formação de uma rede de raios, trocando de canal entre si. Trocar significa a possibilidade de efetuar um pagamento entre usuários que não abriram um canal de pagamento entre si, mas que possuem canais abertos com outros participantes da rede. Em seguida, o valor será transmitido através de uma cadeia de canais de participantes não autorizados, se houver.

No caso da rede de descargas atmosféricas, existem dificuldades e recursos adicionais. Esse é o desenvolvimento de um formato geralmente aceito para alternar canais e nós do protocolo de comunicação. É importante que carteiras de alguns desenvolvedores possam trabalhar com carteiras de outros. Outro desafio é o problema de roteamento nesta rede. A tarefa é tal que você precisa encontrar a maneira mais curta de transferir valor, levando em consideração o fato de que em cada canal há restrições na quantidade de transferência em cada direção.

Funcionalidades de rede


No diagrama a seguir, vejamos os recursos da rede Bitcoin e da rede de descargas atmosféricas.

imagem

Na rede Bitcoin, os nós trocam dados sobre transações e blocos, bem como endereços de rede um do outro. Nesse caso, é alcançado um consenso e um banco de dados comum é formado. Além dos nós completos, existem nós leves na rede Bitcoin que recebem apenas as informações necessárias, sem processar e armazenar o histórico inteiro.

Em uma rede relâmpago, os nós não trocam transações prontas e não alcançam consenso. Mas também é importante que eles atualizem informações sobre o estado um do outro e troquem mensagens para manter o trabalho dentro dos canais de pagamento. Note-se que a rede de raios também não será homogênea, no sentido de que haverá nós com mais e menos carga, assim como nós com atividade instável. Provavelmente, haverá hubs na rede, nós com um grande número de canais de pagamento abertos e eles terão que lidar com uma grande carga. E usuários comuns abrirão na melhor das hipóteses um ou dois canais de pagamento e com um desses hubs.

Isso acontecerá porque, para abrir cada canal de pagamento, você precisa congelar um determinado número de moedas e aceitar e enviar pagamentos apenas dentro de um valor limitado. Se um usuário comum divide suas moedas em várias partes e abre vários canais, na verdade ele receberá uma janela muito pequena para pagamento em cada canal, em comparação com o valor original. Ao mesmo tempo, grandes organizações como desenvolvedores de carteiras, trocas centralizadas ou comerciantes populares atuarão como hubs. Eles podem manter um grande número de canais abertos por grandes quantidades e por longos períodos sem ficarem offline.

Questões quentes


Considere as perguntas mais frequentes sobre canais de pagamento e a rede elétrica.

- Qual é a confiabilidade dos pagamentos nos canais em comparação com transações regulares de Bitcoin?

Por confiabilidade, os pagamentos nos canais podem ser comparados aos comuns, ou seja, as moedas não serão retiradas e os pagamentos não serão cancelados. Mas existem vários recursos, como a necessidade de abertura e fechamento oportuno de canais, restrições na quantidade dentro do canal, a necessidade de sincronização constante com a rede Bitcoin, a probabilidade de congelar moedas por um tempo.

- A largura de banda nos canais e na rede de raios é limitada?

O fato é que não há restrições, mas pode haver atrasos associados ao processamento de canais, reconhecimento da rede e construção de rotas, que dependem do desempenho de participantes específicos. Além disso, os nós podem ficar offline imprevisíveis, o que pode ter certas restrições ao efetuar pagamentos por outros participantes.

- Os membros do canal devem confiar um no outro?

Não, o mecanismo dos canais de pagamento fornece proteção contra quaisquer ações maliciosas das partes que interagem.

- Qual a utilidade dos canais para uma pessoa que deseja enviar apenas um pagamento?

Se uma pessoa deseja se livrar das moedas mais recentes e não planeja mais aceitar e enviar pagamentos, não faz sentido abrir um canal, é necessário enviar uma transação normal na cadeia. Em todos os outros casos, a abertura de um canal será útil.

Uma das palestras do curso online da Blockchain " Canais de pagamento fora da cadeia " também é dedicada a esse tópico.

Source: https://habr.com/ru/post/pt414793/


All Articles