Как создать файл хранилища ключей (UTC) из необработанного закрытого ключа?

Если у меня есть закрытый ключ открытого текста, как я могу сгенерировать gethсовместимый файл хранилища ключей с помощью Node.js?

Я думаю, мне нужно зашифровать его с помощью scryptалгоритма, указав пароль, но я не знаю, как это сделать. Любые - предпочтительно браузерные - примеры будут высоко оценены.

Спасибо,

Проще всего импортировать ключ в Geth, в противном случае см. ethereum.stackexchange.com/questions/1825/…
@eth Спасибо! Но я забыл упомянуть, что хочу сделать это в Node.js, без Geth. Соответственно обновил вопрос.
Я думал, что это так, поэтому я прокомментировал вместо того, чтобы ответить :) Да, это хорошая идея, чтобы вопросы были более конкретными. Из ссылки на анатомию у вас есть определение секретного хранилища Web3, и этого может быть достаточно, чтобы немного продержаться. (Я бы ответил, если бы знал больше.)
Есть библиотека Python для того, что вы хотите сделать, если это поможет.
Вы также можете сделать это в настольной версии MyCrypto.com.

Ответы (1)

Файл хранилища ключей, совместимый с geth, можно создать в Node с помощью библиотеки ethereumjs-wallet :

> var Wallet = require('ethereumjs-wallet');
> var key = Buffer.from('efca4cdd31923b50f4214af5d2ae10e7ac45a5019e9431cc195482d707485378', 'hex');
> var wallet = Wallet.fromPrivateKey(key);
> wallet.toV3String('password');
'{"version":3,"id":"467233bf-45ec-423b-9548-bdc4a42aa099","address":"b14ab53e38da1c172f877dbc6d65e4a1b0474c3c","crypto":{"ciphertext":"17886b7ff355219dd20900543b9592fcd4dc6fe7d8f776f1a4d1c63993112181","cipherparams":{"iv":"434e4e71d2013a2d84e86a6e89efbb0b"},"cipher":"aes-128-ctr","kdf":"scrypt","kdfparams":{"dklen":32,"salt":"7a785ab75fa906734788d85ff43a2c8e704af41881dd50a2d52abe08092f07ec","n":262144,"r":8,"p":1},"mac":"98d9a76960dcef22a5fd28a6bf47e5c68a71b30bcf353eccbf5a6555abec78a1"}}'

Вы также можете указать дополнительные параметры для управления kdf, cipher и другими параметрами кошелька. Смотрите здесь .

Хороший. Я использовал geth account import privatekeyfileдля создания следующего JSON{"address":"b14ab53e38da1c172f877dbc6d65e4a1b0474c3c","crypto":{"cipher":"aes-128-ctr","ciphertext":"ff22d876d416cb97876dabfee6b6d00645de2d8dd5fca3b46f82112b1a3cffcd","cipherparams":{"iv":"798fcf346ea18c4c3c9e848118c94527"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"bcc9bdc5a24f37ea56269017325b7bda67813199e017d566d7c274722a29d2b6"},"mac":"57efcea80420e75ed4087f20ac0e37481959a3a8a884e4c4a42bcb4331962dfc"},"id":"f162e70f-4b7c-425b-ba84-3041edfc292a","version":3}