Best Practice Ether an mehrere Adressen empfangen

Angenommen, ich bin eine Börse mit vielen Benutzern. Wenn ich einen Benutzer auffordere, ETH einzuzahlen, gebe ich ihm eine eindeutige Adresse, damit ich ihm die ETH zuordnen kann.

Mit Bitcoin ist das einfach. Die Bitcoin-Wallet-Software handhabt dies und ich kann BTC auf mehreren Adressen haben und es wird als ein Konto behandelt.

Ich verstehe, dass dies bei Ethereum anders ist.

Ich habe 2 Möglichkeiten gefunden, dies zu erreichen:

  1. Stellen Sie einmal für jeden Benutzer einen Weiterleitungs-Smart-Vertrag bereit und geben Sie die Adresse an den Benutzer weiter. Wenn der Smart Contract ETH empfängt, leitet er ihn an meine Haupt-ETH-Adresse weiter.
    Vorteile :

    • Der Benutzer zahlt die Gaskosten für die Weiterleitung von ETH
    • Sie müssen nur ein Konto verfolgen (1 privater Schlüssel).

    Nachteile :

    • Ich muss die Benzinkosten für den mehrfachen Einsatz des Spediteurvertrags bezahlen
  2. Erstellen Sie für jeden Benutzer ein Konto. Geben Sie den privaten Schlüssel nicht an den Benutzer weiter. Gehen Sie regelmäßig alle "Benutzerkonten" durch, die ich kontrolliere, und senden Sie die ETH an das "Hauptkonto".

    Vorteile:

    • Ich muss kein Benzin für die Bereitstellung von Smart Contracts bezahlen

    Nachteile:

    • Ich muss mehrere Konten verwalten

Welcher dieser beiden Ansätze kostet mich mehr Benzin? Intuitiv denke ich, dass 2nd weniger Gas kosten würde, weil der Einsatz von Smart Contracts teurer ist als der Versand von ETH. Aber der erste Ansatz scheint derjenige zu sein, der bei Börsen beliebter ist. Warum ist das so?

Ich sollte beachten, dass ich nicht erwarte, dass Benutzer ETH mehr als einmal einzahlen. (Oder ich würde ihnen für jede Einzahlung eine neue Adresse geben, damit es einfacher ist, den Überblick über ihre Einzahlungen zu behalten)

In #2 müssen Sie für jede Transaktion Gas bezahlen.
Die Bereitstellung eines Vertrags erfolgt nur einmal, sodass Sie nicht jedes Mal einen Vertrag bereitstellen müssen, wenn ein Konto hinzugefügt wird
Aber da ich für jeden Benutzer eine eindeutige Adresse haben möchte, muss ich den Vertrag einmal für jeden Benutzer bereitstellen, richtig?
Ich bezog mich auf einen Vertrag, der Kontensalden intern verwaltet, und da Sie intern alles tun können, können Sie für jeden Benutzer eine eindeutige Adresse generieren.

Antworten (2)

Angenommen, ich bin eine Börse mit vielen Benutzern. Wenn ich einen Benutzer auffordere, ETH einzuzahlen, gebe ich ihm eine eindeutige Adresse, damit ich ihm die ETH zuordnen kann.

Mit Bitcoin ist das einfach. Die Bitcoin-Wallet-Software handhabt dies und ich kann BTC auf mehreren Adressen haben und es wird als ein Konto behandelt.

Ich verstehe, dass dies bei Ethereum anders ist.

Ich bin mir nicht sicher, ob ich verstehe, was Sie erreichen wollen. Wenn Sie möchten, dass Leute Ether in Ihren Vertrag einzahlen, können Sie dann nicht einfach eine Zuordnung von Adressen zu Guthaben pflegen? Die Adresse des Absenders würden Sie mit msg.sender erhalten

Lassen Sie mich es anhand einer POW-Benutzererfahrung beschreiben. Jeder Benutzer erhält eine eindeutige Ethereum-Adresse, unter der er Ether hinterlegen kann. Der Ether von all diesen Adressen landet in einer einzigen Ethereum-Adresse, die ich kontrolliere. Wird es dadurch klarer?
Auf diese Weise ist es ungewöhnlich kompliziert. Sie sollten jedem Benutzer die gleiche Einzahlungsadresse geben und dann im Vertrag ihre persönliche Adresse beibehalten, die bei der Einzahlung gelesen wird, und das aktuelle Guthaben dieses Benutzers mit der Adresse koppeln. Ein einfaches Mapping reicht aus. Was bedeutet es, verschiedenen Einzahlern unterschiedliche Einzahlungsadressen zu geben, wenn es so einfach ist zu verstehen, wer was einzahlt?
Es gibt einen Benutzer in einem Off-Chain-System, sagen wir, identifiziert durch seine E-Mail. Ich möchte diesen Benutzer bitten, eine Rechnung mit ETH zu bezahlen. Ich brauche eine Möglichkeit zu erkennen, dass diese Rechnung bezahlt wurde. Ich möchte den Benutzer aus UX-Gründen nicht nach seiner Ethereum-Adresse fragen. Wenn ich ihm eine eindeutige ETH-Adresse gebe, an die er die ETH senden soll, dann weiß ich, sobald die ETH an die Adresse gesendet wurde, dass ich diesen Benutzer in meinem Off-Chain-System gutschreiben sollte. Macht Sinn? Ich möchte den Benutzer auch nicht auffordern, einen Vertrag abzurufen und seine E-Mail-Adresse weiterzugeben, ich möchte, dass er eine reguläre ETH-Transaktion sendet.

Sie würden einen Vertrag erstellen, der Verträge erstellt. Ihr Rahmenvertrag erstellt neue „Kind-Wallets“ für Ihre Benutzer.

Sie können die Kinder dann auf einen bestimmten Besitzer hören lassen, der beim Erstellen der neuen Brieftasche erstellt wird. Auf diese Weise haben sie eine bestimmte Adresse, die Sie kontrollieren. Wenn Sie das Geld einfach sofort an Ihre eigene Brieftasche senden möchten, können Sie nur eine Funktion im neuen Vertrag haben, bei der es sich um eine Fallback-Funktion handelt, die die gesamte ETH an eine bestimmte Adresse sendet.