Tengo un archivo lightwallet.dat que exporté de ujomusic.com . Está en un formato diferente al usado por geth. No espero que geth lo importe, ¿puedo crear una cuenta con el mismo número que esa cuenta y, usando la clave privada de alguna manera, transferir los fondos a otra cuenta? Esto es para que pueda obtener el Ether en la cuenta.
¿Puedo recuperar la clave privada de texto sin formato? Si es así, ¿cómo hago eso?
El archivo se ve así:
{
"encSeed":
{ "encStr":"U2FsdGVkX186DSL2uPp1vZO......","iv":"1cb31568e......","salt":"3a0d...."},
"encHdRootPriv": {"encStr":"U2FsdGVkX19FA0tZsR......","iv":"da5e226....","salt":"45034...."},
"hdIndex":1,
"encPrivKeys":{
"92f2f6b0cc1.......:{"key":"U2FsdGVkX183.....","iv":"5ec1968....","salt":"371302....."}},
"addresses":["0x92f2f6b......"],"keyHash":"f1af35a6222......",
"salt":{"words":[-918769374,1616628770,1822257817,983741528],"sigBytes":16}}
Basado en una respuesta del usuario @Clovis:
npm install eth-lightwallet
node
>var lightwallet = require("eth-lightwallet")
>var upgrade = require("eth-lightwallet/lib/upgrade")
>var jsonStr='contents of ./app/users/admin/*.json file'
>var newJSON
>upgrade.upgradeOldSerialized(jsonStr, , function(err, tmpJSON) {newJSON=tmpJSON;console.log(newJSON);});
>keystore = lightwallet.keystore.deserialize(newJSON);
>var derivedKey;
>lightwallet.keystore.deriveKeyFromPasswordAndSalt('', '', function (err, pwDerivedKey) {derivedKey = pwDerivedKey;});
>var addresses = keystore.getAddresses();
>keystore.exportPrivateKey(addresses[0], derivedKey);
Ujo usa Lightwallet . Exportar desde Lightwallet y luego importar a Geth debería ayudar a acceder a los fondos. (Una alternativa es continuar usando las API de Lightwallet).
Exportar desde Lightwallet
En el directorio donde está su lightwallet.dat, ejecute los siguientes comandos: obviamente necesita usar su propia dirección y contraseña de Ujo . Esto supone que su sistema ya tiene NodeJS .
npm install eth-lightwallet
node
> var lightwallet = require('eth-lightwallet')
> newJSON = lightwallet.keystore.upgradeOldSerialized(JSON.parse(fs.readFileSync('lightwallet.dat')), <password>)
> keystore = lightwallet.keystore.deserialize(newJSON)
> keystore.exportPrivateKey(<address>, <password>)
'7...bla'
En este ejemplo, 7...bla es la clave privada. (He omitido la salida de los otros comandos anteriores para que sea más claro).
Importar a Geth
Copia la clave privada
Pegue la clave en un archivo de texto, digamos must_delete_this.txt e impórtelo con geth:
geth account import must_delete_this.txt
elimine el archivo llamado must_delete_this.txt
deriveKeyFromPasswordAndSalt
según tu comentario...Si tiene la clave privada disponible, simplemente guárdela en un archivo de texto, digamos damn_private_key
e impórtelo con geth:
geth account import /path/to/damn_private_key
Más detalles _ No olvide eliminar el archivo de clave privada sin formato en su disco.
q9f
ética
pablomorriss