Introdução
O Peerswap é uma ferramenta de atomic swaps P2P, ou seja, permite que um node faça swaps diretamente com seus peers com quem tem um canal Lightning. Estes swaps podem ser feitos entre BTC onchain - BTC Lightning - L-BTC Liquid. A vantagem é ser uma aplicação trustless e além disso não necessitar de terceiros envolvidos.
Uma das maiores vantagens do Peerswap em si, não é realizar swap outs com seus peers. A melhor utilização da ferramenta é ser usada para balancear seus canais. Mas como?
Primeiramente você e seu peer com quem tem canal, devem ter instalado em seus nodes o Peerswap (Clique Aqui para acessar o tutorial de instalação) e cada um ter inserido um ao outro na whitelist. Após ter configurado para receber swaps de LBTC, agora vocês podem fazer swaps entre si usando a LN e a Liquid.
A melhor utilização é, por exemplo, quando você está com o canal vazio do seu lado enquanto que seu peer está com toda a liquidez, vamos supor que este canal seja de 10M, 1M para seu lado e 9M para o seu peer. Você iniciará um swap-in através do peerswap de um montante de 4M, o que vai acontecer é o seguinte: automaticamente o programa fará com que você envie 4M de L-BTC enquanto seu peer lhe enviará 4M através da LN, assim o canal ficará balanceado em 50/50.
Todo este processo é automático após dado o comando de swap-in, por isso os dois participantes devem estar na whitelist um do outro e com a opção de swap com LBTC ligado. Como pode perceber, o swap aconteceu entre LN e Liquid, um envia LBTC enquanto o outro envia a mesma quantia em LN, assim balanceado seu canal com este peer em específico.
Qual a vantagem do rebalance P2P?
A principal vantagem do rebalance P2P é não desbalancear demais peers como acontece nos tradicionais rebalances por circular routes. Nos circular routes, quando se envia um pagamento, este passa por diversos hops desbalanceando os canais como se fosse um pagamento do mundo real pela LN. O rebalance via P2P com peerswap, permite que se balanceie os canais parceiros de forma direta, evitando hops e por consequência, evitando desbalancear outros canais.
Eu diria que para nodes de plebs como nós, mais de 90% do movimento seja de rebalances por circular route de outros peers, inclusive de peers dos quais nem temos canais.
O rebalance de circular route, além de desbalancear, causa um aumento progressivo de fees em efeito cascata.
Canais desbalanceados causam perda de escalabilidade da rede e aumentam a chance de pagamentos falhos. Com rebalances P2P pelo peerswap, utilizando LBTC, é possível manter os canais balanceados, proporcionando escalabilidade e maior chance de sucesso nos pagamentos.
Havendo canais bem balanceados e maior escalabilidade na rede, conseguimos ter fees baixas, proporcionando menor custo ao usuário final, pois atualmente wallets e LSPs preferem efetuar pagamentos com altas fees mas que garantem maior chance de sucesso do que menores fees mas com mais possibilidade de falhar o pagamento e gerar transtornos ao usuário final. Grande parte da culpa disso é a grande realização de rebalances por circular route.
Com maior eficiência na rede, precisaremos de menos canais, as taxas serão menores e por consequência podemos ver um aumento considerável na demanda pela rede, acontecendo mais pagamentos no mundo real que passarão entre nossos nodes.
Rebalance Pools
Dado a introdução a melhor utilização do Peerswap, gostaria de apresentar agora uma ideia, que ando a chamar de rebalance pool, mas se você tiver outro nome mais adequado por favor comente abaixo pois eu tirei do além.
Um rebalance pool seria uma “pool” de vários peers conectados através de canais entre si e utilizando peerswap para rebalances com L-BTC. Nos exemplos abaixos considerarei 4 nodes para facilitar na explicação e demonstração.
A ideia principal é que cada participante ajude com uma quantia pré-estipulada por todos os participantes e com os custos de emitir L-BTC para ser usado nos rebalances entre si. Após cada um ter emitido a quantia estipulada de L-BTC, esta pool está pronta para começar os rebalances, onde cada um ficará trocando conforme sua necessidade LBTC por BTC LN, rebalanceando os canais entre si.
Inclusive se você deseja aprender a emitir L-BTC com o seu node, clique aqui para ler meu tutorial detalhado do processo!
Vejamos meu exemplo de uma rebalance pool na imagem acima, nesta pool há 4 participantes onde cada um tem um canal Lightning entre si de 10M cada, resultando em 6 canais de 10M e totalizando uma capacidade de 60M. Então como são 60M de capacidade, estipulamos que cada participante ajudará com um montante de L-BTC, pois para emitir L-BTC há um custo considerável e para ficar justo, cada participante deve ajudar neste processo.
Se são 4 nodes e 60M totais, cada node deverá emitir 15M de L-BTC. Eventualmente os canais estarão desbalanceados conforme a imagem do exemplo, e é aí que começam os swaps para rebalanceá-los. Neste meu exemplo, os peers começarão a fazer os swaps enviando L-BTC e receberão em LN, balanceado os canais em 50/50, veja a imagem da etapa de swap como isso acontece:
Nesta etapa cada peer está fazendo seu swap-in conforme sua necessidade. Quem inicia um swap-in sempre estará a enviar L-BTC e receber LN, na mesma quantidade.
Com a realização destes swaps entre os peers do rebalance pool, obtemos o seguinte resultado conforme na próxima imagem:
Perceba que na última etapa temos os canais todos balanceados em 50/50 e que os balanços dos peers com L-BTC se alteraram mas ninguém saiu com menos saldo que ninguém, eles apenas trocaram uma coisa pela outra, e como os canais não se desbalanceam por igual, uns ficarão com mais L-BTCs do que outros. Perceba que a quantia total de L-BTC continua a mesma na pool.
Um detalhe muito importante a ser considerado para a rebalance pool funcionar corretamente é de que não se deve retirar os LBTCs de circulação da pool. Caso isso seja feito, haverá um decréscimo da liquidez causando um problema a todos os participantes. Os canais serão desbalanceados e como não haverá LBTC suficiente, os rebalances não acontecerão mais de forma adequada.
O peer que se aproveitar de retirar liquidez de L-BTC da pool deve ser punido caso não retorne a mesma liquidez que retirou, pois estará se aproveitando dos demais peers que pagaram para ter a liquidez em L-BTC.
Dica: sempre realize os swaps in com valores grandes pois assim reduzem o custo proporcional devido a fee da transação da Liquid. Valores como 100k, 500k, 1M podem não valer muito a pena, prefira algo acima 1,5M. Quanto maior, melhor ao custo. Outra dica é, procure por peers que utilizam o peerswap e aceitem a participar da pool, respeitando as regras propostas. Evite abrir canais pequenos, prefira canais grandes, pois assim é possível fazer grandes rebalances com L-BTC.
A fee da transação liquid é descontada ao montante que o recebedor de L-BTC irá receber. Sim… se o iniciador começa um swap in de por exemplo 3M, este irá receber via LN exatos 3M mas, a outra parte irá receber 3M menos a fee da transação liquid, algo em torno de 150 a 300 sats. Vamos supor que você iniciou um swap in de 3M que custou 200 sats na liquid, a outra parte irá receber 2.999.800 sats ou seja, teve um custo de 66ppm. Sim, é assim que a ferramenta funciona atualmente, a contra-parte fica com o custo.
Como não sou eu que criei a ferramenta não possuo o poder de alterar isso no código sem forkar e começar um paralelo. Mas, como você estará inserido numa pool e eventualmente seu peer que está pagando pelos seus swaps in realizará um swap in, então em outro momento será você que irá arcar com o custo do rebalance do seu peer, então fica elas por elas. Sempre anote os custos em ppm para saber o que cobrar dos canais que você encher de outbound para vender.
E se um peer realizar um rebalance com outro peer que não faz parte da Pool?
Então possivelmente pode acontecer deste LBTC nunca mais voltar aos participantes da pool, gerando o problema de falta de liquidez para continuar os rebalances e gerando custo para reabastecer os LBTCs.
E se os canais desbalancearem com outros canais fora da Pool?
Não há problemas, o peerswap serve para isso mesmo, eventualmente você irá rotear para outros nodes que estão fora do acordo e desbalancear o canal com o outro peer participante da rebalance pool e então você usa o peerswap para rebalancear com o seu peer da pool.
E se os LBTCs pararem em um só peer?
É possível acontecer mesmo sendo difícil. Geralmente os peers sempre vão ter algum canal para encher e estarão trocando seus LBTCs, mas pode acontecer de parar em um só.
Neste caso, há de encontrar alternativas. Uma delas é achar o peer mais necessitado de LBTC, que provavelmente será o que tiver maior numero de canais vazios de outbound, e realizar com este um swap out, onde se envia os LBTCs e recebe-se BTC onchain na mesma quantidade. OBS: não usem o peerswap para esta operação pois não vale a pena os custos envolvidos por conta do código, façam manualmente.
É claro que a desvantagem desta solução é ter que pagar pelo fee onchain, mas é possível dividir este custo entre os participantes, caso concordarem com isso. Supondo um custo de 10k de fee onchain e 4 participantes da pool, então cada peer pode enviar 2,5k para o realizador da transação onchain.
Deste modo, o peer que estava com canais vazios e sem LBTC, agora está cheio de liquidez para balancear seus canais e distribuir os LBTCs com os demais peers.
Tem mais alguma dúvida?
Deixe um comentário abaixo ou entre em contato.
Contato
Twitter: EMTLL_
Telegram: EM_TLL
Amboss: EMTLL
Se gostou do artigo e quiser contribuir com alguns satoshis, envie para o LN Address: emtll@lnmarkets.com