Os Payments Channels ou Canais de Pagamentos, são uma tecnologia desenvolvida para permitir pagamentos instantâneos sem custódia entre duas ou mais pessoas que usam uma criptomoeda. Isso para oferecer uma melhor experiência de pagamento com excelente segurança e comissões muito baixas.
LOs canais de pagamento ou Canais de Pagamentos, são meios pensados para que os utilizadores de criptomoedas Eles podem fazer transações instantâneas e de baixo custo, sem ter um impacto negativo no blockchain.
Essa necessidade é motivada pelas limitações de criptomoedas, como Bitcoin, e a maioria das criptomoedas no sistema, em termos de escalabilidade em transações por segundo e o espaço total da blockchain. Assim, um canal de pagamento permite que muitas pessoas realizem um grande número de transações em segundo plano, mas apenas duas transações são contadas na blockchain principal.
Obviamente, ao abrir um canal de pagamento (ou payment channel em inglês), os nós devem bloquear as moedas dos usuários para que não possam ser utilizadas fora do canal durante a vida útil do canal. Isso tem um custo enorme que torna pouco atraente manter os canais de pagamento abertos. Mas, por esse motivo, os canais de pagamento ainda são uma forma muito eficaz de fornecer grande escalabilidade para criptomoedas.
Neste ponto, você certamente se perguntará: Como eles funcionam? Eles estão seguros? Que sistemas existem hoje? Responderemos a todas essas perguntas a seguir, neste novo artigo da Bit2Me Academy.
Origem dos canais de pagamento em criptomoedas
A ideia de canais de pagamento em criptomoedas não é nova. Desde o início do desenvolvimento da tecnologia essa ideia esteve presente lá. Satoshi Nakamoto a apresentou como uma possibilidade tecnológica aplicável ao Bitcoin. Apoiado por OP_CODES de Bitcoin Script que foram usados para substituir transações e controlar sua validação. Falamos sobre OP_CODES nSequence y nLockTime, que permitiam que duas ou mais partes atualizassem repetidamente o status de uma transação não confirmada antes de ser confirmada.
O sistema rudimentar de Nakamoto permitiria a criação de transações que poderiam conter várias entradas. Cada uma dessas entradas seria assinada e verificada pelo usuário e titular dos fundos descritos na referida entrada. Assim, a cada nova assinatura, o valor de nSequence muda para um valor superior, até que a cadeia de assinaturas termine com a confirmação da transação em um bloco. E, ao mesmo tempo, a transação contém uma contabilidade interna com a qual os usuários concordam.
Assim, uma única transação pode significar várias transações diferentes para usuários diferentes. O sistema também permite que, caso os resultados não sejam acordados, o usuário em questão evite a assinatura e saia do sistema. Nesse caso, os fundos estão novamente sob seu controle e você pode prosseguir sem problemas.
Por outro lado, Nakamoto explicou que nLockTime pode ser usado em negociações de alta frequência entre um conjunto de partes. Para conseguir isso, nLockTime permitiria manter a atualização de uma determinada transação em mempool, se houver acordo unânime entre as partes. Desta forma, a transação seria atualizada sempre que uma das partes desejasse participar da transação (que atua como um canal de pagamento). Quando as partes concordam em fechar o canal, as assinaturas de todos os participantes chegam e definem o nLockTime final para a transação, e aguardam sua confirmação. Com a sua confirmação o canal é fechado e todas as operações descritas nas entradas e saídas são realizadas na mesma transação.
No entanto, ambas as opções não são seguras. Os valores nSequence e nLockTime podem ser manipulados por um minerador malicioso ou até mesmo por um nó malicioso. No entanto, a ideia básica dos canais de pagamento surgiu e, por trás dela, começaria uma extensa pesquisa para desenvolver uma solução mais segura para todos.
Começa o desenvolvimento dos primeiros canais de pagamento
As ideias de Satoshi Nakamoto rapidamente chamaram a atenção dos desenvolvedores da comunidade, que logo se viram com um problema complexo para resolver. Como fazer com que várias pessoas participem de um sistema de pagamento seguro, descentralizado e instantâneo construído no protocolo Bitcoin sem alterá-lo desnecessariamente? Conceber uma funcionalidade como esta é uma questão complicada, mas é mais complicado programá-la, e se acrescentarmos que tal programação é compatível sem quebrar nenhum dos anteriores, é extremamente complexo. Mesmo assim, surgiram rapidamente duas formas de fazer canais de pagamento e as explicamos a seguir.
Tipos de Payments Channels
Unidirecional
O sistema de canal de pagamento mais simples é o sistema de canal unilateral. Neste sistema, o usuário A pode fazer um pagamento B. Um novo usuário C pode entrar no canal e fazer um pagamento a D. E, assim, a cadeia de pagamentos no canal pode continuar a se expandir.
Esses pagamentos são controlados e protegidos por transações do tipo multi-assinaturaPortanto, para que sejam realizadas, as partes envolvidas devem assinar de acordo com os dados constantes das entradas e saídas da transação. À medida que o canal cresce, as assinaturas do sistema também crescem e todos devem assinar para que os recursos sejam liberados.
Além disso, um nLockTime de 50 blocos é aplicado, para evitar que os usuários usem o dinheiro imediatamente, mas ao contrário, o dinheiro só estará disponível após a confirmação de 50 blocos. Neste ponto, você pode ver o nLockTime como um cheque que só é válido após uma determinada data, antes dessa data é apenas um pedaço de papel sem valor. O nLockTime pode ser ajustado de qualquer maneira que as partes desejarem.
Desta forma, todos os participantes podem ter a certeza de que o pagamento foi efetuado, mas apenas receberão o dinheiro depois de satisfeitas as condições adicionais da negociação desse pagamento. Tomemos, por exemplo, que A pagou B para consertar um computador e B tem aproximadamente 500 minutos para consertar esse computador. Caso contrário, A ainda pode intervir na transação, alterar seu valor e receber seu dinheiro de volta.
Bidirecional
Os canais de pagamento bidirecionais são, na verdade, dois canais unilaterais que trabalham juntos. Graças a isso, A e B podem enviar pagamentos de forma bidirecional, sem a necessidade de fechar um canal anterior e abrir outro novo para operações de pagamento. A operação básica é mantida, exceto que os canais bidirecionais são perfeitos para realizar operações mais dinâmicas entre dois usuários ou entidades.
Por que os canais de pagamento foram criados?
No Bitcoin, as transações só podem ser confirmadas se estiverem incluídas em um bloco dentro da blockchain. Um processo que acontece a cada 10 minutos aproximadamente e no qual apenas 1 MB de informação pode entrar. Isso limita bastante o número de transações que podem ser confirmadas em cada bloco, com aproximadamente 2200 transações sendo confirmadas a cada 10 minutos.
Mas e se trapacearmos? E se incluirmos muitas entradas e saídas em uma transação e as partes envolvidas na transação assinarem a transação para dar sua aprovação? Com isso, a transação é finalmente emitida para a rede e validada e, portanto, uma transação seria o equivalente a várias transações individuais. Uma armadilha muito sutil, verdadeira, mas também muito útil e é exatamente o que faz um canal de pagamento. Pelo menos em seus recursos mais básicos.
Desta forma, os canais de pagamento se transformam em uma solução de segunda camada que permite ao usuário realizar transações sem ter que depender diretamente do próximo bloco para que uma transação seja considerada concluída. Assim, podemos realizar transações instantâneas que serão registradas por unanimidade na blockchain principal, quando o canal de pagamento for fechado. Nada se perde, as moedas não se criam do nada, no final tudo acaba na mesma contabilidade, e os números simplesmente coincidem.
É por isso que os canais de pagamento ou Payments Channels foram criados. É uma ferramenta perfeita para flexibilizar o pagamento através de criptomoedas, e tudo isso, sem alterar os protocolos atuais.
Vantagens e desvantagens dos canais de pagamento
Vantagens
- Eles oferecem a capacidade de fazer pagamentos instantaneamente entre as partes que participam do canal de pagamento. Mas também permite agendar pagamentos e torná-los mais seguros sob certas condições.
- Você pode fazer micropagamentos, até enviar alguns satoshis.
- Permite baixar as taxas de transação, graças ao fato de o pagamento da taxa de confirmação em rede ser feito entre todos os participantes do canal.
- Permite que as empresas recebam pagamentos em criptomoedas, deixando para trás os tempos de confirmação na cadeia, mas sem sacrificar a segurança.
- De acordo com as especificações atuais do canal de pagamento, é muito difícil (se não impossível) roubar fundos. Isso ocorre porque as implementações de canais de pagamento utilizam o esquema de endereços de múltiplas assinaturas, onde as ações só são realizadas se contiverem as assinaturas de todos os participantes.
Desvantagens
- Existe um limite para o número de transações que podemos fazer com os canais de pagamento.
- Os fundos para gastar em canais de pagamento devem ser colocados com antecedência. Isso significa que se o canal ficar sem dinheiro, será necessário abrir um novo para realizar mais operações.
- Ainda existem alguns problemas de segurança relativos aos canais de pagamento. Casos como vulnerabilidades em códigos de clientes e nós para este tipo de sistema. Ou mesmo vulnerabilidades na própria estrutura operacional, como no caso de Ataque de Dilatação Temporal. Esses são alguns dos problemas a serem resolvidos antes da massificação desses sistemas.
Quanto você sabe, cryptonuta?
Os canais de pagamento são uma solução insegura para dimensionar criptomoedas?FALSO!
Há um mito em que muitos usuários de criptomoedas como Bitcoin caem, e isto é, muitos dizem que canais de pagamento como a Lightning Network são inseguros. A realidade é que, embora a tecnologia ainda esteja em fase de desenvolvimento, canais de pagamento como o LN são muito seguros. Isso contrasta com outras opções, como aquelas baseadas em protocolos de consenso de alta velocidade e que, por sua vez, levam à centralização (como PoA ou PoET).
Primeiras implementações de canais de pagamento
No entanto, as implementações de canais de pagamentos têm evoluído nos últimos anos e continuam a evoluir. Aqui, citaremos algumas propostas e quais foram suas realizações mais marcantes.
BitcoinJ e seus canais de pagamentos
Os desenvolvedores Mike Hearn e Matt Corallo adicionaram suporte para canais de pagamento em BitcoinJ, em 27 de junho de 2013. Com a implementação, BitcoinJ se tornou a primeira biblioteca externa a Bitcoin Core capaz de suportar este sistema com segurança. O Bitcoin Core poderia usar um sistema de pagamento desse tipo, mas como mencionamos no início desta página, era inseguro porque os mineradores ou nós podiam manipular esses canais usando os meios existentes (nLockTime e nSequence).
BIP-65, o nascimento da CLTV
O Bitcoin Core revolucionou a capacidade de criar canais de pagamentos com a ativação OP_CHECKLOCKTIMEVERIFY ou CLTV, um novo OP_CODE para Bitcoin.
Graças a este código é possível provar que é impossível gastar uma saída de transação até algum momento no futuro. Isso é possível graças ao fato de que CLTV permite implementar um teste capaz de saber se uma assinatura válida foi criada para uma transação diferente que gasta uma determinada saída. Caso seja detectado este caso, o CLTV pode invalidar a nova transação, evitando possíveis esquemas de gasto duplo.
Simplificando, o BIP-65 permite que você crie um método de verificação de gastos que o nLockTime é incapaz de controlar, permitindo a criação de canais bidirecionais seguros.
HTLC
Os HTLC são outro desenvolvimento em favor dos canais de pagamento. Os HTLCs funcionam basicamente no roteamento de pagamentos. Ou seja, eles direcionam os pagamentos de forma segura por meio de vários canais de pagamento. Desta forma, o HTLC evita um dos problemas dos canais de pagamento: o custo de abertura de novos canais de pagamento. Assim, o HTLC pode usar canais de pagamento sempre abertos e encaminhar os pagamentos de todos entre esses pagamentos. O resultado é uma enorme rede de canais de pagamento aberta quase permanentemente, pronta para permitir pagamentos bidirecionais dentro deles.
Essa funcionalidade tornou os HTLCs uma parte integrante do projeto de canais de pagamento mais avançados, como os usados por Lightning Network.
Canais de pagamento em outras blockchains
Como você sabe, Bitcoin não é a único blockchain de criptomoeda, nem o único em que é capaz de integrar protocolos de Payments Channels. Criptomoedas como Litecoin o Ethereum, também são capazes de usar este tipo de sistema. Quase todas as criptomoedas com problemas de escalabilidade procuram um método para usar canais de pagamento em escala. O motivo é simples: os canais de pagamento são mais fáceis de implementar do que reescrever os protocolos já comprovados dessas blockchains.
Por exemplo, no Litecoin podemos usar a Rede Lightning hoje, e no Ethereum podemos usar a Rede Raiden ou Liquidity Network, embora o último use um esquema de canal de pagamento diferente.
Como você está vendo, a Blockchain não pára, e a inovação em torno dela é incessante. Os canais de pagamento parecem ter vindo para ficar e, apesar de estarem nos estágios iniciais, eles pretendem ficar, especialmente se quisermos ver as criptomoedas de forma massiva em todo o mundo.