Tutti gli articoli
Guide

Trasferimento molti a molti su Solana

Trasferimenti appaiati su Solana: una transazione per riga, 0,001 SOL per trasferimento e la regola del rent che salta una riga invece di limarla.

6 min di lettura J Tools Editorial
Due colonne verticali di punti rossi su fondo quasi nero, ogni punto a sinistra unito da una linea sottile e dritta a esattamente un punto a destra

Ci sono tre modi di muovere molti pagamenti in una volta su Solana, e vengono confusi di continuo. Un multi-sender paga una lista da un solo wallet. Un collector raccoglie molti wallet dentro uno. Poi c'è il caso che nessuno dei due sa esprimere.

Un trasferimento molti a molti su Solana tiene ogni mittente con il proprio destinatario. Il wallet 7 paga il wallet 7, l'8 paga l'8, e nessuno dei due sa dell'altro.

Sembra un dettaglio. È la differenza fra una sorgente e quaranta sorgenti indipendenti.

  • Una riga è una transazione. Il wallet mittente di quella riga paga tutto quello che ci sta sopra.
  • Commissione di piattaforma 0,001 SOL per trasferimento, commissione di rete 0,000005 SOL.
  • Un destinatario che non ha mai tenuto quel token aggiunge 0,00203928 SOL di deposito rent.
  • Le righe che non passano vengono saltate, non limate.

Tre forme di trasferimento massivo

Lo strumento di invio multiplo fa uno verso molti. Un wallet, una lista di destinatari, un pagatore. È la forma di un airdrop.

Il raccoglitore a lotti fa molti verso uno. Venti wallet, una destinazione, e alla fine tutto sta in un posto solo.

Lo strumento molti a molti è la terza forma, e l'unica che conosce le coppie. La riga uno ha la sua sorgente, la riga due ne ha un'altra. Nessuna cassa comune e nessuna compensazione fra righe.

A sinistra un punto luminoso si apre a ventaglio verso una colonna di dieci punti, a destra linee dritte uniscono due colonne punto per punto

Quanto costa una riga

Su una riga possono comparire tre voci, e il wallet mittente di quella riga le paga tutte e tre. Non c'è un conto di finanziamento condiviso, quindi un wallet che non copre la propria riga non prende in prestito da quella sopra. La voce di rete è la commissione base di 5.000 lamport per firma che la documentazione delle commissioni di Solana spiega per intero.

VoceModalità SOLModalità token
Commissione di piattaforma0,001 SOL0,001 SOL
Commissione di rete0,000005 SOL0,000005 SOL
Account token del destinatarionon si applica0,00203928 SOL, e solo se quel destinatario non ha mai tenuto questo token

Rileggi la terza riga, perché è quella che sorprende. Mandare un token SPL a un indirizzo che non l'ha mai toccato significa creare un account che lo contenga, e Solana chiede un deposito rent per quell'account. Il deposito vale circa duecento volte la commissione di rete e il doppio di quella di piattaforma.

Su cento destinatari nuovi sono circa 0,204 SOL del conto, mentre la commissione di piattaforma si ferma a 0,1. Il deposito non viene bruciato: resta nell'account token del destinatario e torna a chi chiuderà quell'account più avanti.

Le righe che vengono saltate

Prima della firma girano due controlli, e tutti e due fermano la riga invece di cambiarla.

Il primo è aritmetica semplice. Se il wallet mittente non copre il suo importo più le commissioni più un eventuale account token da aprire, la riga viene segnata e lasciata stare. Non parte niente a metà.

Il secondo è più strano e vale la pena capirlo, perché la prima volta sembra un difetto. Solana non lascia un account con un saldo sopra lo zero ma sotto il minimo esente da rent. Per un wallet normale quel minimo è 0,00089088 SOL, e viene dalla formula riportata nella documentazione degli account di Solana.

Svuotare del tutto un account è consentito. Lasciarci dentro 0,0005 SOL no. Una riga che spinge un wallet dentro quella fessura viene marcata come rent dust e resta non inviata.

Asse orizzontale: un punto acceso allo zero, poi una banda rossa fra due barre con dentro un punto spento, e oltre due punti accesi

Perché non limare l'importo e basta

