Von welchem ​​HD-Wallet-Knoten wird der private Schlüssel in Ethereum generiert?

Ich weiß, wie man eine gültige Mnemonik und eine gültige Adresse generiert, die dieser Mnemonik zugeordnet ist. Ich bin mir jedoch nicht sicher, wie ich einen privaten Schlüssel in Ethereum generieren soll. In Bitcoin ist der Master-Knoten der Ort, an dem Sie den privaten Schlüssel erhalten (manchmal auch als privater Master-Schlüssel bezeichnet).

Bei Ethereum scheint die Generation jedoch sehr gerade gehalten zu werden (der Pfad ist ein Standard "m/44'/60'/0'/0" und es scheint, dass Ethereum-Geldbörsen nicht mehr als ein Konto oder in einigen nutzen Fälle mehr als eine Adresse.

Von welchem ​​Knoten wird also der private Schlüssel generiert? Der Stammknoten und der untergeordnete Knoten im Pfad haben unterschiedliche erweiterte private Schlüssel?

Tag auf Frage, wie kann ich den erweiterten privaten Schlüssel formatieren, damit er nicht mehr verlängert wird?

Hallo @arshbot n Dieser Link hilft auth0.com/blog/…

Antworten (1)

Laut dieser Github-Problemseite stellt sich heraus, dass der private Schlüssel nicht als Teil der Knotenstruktur generiert wird, sondern das Ergebnis des HMACing der ersten 32 Bytes der Entropie ist. Ein Beispiel unten

import hdkey from 'ethereumjs-wallet/hdkey';
import ethwallet from 'ethereumjs-wallet';
import ethtx from 'ethereumjs-tx';
import bip39 from 'bip39';

const mnemonic = bip39.generateMnemonic();
console.log(`Mnemonic: ${mnemonic}`);
const root = hdkey.fromMasterSeed(bip39.mnemonicToSeed(mnemonic));
const derivedNode = root.derivePath("m/44'/60'/0'/0");
const address = this.generateAddress(derivedNode);
console.log(`Private Key: ${root._hdkey.privateKey.toString('hex')}`);

Die eigentliche Generierung des privaten Schlüssels erfolgt in hdkey