Из какого узла HD-кошелька генерируется закрытый ключ в эфириуме?

Я знаю, как сгенерировать допустимую мнемонику и действительный адрес, связанный с этой мнемоникой. Однако я не уверен, как сгенерировать закрытый ключ в эфириуме. В Биткойне главный узел — это место, где вы получаете закрытый ключ (иногда называемый главным закрытым ключом).

Однако в Эфириуме кажется, что генерация поддерживается очень прямолинейно (путь является стандартным «m/44'/60'/0'/0», и кажется, что кошельки Эфириума не используют более одной учетной записи или в некоторых случаях более одного адреса.

Следовательно, из какого узла генерируется закрытый ключ? Корневой узел и дочерний узел в пути имеют разные расширенные закрытые ключи?

Отметьте вопрос, как я могу отформатировать расширенный закрытый ключ, чтобы он больше не был расширен?

привет @arshbot n эта ссылка поможет auth0.com/blog/…

Ответы (1)

Согласно этой странице проблемы 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