Airdrop-Kostenoptimierung

Ich plane einen Airdrop eines ERC20-Mintable-Tokens, der durch einen Crowdsale-Vertrag auf Basis von Open Zeppelin erstellt wurde .

Jetzt frage ich mich, was der kostengünstigste Weg wäre, eine Airdrop-Funktionalität hinzuzufügen. Folgendes könnte mir einfallen:

  • Senden Sie bei der Vertragserstellung alle für den Airdrop reservierten Token an die Wallet des Crowdsale-Eigentümers und schreiben Sie dann eine kleine Node.js + Web3 + ethereumjs-tx-App, die einfach die Liste der Airdrop-Wallets durchläuft und an jede von ihnen einige Token sendet (wallet zur Brieftasche) mit sendSignedTransaction.

  • Fügen Sie dem Crowdsale-Vertrag eine Airdrop-Methode hinzu, die das Array von Wallet-Adressen empfängt und diese durchläuft, indem mint()sie die Token an jeden von ihnen sendet und überträgt. Rufen Sie dann diese Methode über Node.js + Web3 auf und übergeben Sie ihr die Liste der Adressen?

Gibt es einen besseren Weg, den ich vermisse?

Was wäre der günstigste Weg, dies zu tun?

Antworten (1)

Methode 2 wird am häufigsten verwendet. Anstatt für jede Überweisung eine Gebühr zu zahlen, fassen Sie mehrere Überweisungen zusammen.

Ein anderer Ansatz besteht darin, einen "virtuellen" Airdrop zu haben, bei dem nur Ereignisse generiert werden und die tatsächlichen Guthaben bei der ersten Übertragung gutgeschrieben werden.

Aber Sie sollten den Code schreiben und selbst testen.

Aber bei Methode 2, sagen wir, ich übergebe 100 Adressen an die Methode, ich müsste immer noch 100 Überweisungen machen, also würde ich immer noch eine Gebühr für jede Überweisung zahlen, richtig? oder übersehe ich etwas?
Die Durchführung von zwei Überweisungen in einer einzigen Transaktion sollte billiger sein als die Durchführung von zwei Überweisungen in zwei Transaktionen. Aber in jedem Fall sollten Sie mir nicht vertrauen, die beiden Lösungen programmieren und das verwendete Gas messen.
ok, ich verstehe, und was ist mit dem virtuellen Airdrop, ich bin mir nicht sicher, ob ich verstehe, was Sie meinen, dass die Guthaben bei der ersten Überweisung gutgeschrieben werden. Welche erste Überweisung?
Die Idee ist, nur Übertragungsereignisse zu generieren, die billig sein sollten, da der Vertragsspeicher nicht geändert wird. Wallets und/oder Block-Explorer zeigen das Guthaben aus dem Transfer-Event an. Wenn jemand nach einem Kontostand fragt, prüfen Sie, ob das Konto initialisiert wurde, wenn nicht initialisiert, geben Sie einen festen Wert zurück. Die Konten werden initialisiert, wenn sie ihre erste Überweisung tätigen, wenn sie Überweisung oder transferFrom aus dem Vertrag aufrufen.
Welchem ​​Zweck würde ein solcher Airdrop dienen?
@NikitaFuchs Airdrops werden für unterschiedliche Zwecke eingesetzt: ICOs, Marketing, Kunden/Nutzer bezahlen, Gewinne ausschütten, etc. Ein wichtiges Anliegen ist es, die damit verbundenen Kosten zu minimieren und das Ethereum-Netzwerk besser zu nutzen. IMHO mögen wir Airdrops vielleicht nicht, aber es gibt keine Möglichkeit, sie zu verbieten , also ist es besser, nach Wegen zu suchen, um sie effizienter zu machen.
@Ismael Ich meinte den Zweck, dem Benutzer vorzuschlagen, dass er Token erhalten hat, obwohl er dies tatsächlich nicht getan hat, indem er die Ereignisauslösung verwendet
@NikitaFuchs Die Idee ist, eine virtuelle Waage zu haben, die nur initialisiert wird, wenn sie verwendet wird.
Aber um es verwenden zu können, muss es eine andere Transaktion geben, die dem Benutzer dieses Guthaben tatsächlich gewährt?
@NikitaFuchs Die Idee ist, den Saldo nur zu initialisieren, wenn eine Überweisung ausgeführt wird.
Wie soll das funktionieren? Funktionsaufrufe haben keinen Zugriff auf Daten aus früheren Ereignissen, sodass der Benutzer sie definitiv nicht selbst initialisieren kann.
@NikitaFuchs Der Kontostand wird aktualisiert, wenn Sie anrufen transfer(), mein Anwendungsfall war, als jeder Benutzer mit dem gleichen Betrag initialisiert wurde.
Aaaaah, erwischt.