Я знаю, как сгенерировать допустимую мнемонику и действительный адрес, связанный с этой мнемоникой. Однако я не уверен, как сгенерировать закрытый ключ в эфириуме. В Биткойне главный узел — это место, где вы получаете закрытый ключ (иногда называемый главным закрытым ключом).
Однако в Эфириуме кажется, что генерация поддерживается очень прямолинейно (путь является стандартным «m/44'/60'/0'/0», и кажется, что кошельки Эфириума не используют более одной учетной записи или в некоторых случаях более одного адреса.
Следовательно, из какого узла генерируется закрытый ключ? Корневой узел и дочерний узел в пути имеют разные расширенные закрытые ключи?
Отметьте вопрос, как я могу отформатировать расширенный закрытый ключ, чтобы он больше не был расширен?
Согласно этой странице проблемы github, ответ заключается в том, что закрытый ключ генерируется не как часть структуры узла, а вместо этого является результатом обработки HMAC первых 32 байтов энтропии. Пример ниже
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')}`);
Фактическая генерация закрытого ключа происходит в hdkey
АЛОМГИР ХОССЕН