首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用eth-lightwallet“无种子集”从密钥存储中提取私钥?

如何使用eth-lightwallet“无种子集”从密钥存储中提取私钥?
EN

Ethereum用户
提问于 2016-05-16 19:17:36
回答 1查看 1.4K关注 0票数 3

我在NodeJS服务器上使用。当我尝试从keystore获取私钥时,我会得到一个堆栈跟踪。它正在标记这一行“keystore.generateNewAddress(PwDerivedKey)”;我看不出它是如何关联的。当我注释掉"account.prv_key = keystore.exportPrivateKey(sendingAddr,pwDerivedKey)“一行时,它似乎完美无缺地工作了。我做错什么了吗?错误是抛出“无种子集”,然而,当我查看调试模式时,种子是最肯定设置的。我对Node很陌生,并怀疑它与Node的异步特性有关。我已经包含了下面的代码和堆栈跟踪。谢谢。

代码语言:javascript
复制
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)
EN

回答 1

Ethereum用户

回答已采纳

发布于 2016-05-17 20:53:24

您的处理程序函数可能有一些错误,使处理程序无法正确执行。您可以检查是否在处理程序中设置了"err“,并将其打印出来,以查看它到底是什么错误。对于我来说,如果我运行您的确切代码,我必须删除对“帐户”的引用,并在代码运行之前将"sendingAddr“更改为密钥存储库的第一个地址。确保在代码上下文中定义了这两个变量。这是对我有用的代码:

代码语言:javascript
复制
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);
})
票数 7
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/3985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档