Я использую eth-lightwallet на сервере NodeJS. Я получаю трассировку стека, когда пытаюсь получить закрытый ключ из хранилища ключей. Он помечает эту строку "keystore.generateNewAddress(pwDerivedKey);" Я не вижу, как это связано. Когда я закомментирую строку «account.prv_key = keystore.exportPrivateKey(sendingAddr, pwDerivedKey);» кажется, работает безупречно. Я делаю что-то неправильно? Ошибка выдает «Нет начального набора», однако, когда я смотрю в режиме отладки, начальное значение наверняка установлено. Я новичок в Node и подозреваю, что это как-то связано с асинхронной природой Node. Я включил код и трассировку стека ниже. Спасибо.
lightwallet.keystore.deriveKeyFromPassword('mypassword',
function (err, pwDerivedKey) {
var seed = lightwallet.keystore.generateRandomSeed();
var keystore = new lightwallet.keystore(seed, pwDerivedKey);
keystore.generateNewAddress(pwDerivedKey);
account.address = keystore.getAddresses()[0];
account.prv_key = keystore.exportPrivateKey(sendingAddr, pwDerivedKey);
})
/Users/username/WebstormProjects/eth-project/nodejs-server/node_modules/eth-lightwallet/lib/keystore.js:389
throw new Error('KeyStore.generateNewAddress: No seed set');
^
Error: KeyStore.generateNewAddress: No seed set
at KeyStore.generateNewAddress (/Users/username/WebstormProjects/eth-project/nodejs-server/node_modules/eth-lightwallet/lib/keystore.js:389:11)
at /Users/username/WebstormProjects/eth-project/nodejs-server/controllers/ActorService.js:39:20
at cb (/Users/username/WebstormProjects/eth-project/nodejs-server/node_modules/eth-lightwallet/lib/keystore.js:459:7)
at /Users/username/WebstormProjects/eth-project/nodejs-server/node_modules/eth-lightwallet/node_modules/scrypt-async/scrypt-async.js:474:9
at Immediate._onImmediate (/Users/username/WebstormProjects/eth-project/nodejs-server/node_modules/eth-lightwallet/node_modules/scrypt-async/scrypt-async.js:433:11)
at processImmediate [as _immediateCallback] (timers.js:383:17)
Ваша функция обработчика может иметь некоторую ошибку, препятствующую правильному выполнению обработчика. Вы можете проверить, была ли установлена ошибка в вашем обработчике, и распечатать ее, чтобы точно увидеть, что это за ошибка. Для меня, если я запускаю ваш точный код, мне пришлось удалить ссылку на «учетную запись» и изменить «sendingAddr» на первый адрес хранилища ключей до запуска кода. Убедитесь, что эти 2 переменные определены в контексте вашего кода. Это код, который работает для меня:
lightwallet.keystore.deriveKeyFromPassword('mypassword',
function (err, pwDerivedKey) {
var seed = lightwallet.keystore.generateRandomSeed();
var keystore = new lightwallet.keystore(seed, pwDerivedKey);
keystore.generateNewAddress(pwDerivedKey);
var address = keystore.getAddresses()[0];
var prv_key = keystore.exportPrivateKey(address, pwDerivedKey);
console.log('address and key: ', address, prv_key);
})