¿Cómo generar un archivo de almacén de claves (UTC) a partir de la clave privada sin procesar?

Si tengo la clave privada de texto sin formato, ¿cómo puedo generar un getharchivo de almacén de claves compatible con Node.js?

Creo que necesito cifrarlo usando el scryptalgoritmo proporcionando una contraseña, pero no sé cómo hacerlo. Cualquier ejemplo, preferiblemente navegable, sería muy apreciado.

Gracias,

Lo más simple es importar la clave a Geth ; de lo contrario, consulte ethereum.stackexchange.com/questions/1825/…
@eth ¡Gracias! Pero olvidé mencionar que quiero hacer esto en Node.js, sin Geth. Actualicé la pregunta en consecuencia.
Pensé que ese era el caso, por eso comenté en lugar de responder :) Sí, es una buena idea hacer preguntas más específicas. Desde el enlace de anatomía, tiene la Definición de almacenamiento secreto de Web3 y eso podría ser suficiente para seguir adelante por un tiempo. (Respondería si supiera más).
Hay una biblioteca de Python para lo que quieres hacer, si te ayuda.
También podría hacerlo en la versión de escritorio de MyCrypto.com

Respuestas (1)

El archivo de almacén de claves compatible con geth se puede crear en Node usando la biblioteca 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"}}'

También puede especificar opciones adicionales para controlar kdf, cifrado y otros parámetros de billetera. Ver aquí _

Bonito. He usado geth account import privatekeyfilepara producir el siguiente 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}