Wie importiere ich einen einfachen privaten Schlüssel in Geth oder Mist?

Dies ist eine so grundlegende Frage, aber ich kann nicht herausfinden, wie ich einen einfachen, unverschlüsselten privaten Schlüssel in Geth oder Mist importieren kann?

Ich habe es versucht geth account import 7[......]bla, aber es scheint, dass dieser Befehl immer nach einer unverschlüsselten Schlüsseldatei sucht.

Irgendwelche Ideen?

Antworten (7)

Fügen Sie den Schlüssel in eine Textdatei ein, speichern Sie ihn auf der Festplatte und verwenden Sie den Pfad zu dieser Datei mit geth account import. Hier sind einige Beispiele für Windows-Anweisungen, die hilfreich sein könnten:

  1. Öffnen Sie den Editor
  2. Fügen Sie den Schlüssel ohne zusätzliche Zeichen oder Anführungszeichen in den Notizblock ein
  3. Speichern Sie die Datei nothing_special_delete_me.txtunterC:\
  4. Führen Sie den Befehl aus,geth account import C:\nothing_special_delete_me.txt
  5. Löschen Sie nach erfolgreichem Import die Datei unterC:\nothing_special_delete_me.txt

Wenn Sie geth noch nicht installiert haben, führen Sie nach Schritt 3 die folgenden Schritte aus und fahren Sie mit Schritt 4 fort:

  • Öffnen Sie die Eingabeaufforderung (cmd.exe).
  • Geben Sie in der Eingabeaufforderung den folgenden Befehl ein, um zu dem Ordner zu wechseln, der Ihre Geth.exe-Datei enthält: cd c:\Ethereum-Wallet-win64-0-7-3\resources\node\geth(fügen Sie dort Ihren korrekten Pfad ein)
Ich bekomme Fatal: keyfile must be given as argumentdabei das gleiche. PS: Ich laufe auf Linux-Macine.

Verwenden Sie den folgenden Befehl in der Geth-Konsole

web3.personal.importRawKey("<Private Key>","<New Password>")
Standardmäßig enthält web3.js die personalMethoden nicht. Weitere Informationen finden Sie unter ethereum.stackexchange.com/questions/1413/…

Mist hat keine Möglichkeit, über die GUI zu importieren, daher müssen Sie über die Befehlszeile ( geth) importieren. Es wird sofort in Ihrem Nebel angezeigt.

Für Mac:

  1. Öffnen Sie TextEdit

  2. Fügen Sie den Schlüssel ohne zusätzliche Zeichen oder Anführungszeichen in TextEdit ein

  3. Speichern Sie die Datei nothing_special_delete_me.txtauf Ihrem Desktop

  4. Terminal öffnen, Befehl ausführen:

    geth account import ~/Desktop/nothing_special_delete_me.txt
    
  5. Löschen Sie die Datei nach erfolgreichem Import von Ihrem Desktop.

"Füge den Schlüssel in eine Textdatei ein" ... wie kann ich meinen privaten Schlüssel sehen, bevor ich ihn irgendwo kopiere/einfüge? Im Nebel gibt es keine Möglichkeit, eine solche Information zu nehmen?
@metafl - Wenn Sie das Konto im Nebel haben, müssen Sie es nicht in Geth importieren. Es ist schon da. Dies erklärt, wo sich Ihre Nebelschlüssel befinden, aber es handelt sich nicht um private Rohschlüssel, sondern um verschlüsselte Schlüsselspeicherdateien. ethereum.stackexchange.com/questions/946/…
bashBenutzer : Eine One-Step-Antwort ist hier .
@TomHale Der Grund, warum die Verwendung einer externen Datei empfohlen wird, besteht darin, dass auf diese Weise Ihr privater Schlüssel in Ihrer .bash_history gespeichert würde, was für die meisten unerwartet und möglicherweise schlecht ist

Für Linux:

Wenn Sie die Mist-Wallet herunterladen, erhalten Sie einen Ordner. In dem Ordner befindet sich die Nebeltasche. Nachdem Sie die Mist-Wallet ausgeführt haben, müssen Sie auf cli zugreifen.

