Glossário / Lightning e camada 2
Canal de pagamento
Outros nomes: Payment channel, Micropayment channel, Lightning channel, Canal Lightning.
- O que é um canal de pagamento?
- Um canal de pagamento é um contrato de bitcoin entre duas partes, com fundos depositados por uma única transação on-chain, dentro do qual os dois lados podem reescrever milhares de vezes a divisão desse dinheiro sem tocar na blockchain.
Pense nele como uma conta aberta em um bar que os dois bebedores assinam depois de cada rodada. A saída de depósito do canal é um endereço 2 de 2, então nenhum dos pares pode mover o dinheiro sozinho, e cada atualização é uma transação de bitcoin totalmente válida que qualquer um dos lados poderia publicar. Se você mantém bitcoins em um canal, está dependendo de um software para perceber o mau comportamento, não de uma empresa para se comportar bem.
Como funciona
Um canal de pagamento substitui a confiança por duas peças de script de bitcoin: uma saída compartilhada e uma punição.
Abrir o canal exige uma transação on-chain que paga para um endereço que requer as duas assinaturas. Antes de essa transação ser transmitida, os pares trocam transações de compromisso assinadas que a gastam de volta para eles nas proporções acordadas. Pagar dentro do canal significa apenas assinar um novo par de compromissos com uma nova divisão e então entregar o segredo que revoga o antigo.
A revogação é o que o torna seguro. Cada lado mantém uma transação de compromisso um pouco diferente, e a versão que você mantém paga o seu próprio saldo para um script que você só pode resgatar após um atraso, comumente de 144 blocos, cerca de um dia. A cópia do seu par tem o mesmo atraso do lado dele. Se qualquer um de vocês transmitir um estado antigo e mais favorável, o outro tem esse atraso para perceber e usar o segredo de revogação para varrer todo o saldo do canal como penalidade. Trapacear não é bloqueado; é tornado não lucrativo.
Nada disso era possível antes de existirem os bloqueios temporais relativos. O CHECKSEQUENCEVERIFY e os bloqueios baseados na sequência definidos nos BIP68, BIP112 e BIP113 estão ativos desde o bloco 419.328, em 2016, e são o que permite a um script dizer “gastável, mas somente 144 blocos depois que esta transação for confirmada”.
Vários números pequenos na especificação existem apenas para manter a punição exigível. Cada par normalmente mantém uma reserva que nunca pode gastar, sugerida em 1% do total do canal, para que um trapaceiro sempre tenha algo a perder. Saídas abaixo do limite de poeira, 330 satoshis para as saídas pay-to-witness-script-hash que os canais usam, são descartadas e pagas como taxas em vez de serem escritas no compromisso. Os canais modernos também carregam duas saídas âncora de 330 satoshis, que existem para que qualquer um dos lados possa anexar uma transação filha que aumente a taxa se a blockchain estiver congestionada quando precisarem fechar. E o próprio número do compromisso fica oculto: 48 bits dele são mascarados e espalhados pelos campos de locktime e de sequência, de modo que um observador que veja um fechamento unilateral não consegue contar quantos pagamentos o canal carregou.
Por que isso importa quando você compra bitcoin
Os canais são a razão pela qual um saldo em Lightning e um saldo em armazenamento a frio não são intercambiáveis, mesmo que ambos sejam bitcoin.
O dinheiro em um canal precisa de uma chave que esteja online e de um nó que esteja vigiando. Isso é aceitável em uma carteira para gastos. É o lugar errado para uma reserva que você pretende manter por anos, porque o modelo de segurança exige algo de você continuamente, e não uma única vez. Nossas análises de carteiras de hardware cobrem a troca oposta: chaves que nunca tocam uma rede e nunca precisam reagir a nada.
Duas consequências práticas decorrem disso para quem compra. Primeira: abrir e fechar canais são transações on-chain, então uma carteira que abre um canal para você está gastando taxas reais em seu nome, às vezes silenciosamente. Verifique quanto uma carteira Lightning móvel cobra pelo primeiro canal antes de depositar 30 dólares nela e descobrir que um terço disso foi para a configuração inicial. Segunda: se um aplicativo Lightning nunca menciona canais, chaves ou backups, quase certamente é ele que mantém o canal. Isso é uma conta com custódia com uma aparência de Lightning, e pertence ao mesmo grupo de risco que deixar bitcoins em uma corretora.
A última é entediante, mas cara: o estado do canal não é recuperável a partir de uma frase de recuperação. Um backup de doze palavras restaura perfeitamente uma carteira on-chain e não restaura nada sobre qual compromisso estava vigente. As carteiras Lightning não custodiais fazem backup do estado do canal separadamente, e perder esse backup pode custar o saldo do canal mesmo que você ainda tenha a frase de recuperação.
Anatomia de um fechamento de canal
Acompanhe o fim de um único canal e as peças deixam de ser abstratas.
Dois pares abrem um canal com 1.000.000 satoshis, com fundos depositados inteiramente por um deles. Depois de um mês de pagamentos, a divisão é de 400.000 e 600.000. Um fechamento cooperativo é o caminho feliz: ambos assinam uma única transação de fechamento que paga diretamente a cada lado, ela é confirmada como qualquer gasto normal, e não há atraso em nenhuma das saídas.
Um fechamento unilateral é a alternativa. Um par desaparece, então o outro transmite o compromisso mais recente. O saldo do próprio par que transmite cai em um script que ele não pode tocar durante o atraso acordado, o saldo do par que saiu fica imediatamente gastável por ele, e as saídas âncora ficam ali caso a taxa precise ser aumentada. Se o par que desapareceu transmitir mais tarde um compromisso obsoleto em que aparece com 900.000 satoshis, o lado honesto tem a janela de atraso para publicar a revogação e ficar com todos os 1.000.000.
Canal de pagamento vs statechain
Um canal de pagamento mantém um contrato vivo entre duas partes on-chain; uma statechain transfere o direito de gastar uma saída fixa. Em um canal, o saldo pode ser qualquer número e muda a cada pagamento, e a execução é unilateral. Em uma statechain, um UTXO inteiro de tamanho fixo é transferido de um dono para o próximo com a ajuda de um servidor ao qual se pede que apague sua antiga parte da chave, de modo que o modelo depende de esse servidor realmente apagá-la. Os canais custam uma transação on-chain para abrir e dão a você um saldo gastável; as statechains custam uma suposição de confiança e dão a você um UTXO inteiro.