710 / 736SPL

Splicing

Adicionar ou retirar fundos de um canal Lightning existente

Para acrescentar bitcoin a um canal Lightning ou retirar uma parte, nem sempre é preciso encerrá-lo e abrir outro. O Splicing transfere o canal existente para uma nova saída de uma transação Bitcoin. As duas partes concordam com a mudança e o canal pode continuar a funcionar.

Splicing é uma alteração conjunta do financiamento de um canal Lightning: uma nova transação on-chain gasta a saída que o financia e cria outra. As partes também preparam as commitment transactions correspondentes, transações assinadas que permitem encerrar o canal se necessário. Há continuidade do mesmo canal, em vez de um encerramento comum seguido da abertura independente de outro.

Splice-in acrescenta fundos ao saldo da parte que contribui; splice-out transfere parte desse saldo para uma saída fora do canal. As contribuições também afetam a capacidade total; se uma compensar a outra, a capacidade pode permanecer igual. Mas os fundos do canal passam sempre a ficar bloqueados numa saída de financiamento diferente no Bitcoin. A operação dispensa o encerramento cooperativo comum e a posterior abertura de um canal. [1]

O canal entra primeiro em quiescence, uma breve pausa nas atualizações incompatíveis com a operação. Quem inicia envia splice_init e a contraparte responde com splice_ack. A transação construída em conjunto tem de conter exatamente uma entrada que gaste a antiga saída de financiamento e exatamente uma nova saída que financie este canal; outras entradas e saídas podem acrescentar ou retirar fundos. Seguem-se as mensagens commitment_signed e tx_signatures com as assinaturas correspondentes. [1]

Depois da troca de assinaturas da transação, os pagamentos podem ser retomados enquanto se aguarda um número aceitável de confirmações. Por isso, os nós mantêm simultaneamente estados de compromisso para o financiamento original, o novo splice e eventuais substituições RBF. Um pagamento tem de ser válido em todas as variantes ativas. Se a ligação cair, é necessário recuperar corretamente a operação em curso; guardar apenas a última transação não basta. [1] [2]

Ambos os nós têm de negociar o suporte a option_splice e concordar com a transação, a taxa de comissão e as contribuições. A contraparte pode rejeitar a proposta com tx_abort. Até que as duas partes confirmem o mesmo splice através de splice_locked, as novas atualizações têm de abranger todas as commitment transactions ativas. Não é possível alterar unilateralmente o saldo da outra parte. [1] [3]

O Core Lightning ativou o Splicing por predefinição na versão 26.04. Acrescentou os comandos splicein e spliceout e a possibilidade de mover fundos entre dois canais, chamada cross-splice. Ainda assim, contam a versão do outro nó e o tipo de canal suportado. Ter uma função com o mesmo nome em carteiras diferentes não garante capacidades iguais nem compatibilidade entre elas. [4]

O Splicing continua a criar uma transação Bitcoin, pelo que exige uma comissão on-chain e atenção às confirmações e a possíveis reorganizações. O Eclair, por exemplo, oferece rbfsplice para aumentar a taxa de comissão de um splice ainda não confirmado. É preciso respeitar as reservas do canal, as exigências de entradas confirmadas, os limites das contribuições e das tentativas RBF, além de manter as cópias de segurança adequadas. O modo especial option_zeroconf altera os pressupostos de confiança e o protocolo proíbe RBF nesse caso. [1] [5]

Quando o splice escolhido atinge uma profundidade aceitável e as duas partes trocam splice_locked para o mesmo txid, podem deixar de manter as variantes antigas ou malsucedidas. Muda o funding outpoint, a referência à saída específica da transação; a capacidade varia conforme a soma das contribuições. Num canal público, muda também o short_channel_id derivado da transação confirmada, e as partes podem preparar novas announcement_signatures. [1]

Verifique o suporte dos dois nós, o channel_id, o sinal e o valor de funding_contribution_satoshis, a taxa de comissão, as entradas, as saídas, as reservas e as assinaturas. Acompanhe o txid de todas as variantes RBF. No fim, compare splice_locked, o novo funding outpoint e, num canal público, short_channel_id. Confirme também que os HTLC voltaram a funcionar e que a saída da retirada pertence à carteira pretendida. [2] [1]

Para ter uma visão mais completa, leia este verbete junto com Payment Channel, Lightning Network, UTXO, Liquidez Lightning, Replace-by-Fee (RBF), Price Channel. Também há referências a este verbete em Liquidez Lightning.

01Splicing é o mesmo que encerrar e abrir um canal?

Não. O Splicing também cria uma transação Bitcoin, mas as partes transferem em conjunto o canal existente para uma nova saída de financiamento. Num encerramento comum, o canal antigo termina e a abertura seguinte cria um canal separado.

02É possível tanto acrescentar como retirar fundos?

Sim. Uma contribuição positiva é splice-in; uma negativa é splice-out. As duas partes têm de aceitar a mudança, e a transação tem de respeitar os saldos, as regras de reservas e as comissões. A capacidade final depende da soma das contribuições de ambas as partes.

DOC · 001BOLT 2 — Channel SplicingEspecificação DOC · 002BOLT 2 — Splicing Test VectorsEspecificação DOC · 003BOLT 9 — Assigned Feature FlagsEspecificação DOC · 004Core Lightning v26.04 release notesFonte primária DOC · 005Eclair API — Splice-in, Splice-out and RBF SpliceDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento