Ist es möglich, verschiedene mehrere eth-Adressen aus einem privaten Schlüssel zu generieren?
Das Ziel ist die Implementierung eines JavaScript-Dienstes, der es einem Benutzer ermöglicht, ein Abonnement mit Kryptowährung zu kaufen.
Aus Benutzersicht sollte Folgendes erscheinen:
Als Option erwäge ich die Generierung eines neuen Kontos mit einem öffentlichen/privaten Schlüsselpaar für jedes Mal, wenn ein Benutzer auf die Schaltfläche drückt, und das Speichern des gehashten privaten Schlüssels in der Datenbank. Außerdem bräuchte ich einen Arbeiter, der das Netzwerk abhört und Blöcke für die Transaktion auf das generierte Konto überprüft. Aber ich mag es nicht wirklich, den privaten Schlüssel zu speichern und ein neues Schlüsselpaar zu generieren ...
Ich frage mich also, ob es eine andere Möglichkeit gibt, diese Funktion zu implementieren, ohne den privaten Schlüssel in der Datenbank zu speichern und ohne Dienste von Drittanbietern zu verwenden.
Theoretisch kann eine Adresse mehrere private Schlüssel haben ( Wird jede Ethereum-Adresse von (theoretisch) 2 ** 96 privaten Schlüsseln geteilt? ), aber in der Praxis ist dies nicht der Fall - in der Praxis entspricht ein privater Schlüssel einer Adresse (öffentlicher Schlüssel) und und umgekehrt.
Ich habe nicht ganz verstanden, wie Sie in Ihrem Szenario von mehreren Adressen mit demselben privaten Schlüssel profitieren würden.
Wenn Sie nicht mehrere private Schlüssel speichern möchten, besteht eine Möglichkeit darin, einen privaten „Master“-Schlüssel zu speichern und dann einfach zufällige Zeichenfolgen daran anzuhängen („Salt“ in kryptografischer Hinsicht), um verschiedene Adressen zu generieren und nur die Salt-Werte zu speichern.
Eine Möglichkeit besteht darin, eine deterministische hierarchische Brieftasche (ursprünglich von Bitcoin BIP-32 ) zu verwenden, z. B. die Light Wallet, siehe eine verwandte Frage hier . Auf diese Weise wird der private Schlüssel zum privaten „Master“-Schlüssel, der verschiedene untergeordnete Schlüssel ableiten kann. Auf diese Weise muss nur der Ableitungspfad in DB gespeichert werden, nicht jedoch die eigentlichen untergeordneten Schlüssel.
Für die Überwachung von Transaktionen müssen keine privaten Schlüssel gespeichert werden. Der Monitor muss nur die Adresse des Kontos kennen, die aus dem öffentlichen Schlüssel berechnet wird.
Erweitern Sie Lauris Antwort :
Da beide Ableitungen (privater Schlüssel > öffentlicher Schlüssel > Adresse) deterministisch sind, können Sie nicht mehr als eine Adresse von einem privaten Schlüssel haben.*
Eine Alternative besteht darin, zusätzliche private Schlüssel von einem privaten Hauptschlüssel mit einer gegebenen Ableitungsregel abzuleiten . Diese zusätzlichen privaten Schlüssel entsprechen offensichtlich neuen Adressen. Diese Art der Adressverwaltung wird hierarchisches deterministisches Wallet/HD-Wallet genannt .
Sie richten effektiv Folgendes ein: privater Hauptschlüssel > private Schlüssel (Sie können mehrere davon generieren lassen > öffentlicher Schlüssel > Adresse
Taras
Nicolas Massart