Как перевести средства на другой счет из файла lightwallet.dat

У меня есть файл lightwallet.dat, который я экспортировал с ujomusic.com . Формат отличается от используемого geth. Я не ожидаю, что geth будет импортировать его, поэтому могу ли я создать учетную запись с тем же номером, что и у этой учетной записи, и каким-то образом с помощью закрытого ключа перевести средства на другую учетную запись? Это для того, чтобы я мог получить эфир на счету.

Могу ли я получить закрытый ключ открытого текста? Если да, то как мне это сделать?

Файл выглядит так:

{
    "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}}
непонятно, что вы спрашиваете. что такое lightwallet.dat и какое он имеет отношение к ujomusic 'маленький человек' с таким тяжелым javascript, что мой браузер имеет тенденцию умирать?
Я готовлю/пытаюсь ответить специально для ujomusic lightwallet; Я думаю, что заголовок вопроса можно улучшить, сделав его более конкретным, потому что основной ответ на общий вопрос - «Да».
Я переформулировал заголовок, чтобы он соответствовал конкретной детали вопроса. Я задам общий вопрос как отдельный, потому что я думаю, что это тоже полезно знать. Кто увидит это - пожалуйста, проголосуйте за повторное открытие.

Ответы (2)

На основе ответа пользователя @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 использует Lightwallet . Экспорт из Lightwallet, а затем импорт в Geth должен помочь получить доступ к средствам. (В качестве альтернативы можно продолжать использовать API Lightwallet.)

Экспорт из Lightwallet

В каталоге, где находится ваш lightwallet.dat, выполните следующие команды: очевидно, вам нужно использовать свой собственный адрес Ujo и пароль . Это предполагает, что в вашей системе уже есть 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'

В этом примере 7...bla — закрытый ключ. (Я опустил вывод других команд выше, чтобы было понятнее.)

Импортировать в Geth

Скопируйте закрытый ключ

Вставьте ключ в текстовый файл, скажем, must_delete_this.txt и импортируйте его с помощью geth:

geth account import must_delete_this.txt

удалите файл с именем must_delete_this.txt

API изменились с тех пор, как это было написано, и принятый ответ на этот вопрос лучше: ethereum.stackexchange.com/questions/3094/…
Спасибо, я пытался редактировать, а также использовать deriveKeyFromPasswordAndSaltв соответствии с вашим комментарием...

Если у вас есть закрытый ключ, просто сохраните его в текстовом файле, скажем, damn_private_keyи импортируйте его с помощью geth:

geth account import /path/to/damn_private_key

Подробнее . _ Не забудьте удалить файл простого закрытого ключа с вашего диска.