Gehen Sie zu /whereveryousavedtheetherumfolder/node/resource/geth/und führen Sie dann aus ./geth account import privekey-file.txt.

Dies funktioniert in meinem Fall nicht, ich bekomme Fatal: keyfile must be given as argument> Ich kann es immer noch nicht lösen.

Angesichts der Popularität dieser Frage ging ich voran und baute ein Tool, mit dem Sie, wenn Sie Ihren privaten Rohschlüssel haben, ihn leicht in sein Gegenstück zum öffentlichen Schlüssel und die abgeleitete Ethereum-Adresse konvertieren können.

Anschließend können Sie den Schlüssel im entsprechenden hier definierten Format exportieren , sodass er mit Geth oder Parity verwendet werden kann.

Geben Sie Ihren privaten Schlüssel ein Geben Sie hier die Bildbeschreibung ein

Exportieren Sie Ihre Schlüsseldatei Geben Sie hier die Bildbeschreibung ein

Trotzdem denke ich, dass es erwähnenswert ist, dass Sie ohnehin nicht direkt mit Ihrem privaten Schlüssel arbeiten sollten. Ihr privater Schlüssel steuert den Zugriff auf Ihr Konto.

HINWEIS: Wenn Sie Tools wie dieses verwenden, erhalten Dritte durch das Senden Ihres privaten Schlüssels vollen Zugriff auf den Inhalt Ihrer Brieftasche.
Das ist nicht ganz richtig. Wenn wir Ihren privaten Schlüssel speichern, hätten wir Zugriff auf Ihr Konto. Wir speichern Ihren privaten Schlüssel NICHT. Der Punkt bleibt jedoch bestehen - Sie sollten immer vorsichtig und vorsichtig mit Ihrem privaten Schlüssel umgehen.

Verwenden Sie diese Methode nur zum Wegwerfen und Testen von Konten, da Ihr Schlüssel im Verlauf Ihrer Shell gespeichert wird (danke an @tayvano).

Verwenden bashvon , wo abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcaist Ihr privater Schlüssel:

geth account import <(echo abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca)
Der Grund, warum es empfohlen wird, eine externe Datei zu verwenden, ist, dass auf diese Weise Ihr privater Schlüssel in Ihrer .bash_history gespeichert würde, was für die meisten unerwartet und potenziell schlecht ist

Mit Gethkönnen Sie vordefinierte Adressen (Schlüsselpaare) mit --preloadder Befehlsoption importieren geth console.

Für Nicht-Produktionsumgebungen kann es praktisch sein, vordefinierte Adressen hinzuzufügen/zu importieren, genügend Anfangsguthaben zuzuweisen und diese Konten automatisch zu entsperren. Zu diesem Zweck können Sie die allocEigenschaft des Genesis-Objekts, die --preloadOption mit der Geth-Konsolen-API verwenden.

