У меня есть файл 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}}
На основе ответа пользователя @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
deriveKeyFromPasswordAndSalt
в соответствии с вашим комментарием...Если у вас есть закрытый ключ, просто сохраните его в текстовом файле, скажем, damn_private_key
и импортируйте его с помощью geth:
geth account import /path/to/damn_private_key
Подробнее . _ Не забудьте удалить файл простого закрытого ключа с вашего диска.
q9f
эт
Полморрисс