Todas as postagens
Guias

Transferência muitos para muitos na Solana

Transferências pareadas na Solana: uma transação por linha, 0,001 SOL por transferência e a regra de rent que pula uma linha em vez de apará-la.

7 min de leitura J Tools Editorial
Duas colunas verticais de pontos vermelhos sobre fundo quase preto, cada ponto da esquerda ligado por uma linha fina e reta a exatamente um ponto da direita

Existem três formas de mover muitos pagamentos de uma vez na Solana, e elas se confundem o tempo todo. Um multi-sender paga uma lista a partir de uma carteira. Um collector recolhe várias carteiras para dentro de uma. E depois vem o caso que nenhuma das duas consegue expressar.

Uma transferência muitos para muitos na Solana mantém cada remetente com o seu próprio destinatário. A carteira de origem 7 paga o destino 7, a 8 paga o destino 8, e as duas linhas nem se tocam.

Parece um detalhe pequeno. É a diferença entre uma fonte e quarenta fontes independentes.

  • Uma linha é uma transação. A carteira remetente daquela linha paga tudo o que estiver nela.
  • A taxa de plataforma é de 0,001 SOL por transferência, e a de rede, de 0,000005 SOL.
  • Um destinatário que nunca teve esse token acrescenta 0,00149 SOL de depósito de rent.
  • As linhas que não passam são puladas, não aparadas.

Três formas de transferência em massa

A ferramenta de envio múltiplo é um para muitos. Uma carteira, uma lista de destinatários, um pagador. É a forma de um airdrop.

O coletor em lote é muitos para um. Vinte carteiras, um destino, e no fim tudo fica num lugar só.

A ferramenta de muitos para muitos é a terceira forma e a única que entende de pares. A linha um tem a sua própria fonte, a linha dois tem outra. Sem caixa comum e sem compensação entre linhas.

À esquerda, um ponto brilhante abre linhas em leque para uma coluna de pontos; à direita, linhas retas ligam duas colunas ponto a ponto, sem se cruzar

Quanto custa uma linha

Numa linha podem aparecer três itens, e a carteira remetente daquela linha paga os três. Não existe conta de financiamento compartilhada, então uma carteira que não cobre a própria linha não pega emprestado da linha de cima. O item de rede é a taxa base de 5.000 lamports por assinatura que a documentação de taxas da Solana detalha.

ItemModo SOLModo token
Taxa de plataforma0,001 SOL0,001 SOL
Taxa de rede0,000005 SOL0,000005 SOL
Conta de token do destinatárionão se aplica0,00149 SOL, e só quando esse destinatário nunca teve este token

Leia a terceira linha duas vezes, porque é a que pega as pessoas de surpresa. Mandar um token SPL para um endereço que nunca o tocou significa criar uma conta para guardá-lo, e a Solana cobra um depósito de rent por essa conta. O depósito é muito maior que a taxa de rede.

Com cem destinatários novos, só esse item soma uns 0,149 SOL, enquanto a taxa de plataforma para em 0,1 SOL. O depósito não é queimado: fica na conta de token do destinatário e volta para quem fechar essa conta mais adiante.

As linhas que são puladas

Antes da assinatura rodam duas verificações, e as duas param a linha em vez de mudá-la.

A primeira é aritmética simples. Se a carteira remetente não cobre o valor mais as taxas mais alguma conta de token que precise ser aberta, a linha é marcada e não é enviada. Nada sai pela metade.

A segunda é mais estranha e vale entender, porque na primeira vez parece um defeito. A Solana não deixa uma conta com saldo acima de zero mas abaixo do mínimo isento de rent. Para uma carteira comum esse mínimo é 0,00065 SOL, e ele vem da fórmula que está nadocumentação de contas da Solana.

Esvaziar uma conta por completo é permitido. Deixar 0,00005 SOL dentro não é. Uma linha que empurra a carteira para dentro dessa fresta é marcada como rent dust e fica sem envio.

Eixo horizontal: um ponto aceso no zero, depois uma faixa vermelha entre duas barras com um ponto apagado dentro, e além dela dois pontos acesos

Por que não aparar o valor e pronto

A alternativa seria cortar o valor até caber, e isso é pior. Você digitou um número. Uma ferramenta que envia outro número sem avisar é uma ferramenta com a qual você não consegue conciliar nenhuma planilha depois.