Wenn Sie beispielsweise die folgenden vordefinierten Adressen zuvor generiert haben (Sie können Online-Generatoren oder Bibliotheken wie eth-accountin Python verwenden.

private-key, address
ba75c5fd16ae1151dc9f961e94e219994c6335a5b4148c624142243fb76306d6, 0xd3ae0500e21008c89ca4746be7522340c67f5730
097dd6aedb87b3b5e541cfb9ef8d4beb7a66084dd80d99c2e51aeabeae320980, 0x76aaacd6169017644ba7530b7d956e1fcc0178ad
abae82647f5881a398f7eede8910803d65470a7cbaee9ddda90dcdcdc8dcdacf, 0xeb875bb0eec43d779c4d539ca34e89fb0868d867
cc1af47cbc9de0c9a1e1049c1a62ddb9e08440d16093803d74e93f1cea3458ee, 0x0ccca39f9c169996c8380bf7c529dc3b9ff6198a
3e48c4e748b8f5baf6f870c5c4d2a0147390c94e778a9ca67de945bffeb2f72a, 0xd738b71007cffbec9b0a7e99088b132858f5e270

Unten ist das Skript, um die oben genannten Konten (Schlüssel/Adressen) zu importieren, sie zu entsperren und einen Miner mit dem ersten Konto zu starten.


var passphrase = 'none';
var accts = personal.listAccounts;
if (accts.length == 0){

  var keys = [
    "ba75c5fd16ae1151dc9f961e94e219994c6335a5b4148c624142243fb76306d6",
    "097dd6aedb87b3b5e541cfb9ef8d4beb7a66084dd80d99c2e51aeabeae320980",
    "abae82647f5881a398f7eede8910803d65470a7cbaee9ddda90dcdcdc8dcdacf",
    "cc1af47cbc9de0c9a1e1049c1a62ddb9e08440d16093803d74e93f1cea3458ee",
    "3e48c4e748b8f5baf6f870c5c4d2a0147390c94e778a9ca67de945bffeb2f72a"
  ]

  for(var i = 0; i < keys.length; i++){ 
    personal.importRawKey(keys[i], passphrase);
  }
  
  console.log('Successfully imported ', keys.length, ' keys into the keystore');
  accts = personal.listAccounts;
}

for(var i = 0; i < accts.length; i++){
  personal.unlockAccount(accts[i], passphrase);
}
console.log('Successfully unlocked ', accts.length, ' accounts');

miner.setEtherbase(accts[0])
miner.start(1)
console.log('Miner started for ', accts[0]);

Im obigen Skript sind personal.listAccounts, personal.importRawKey(), personal.unlockAccount(), miner.setEtherbase()und miner.startdie Konsolen-APIs von geth.

personal.importRawKey()Die API importiert den angegebenen Schlüssel und die angegebene Adresse dauerhaft und reicht daher aus, um einmal aufgerufen zu werden. Aber personal.unlockAccount()es ist nicht persistent, sondern gilt bis zur aktuellen Geth-Instanz. Unlock ist also immer dann notwendig, wenn ein Geth gestartet wird.

Um das obige script( geth-setup.js) jedes Mal auszuführen, um geth auszuführen, --preloadkönnte die Option verwendet werden.

$ geth --datadir ./data --nodiscover --verbosity 2 --allow-insecure-unlock \
     --preload ./scripts/geth-setup.js \
     --http --http.addr localhost --http.port 8545 console >> geth.log 2>&1

Option nicht verpassen --allow-insecure-unlock, um Berechtigungsfehler von zu vermeiden personal.unlockAccount().

Konten können wie oben importiert und entsperrt werden, aber sie haben noch kein Guthaben. Um diesen Konten genügend Ether zuzuweisen, können wir die allocEigenschaft der Genesis-Konfiguration ( genesis.json) verwenden. Mit dem aktuellen Beispiel genesis.jsonwürde das wie folgt aussehen.

{
  "config": {
    "chainId": 2021,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,    
    "muirglacierblock": 0,
    "ethash": {
      "fixeddifficulty": 100
    }
  },
  "nonce": "0x0",
  "difficulty": "0x60",
  "gasLimit": "0x1fffffffffffff",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
    "d3ae0500e21008c89ca4746be7522340c67f5730": { "balance": "10000000000000000000000" },
    "76aaacd6169017644ba7530b7d956e1fcc0178ad": { "balance": "10000000000000000000000" },
    "eb875bb0eec43d779c4d539ca34e89fb0868d867": { "balance": "10000000000000000000000" },
    "0ccca39f9c169996c8380bf7c529dc3b9ff6198a": { "balance": "10000000000000000000000" },
    "d738b71007cffbec9b0a7e99088b132858f5e270": { "balance": "10000000000000000000000" }
  }
}

Dieser Genesis-Block wird vor dem Import von Konten verwendet. Aber die allocKonfiguration (die für die noch nicht importierten oder beim Erstellen des Genesis-Blocks erstellten Konten gilt) würde später wirksam, wenn die Konten importiert werden.