Alle Beiträge
Anleitungen

Viele-zu-viele Transfer auf Solana

Gepaarte Wallet-Transfers auf Solana: eine Transaktion pro Zeile, 0,001 SOL pro Transfer, und die Rent-Regel, die eine Zeile überspringt statt sie zu kürzen.

6 Min. Lesezeit J Tools Editorial
Zwei senkrechte Spalten roter Punkte auf fast schwarzem Grund, jeder Punkt links durch eine duenne gerade Linie mit genau einem Punkt rechts verbunden

Es gibt drei Arten, viele Zahlungen auf Solana auf einmal zu erledigen, und sie werden staendig verwechselt. Ein Multi-Sender zahlt eine Liste aus einer Wallet. Ein Collector sammelt viele Wallets in eine ein. Und dann gibt es den Fall, den beide nicht abbilden.

Ein Solana viele zu viele Transfer haelt jeden Sender bei seinem eigenen Empfaenger. Wallet 7 zahlt an Wallet 7, Wallet 8 an Wallet 8, und keine der beiden weiss von der anderen.

Das klingt nach einer Kleinigkeit. Es ist der Unterschied zwischen einer Quelle und vierzig unabhaengigen Quellen.

  • Eine Zeile ist eine Transaktion. Die sendende Wallet dieser Zeile zahlt alles daran.
  • Plattformgebuehr 0,001 SOL pro Transfer, Netzgebuehr 0,000005 SOL.
  • Ein Empfaenger, der diesen Token noch nie hielt, kostet zusaetzlich 0,00203928 SOL Rent-Einlage.
  • Zeilen, die nicht durchgehen, werden uebersprungen und nicht gekuerzt.

Drei Formen von Massentransfer

Das Multi Sender Werkzeug ist einer zu vielen. Eine Wallet, eine Empfaengerliste, ein Zahler. Das ist die Form fuer einen Airdrop.

Der Batch Collector ist viele zu einem. Zwanzig Wallets, ein Ziel, und am Ende liegt alles an einer Stelle.

Many to Many ist die dritte Form und die einzige, die Paare kennt. Zeile eins hat ihre eigene Quelle, Zeile zwei eine andere. Keine gemeinsame Kasse, kein Ausgleich zwischen den Zeilen.

Links faechert ein heller Punkt zu einer Spalte von zehn Punkten auf, rechts verbinden gerade Linien zwei Spalten Punkt fuer Punkt

Was eine Zeile kostet

Auf einer Zeile koennen drei Posten stehen, und die sendende Wallet dieser Zeile zahlt alle drei. Es gibt kein gemeinsames Finanzierungskonto, also borgt eine Wallet, die ihre eigene Zeile nicht deckt, nichts von der Zeile darueber. Der Netzposten ist die Grundgebuehr von 5.000 Lamports pro Signatur, die Solanas eigene Gebuehrendokumentation aufschluesselt.

PostenSOL-ModusToken-Modus
Plattformgebuehr0,001 SOL0,001 SOL
Netzgebuehr0,000005 SOL0,000005 SOL
Token-Konto des Empfaengersentfaellt0,00203928 SOL, nur wenn dieser Empfaenger den Token noch nie hielt

Die dritte Zeile ist die, die Leute ueberrascht. Einen SPL-Token an eine Adresse zu schicken, die ihn noch nie beruehrt hat, heisst ein Konto dafuer anzulegen, und Solana verlangt dafuer eine Rent-Einlage. Die Einlage ist rund zweihundert Mal die Netzgebuehr und zweimal die Plattformgebuehr.

Bei hundert frischen Empfaengern sind das etwa 0,204 SOL der Rechnung, waehrend die Plattformgebuehr bei 0,1 liegt. Die Einlage ist nicht verbrannt: sie liegt im Token-Konto des Empfaengers und geht an den zurueck, der dieses Konto spaeter schliesst.

Die Zeilen, die uebersprungen werden

Vor dem Signieren laufen zwei Pruefungen, und beide stoppen die Zeile, statt sie zu veraendern.

Die erste ist schlichte Arithmetik. Deckt die sendende Wallet ihren Betrag plus Gebuehren plus ein eventuell zu oeffnendes Token-Konto nicht, wird die Zeile markiert und in Ruhe gelassen. Nichts Halbes geht raus.

Die zweite ist merkwuerdiger und lohnt sich zu verstehen, weil sie beim ersten Mal wie ein Fehler aussieht. Solana laesst kein Konto zurueck, dessen Guthaben ueber null, aber unter dem rent-freien Minimum liegt. Fuer eine gewoehnliche Wallet sind das 0,00089088 SOL, und die Zahl kommt aus der Rent-Formel in Solanas Dokumentation zu Konten.

Ein Konto ganz zu leeren ist erlaubt. 0,0005 SOL darin zu lassen nicht. Eine Zeile, die eine Wallet in diese Luecke schiebt, wird als Rent-Dust markiert und bleibt ungesendet.

Waagerechte Achse: ein heller Punkt bei null, dann ein rotes Band zwischen zwei Balken mit einem matten Punkt darin, dahinter zwei helle Punkte