Mande o saldo inteiro, ou baixe o valor até o resto passar do mínimo. A prévia mostra de antemão quais linhas são afetadas, e a ferramenta consulta todas as contas de destino numa única chamada antes de assinar qualquer coisa.

Uma transação por linha, e por que isso pesa

Como cada linha é a própria transação, uma linha que falha cai sozinha. Num lote que empilha tudo dentro de uma transação, um erro na linha 30 derruba também as 29 anteriores.

Isso tem um custo: quarenta pares são quarenta assinaturas e quarenta taxas de plataforma. Em troca você recebe um resultado que se lê linha a linha. Para saber a que velocidade essas transações entram, os números estão no artigo sobre a taxa de prioridade.

Quando uma transferência muitos para muitos na Solana é a forma certa

Rotação de carteiras é a resposta honesta para a maioria. Você tem um conjunto de carteiras com um histórico que prefere deixar para trás, gera um novo com o gerador de carteiras em lote, e quer que a antiga carteira 7 financie a nova carteira 7 e mais nada.

O segundo caso é uma lista de pagamentos em que o pagador muda a cada linha. Vários projetos, várias tesourarias, uma planilha só. Um multi-sender não consegue expressar isso, porque tem exatamente uma fonte.

O terceiro é a redistribuição depois de um snapshot, em que cada holder recebe de uma carteira que você já atribuiu a ele. Como ler essa distribuição antes de distribuir está no guia sobre distribuição de detentores.

Preparar a lista

Faça a primeira passada com duas linhas. A tabela de resultados diz quanto uma linha custou de verdade, incluindo depósitos de conta de token, antes de você mandar a lista inteira.

Verifique também se os destinatários já têm o token. Numa lista em que metade já tem o token, o item de depósitos cai pela metade, e com cem linhas esse é o maior valor da conta inteira.

E anote antes qual carteira paga qual linha. Depois da passada essa correspondência custa mais para remontar do que parece agora, principalmente se as remetentes foram geradas há pouco e ainda não têm histórico que as diferencie.

Um último ponto sobre saldo: deixe em cada carteira remetente um pouco mais do que o valor da linha. Com o saldo ajustado no centavo, a verificação de rent pula a linha e é preciso refinanciar a carteira, o que demora mais do que ter guardado uma margem desde o início.

Perguntas frequentes sobre a transferência pareada

Qual a diferença de rodar o multi-sender várias vezes?

O multi-sender tem exatamente uma fonte por rodada. Quarenta fontes são quarenta rodadas e quarenta trocas manuais de carteira. Aqui é uma rodada com quarenta linhas.

Uma linha que falha custa alguma coisa?

Depende de onde falha. Uma linha barrada na verificação prévia nunca é assinada e não custa nada. Se for assinada, enviada e falhar na rede, paga a taxa de rede como qualquer transação da Solana. A taxa de plataforma só vale se a transferência passar, porque é uma instrução dentro da mesma transação.

Remetentes e destinatários podem se sobrepor?

Podem. Uma carteira pode enviar numa linha e receber em outra. Cada linha é verificada por conta própria.

Por que minha linha ficou marcada como rent dust?

Porque o resto na carteira remetente cairia entre zero e 0,00065 SOL. Mande o saldo inteiro ou baixe o valor.

Preciso de SOL numa carteira que só envia tokens?

Precisa. A taxa de rede e a de plataforma são pagas em SOL mesmo quando a transferência é de um token.

Existe um número máximo de pares?

Não há um máximo fixo, e nada impede você de colar milhares de pares. Eles são assinados e enviados em blocos de cem. Na prática quem limita é a preparação: cada carteira remetente precisa estar financiada antes. Uma rodada que você consegue acompanhar é uma rodada que você consegue corrigir, então vale dividir uma lista muito longa em algumas rodadas menores.

Como decidir numa linha

Se a sua planilha tem uma coluna para o pagador, esta é a forma de que você precisa. Se todas as linhas saem da mesma carteira, use o multi-sender e pague uma vez em vez de quarenta. E se uma linha não for enviada, olhe primeiro o mínimo de rent antes de supor um defeito. Sobre esse mínimo há mais na explicação do saldo insuficiente para rent.

J
Autor
J Tools Editorial

Uma postagem da equipe J Tools.

Ver todos os posts de J Tools Editorial →

Postagens relacionadas