L'alternativa sarebbe tagliare l'importo finché ci sta, e va peggio. Hai scritto una cifra. Uno strumento che ne manda un'altra senza dirtelo è uno strumento contro cui poi non riconcili nessun foglio di calcolo.

Manda invece il saldo intero, oppure abbassa l'importo così che il resto superi il minimo. L'anteprima dice in anticipo quali righe sono coinvolte, e lo strumento interroga tutti gli account di destinazione in una sola chiamata prima di firmare qualsiasi cosa.

Una transazione per riga, e perché conta

Siccome ogni riga è una transazione a sé, una riga fallita cade da sola. In un lotto che impila tutto dentro una transazione, un errore alla riga 30 si porta via le 29 precedenti.

Questo ha un costo: quaranta coppie sono quaranta firme e quaranta commissioni di piattaforma. In cambio ottieni un risultato che si legge riga per riga. Per sapere a che velocità entrano quelle transazioni, i numeri stanno in l'articolo sulla priority fee.

Quando un trasferimento molti a molti su Solana è la forma giusta

La rotazione dei wallet è la risposta onesta per la maggior parte dei casi. Hai un gruppo di wallet con uno storico che preferisci lasciarti alle spalle, ne generi uno nuovo con il generatore di wallet in blocco, e vuoi che il vecchio wallet 7 finanzi il nuovo wallet 7 e nient'altro.

Il secondo caso è una lista di pagamenti dove il pagatore cambia riga per riga. Più progetti, più casse, un foglio solo. Un multi-sender non riesce a esprimerlo, perché ha esattamente una sorgente.

Il terzo è la redistribuzione dopo uno snapshot, dove ogni holder viene pagato da un wallet che gli hai già assegnato. Come si legge quella distribuzione prima di distribuire sta in la guida sulla distribuzione degli holder.

Preparare la lista

Fai la prima passata con due righe. La tabella dei risultati dice quanto è costata davvero una riga, depositi di account token compresi, prima di mandarne duemila.

Controlla anche se i destinatari hanno già il token. Su una lista fatta a metà di holder esistenti la voce dei depositi si dimezza, e su cento righe è la cifra più grossa dell'intero conto.

Annota infine quale wallet paga quale riga. Dopo la passata quella corrispondenza si ricostruisce peggio di quanto sembri adesso, soprattutto se i mittenti sono appena stati generati e non hanno ancora uno storico che li distingua.

Un ultimo punto sul saldo: lascia in ogni mittente qualcosa sopra il suo importo. Tarato al centesimo, il controllo del rent scarta la riga e tocca rifinanziare, cosa più lenta che aver tenuto un margine dall'inizio.

Domande frequenti sul trasferimento appaiato

In cosa cambia rispetto a lanciare il multi-sender più volte?

Il multi-sender ha esattamente una sorgente per passata. Quaranta sorgenti sono quaranta passate e quaranta cambi manuali di wallet. Qui è una passata con quaranta righe.

Una riga fallita costa qualcosa?

No. Una riga che non passa il controllo preventivo non viene mai firmata, quindi niente commissione di rete né di piattaforma.

Mittenti e destinatari possono sovrapporsi?

Sì. Un wallet può inviare su una riga e ricevere su un'altra. Ogni riga viene controllata per conto suo.

Perché la mia riga risulta rent dust?

Perché il resto nel wallet mittente sarebbe finito fra zero e 0,00089088 SOL. Manda il saldo intero o abbassa l'importo.

Serve SOL in un wallet che invia soltanto token?

Sì. La commissione di rete e quella di piattaforma si pagano in SOL anche quando il trasferimento riguarda un token.

C'è un numero massimo di coppie?

In pratica il limite è la preparazione, non lo strumento: ogni wallet mittente deve essere finanziato prima.

Come decidere in una riga

Se il tuo foglio ha una colonna per il pagatore, questa è la forma che serve. Se tutte le righe partono dallo stesso wallet, prendi il multi-sender e paga una volta invece di quaranta. E se manca una riga, guarda prima il minimo di rent invece di dare per scontato un difetto. Su quel minimo c'è altro in la spiegazione dell'errore insufficient funds for rent.

J
Autore
J Tools Editorial

Un articolo del team di J Tools.

Vedi tutti gli articoli di J Tools Editorial →

Articoli correlati