Warum nicht einfach den Betrag kuerzen

Die Alternative waere, den Betrag so lange abzuschneiden, bis er passt, und das ist schlechter. Du hast eine Zahl getippt. Ein Werkzeug, das ohne Ansage eine andere Zahl sendet, ist ein Werkzeug, gegen das du hinterher keine Tabelle abgleichen kannst.

Sende stattdessen das ganze Guthaben, oder senke den Betrag so weit, dass der Rest das Minimum ueberschreitet. Die Vorschau zeigt dir vorher, welche Zeilen betroffen sind, und das Werkzeug prueft alle Zielkonten in einem einzigen Aufruf, bevor es irgendetwas signiert.

Eine Transaktion pro Zeile, und warum das zaehlt

Weil jede Zeile ihre eigene Transaktion ist, faellt eine fehlgeschlagene Zeile allein. Bei einem Stapel, der alles in eine Transaktion packt, nimmt ein Fehler in Zeile 30 die 29 davor mit.

Das kostet etwas: vierzig Paare sind vierzig Signaturen und vierzig Plattformgebuehren. Dafuer bekommst du ein Ergebnis, das zeilenweise lesbar ist. Wer wissen will, wie schnell diese Transaktionen durchgehen, findet die Rechnung in dem Beitrag zur Priority Fee auf Solana.

Wann ein Solana viele zu viele Transfer die richtige Form ist

Wallet-Rotation ist die ehrliche Antwort fuer die meisten. Du hast einen Satz Wallets mit Historie, die du hinter dir lassen willst, erzeugst mit dem Generator fuer neue Wallets einen frischen Satz, und alte Wallet 7 soll neue Wallet 7 finanzieren und sonst nichts.

Der zweite Fall ist eine Auszahlungsliste, bei der der Zahler je Zeile wechselt. Mehrere Projekte, mehrere Kassen, eine Tabelle. Ein Multi-Sender kann das gar nicht ausdruecken, weil er genau eine Quelle hat.

Der dritte ist die Verteilung nach einem Snapshot, bei der jeder Halter aus einer ihm bereits zugeordneten Wallet bezahlt wird. Wie man diese Verteilung vorher liest, steht in der Anleitung zur Token-Verteilung.

Vor dem grossen Lauf

Fahre den ersten Durchgang mit zwei Zeilen. Die Ergebnistabelle sagt dir, was eine Zeile wirklich gekostet hat, inklusive etwaiger Token-Konto-Einlagen, bevor du zweitausend davon abschickst.

Pruefe ausserdem, ob deine Empfaenger den Token schon halten. Bei einer Liste, die zur Haelfte aus bestehenden Haltern besteht, halbiert sich der Einlagenposten, und das ist bei hundert Zeilen der groesste Einzelbetrag der Rechnung.

Und notiere dir vorher, welche Wallet welche Zeile bezahlt. Nach dem Lauf ist diese Zuordnung schwerer zu rekonstruieren, als sie jetzt klingt, besonders wenn die Sender frisch erzeugt wurden und noch keine Historie haben, an der man sie erkennt.

Haeufige Fragen zum Viele-zu-viele Transfer

Worin unterscheidet es sich davon, den Multi-Sender mehrmals laufen zu lassen?

Der Multi-Sender hat pro Lauf genau eine Quelle. Vierzig Quellen heissen vierzig Laeufe und vierzig manuelle Wallet-Wechsel. Hier ist es ein Lauf mit vierzig Zeilen.

Kostet eine fehlgeschlagene Zeile etwas?

Nein. Eine Zeile, die an der Vorpruefung scheitert, wird nie signiert, also faellt weder Netz- noch Plattformgebuehr an.

Duerfen sich Sender und Empfaenger ueberschneiden?

Ja. Eine Wallet darf in einer Zeile senden und in einer anderen empfangen. Jede Zeile wird fuer sich geprueft.

Warum wurde meine Zeile als Rent-Dust markiert?

Weil der Rest in der sendenden Wallet zwischen null und 0,00089088 SOL gelandet waere. Sende das ganze Guthaben oder senke den Betrag.

Brauche ich SOL in einer Wallet, die nur Token sendet?

Ja. Die Netzgebuehr und die Plattformgebuehr werden in SOL bezahlt, auch wenn der Transfer selbst ein Token ist.

Gibt es eine Obergrenze fuer die Zahl der Paare?

Praktisch begrenzt dich die Vorbereitung, nicht das Werkzeug: jede sendende Wallet muss vorher finanziert sein.

Kurz gesagt

Wenn deine Tabelle eine Spalte fuer den Zahler hat, ist das die Form, die du brauchst. Wenn alle Zeilen aus derselben Wallet kommen, nimm den Multi-Sender und zahle einmal statt vierzig Mal. Und wenn dir eine Zeile fehlt, sieh zuerst nach dem Rent-Minimum, bevor du einen Fehler vermutest. Mehr zu diesem Minimum steht in der Erklaerung zu Insufficient funds for rent.

J
Autor
J Tools Editorial

Ein Beitrag vom J-Tools-Team.

Alle Beiträge von J Tools Editorial ansehen →

Ähnliche Beiträge