¿Cómo transfiero fondos a otra cuenta desde un archivo lightwallet.dat?

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}}
no está claro lo que estás preguntando. ¿Qué es un lightwallet.dat y qué tiene que ver con ujomusic 'pequeño humano' con un javascript tan pesado que mi navegador tiende a morir?
Estoy preparando/probando una respuesta específicamente para ujomusic lightwallet; Creo que el título de la pregunta se puede mejorar siendo más específico, porque la respuesta fundamental a la pregunta general es "Sí".
He reformulado el título para que coincida con el detalle específico de la pregunta. Haré la pregunta general como una pregunta separada porque creo que también es útil saberlo. Cualquiera que vea esto, vote por reabrir.

Respuestas (2)

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);

respuesta VIEJA

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

Las API han cambiado desde que se escribió esto y la respuesta aceptada a esta pregunta es mejor: ethereum.stackexchange.com/questions/3094/…
Gracias, intenté editar y usar deriveKeyFromPasswordAndSaltsegún tu comentario...

Si tiene la clave privada disponible, simplemente guárdela en un archivo de texto, digamos damn_private_keye 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.