Gibt es ein Dumpprivkey-Analog in Geth?

Ich erstelle eine neue Adresse mit web3.py mit diesem Code:

from web3 import Web3 
w3 = Web3(Web3.HTTPProvider('http://localhost:8545')) 
w3.personal.newAccount('the-passphrase')

Und habe ein paar Fragen:

  1. Gibt es eine Möglichkeit, the-passphrasevon der Adresse aus dem folgenden Code zurückgegeben zu werden? Benötigen Sie das gleiche Verhalten wie dumpprivkeyvon bitcoin-cli
  2. Warum erhalte ich jedes Mal eine andere Adresse, wenn ich dieselbe Passphrase verwende? Bedeutet das, dass ich Eingaben von jeder dieser Adressen verwenden kann, wenn ich nur diese Passphrase verwende? Ist die Struktur der Schlüssel anders als die von Bitcoin privatekey-publickey-address?
  3. Wenn ich signTransactionMethode verwende, sollte ich „Passphrase“ oder seinen Hash verwenden?

Vielen Dank!

Antworten (1)

Ich denke, Sie sind vielleicht verwirrt über den Zweck der Passphrase. Das Passphrase-Argument ist kein Startwert zum Generieren des privaten Schlüssels, sondern eine Passphrase zum Verschlüsseln des privaten Schlüssels, sobald er generiert wurde.

Wenn Sie w3.personal.newAccount('the-passphrase')den Knoten aufrufen, generiert er einen zufälligen privaten Schlüssel, leitet daraus die Adresse ab, verschlüsselt dann den Schlüssel mit Ihrer Passphrase und speichert den verschlüsselten Schlüssel auf der Festplatte. Es gibt dann die Adresse zurück.

So können Sie beliebig viele unzusammenhängende Konten erstellen, die alle mit derselben Passphrase verschlüsselt sind.


Das Kernproblem ist, dass Sie wahrscheinlich die eth_account- Bibliothek anstelle der personalAPI verwenden sollten. Die accountAPI dient zum Erstellen von Brieftaschen und Konten im Speicher auf der Clientseite, während die personalAPI zum Verwalten von Konten auf der Serverseite auf der Festplatte dient. Es gibt keine Möglichkeit, einen serverseitigen privaten Schlüssel über web3 abzurufen, aber wenn Sie das Konto clientseitig erstellen, können Sie mit privaten Schlüsseln so viel wie Sie wollen manuell umgehen.

Weitere Beispiele finden Sie unter https://web3py.readthedocs.io/en/stable/web3.eth.account.html#working-with-local-private-keys

Es scheint, dass Sie mit web3.js im Hinterkopf geantwortet haben, aber die Frage verwendete (und markierte) web3.py. Grundsätzlich gelten dieselben Ratschläge, jedoch mit einigen geringfügigen Syntaxvariationen: web3py.readthedocs.io/en/stable/web3.eth.account.html
Ups, das habe ich total übersehen, die Python-Bibliothek hat die gleiche Funktionalität wie web3py.readthedocs.io/en/stable/…