首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web3.personal.ecRecover不起作用

web3.personal.ecRecover不起作用
EN

Ethereum用户
提问于 2017-10-23 09:19:44
回答 1查看 1.9K关注 0票数 1

我想让web3.personal.ecRecover开始工作。这是我的设计:

  • 使用Remix IDE的Chrome
  • MetaMask注入web3.js

现在,我正在Chrome Dev控制台中尝试以下命令:

代码语言:javascript
复制
msg = web3.sha3('Schoolbus')

web3.eth.sign(web3.eth.accounts[0], msg , function(error, result){
     if(!error)
         console.log(result)
    else
        console.error(error);
})

这将返回:

代码语言:javascript
复制
0xd030d9a04df643f62a1502b017f51c41a659268091abbd20e2de97b935724d7c

现在我说:

代码语言:javascript
复制
 signature = "0x36f32cbd6133ce6be7efa4cb73ff3f9ddf9b7db3ba15fa543ab0a93d04a96c102693739f946f2d89eca9030b4c8e01bb6fada1c23f05b6a4956dd63deaf187501b"

并试着:

代码语言:javascript
复制
web3.personal.ecRecover(msg,signature, function(error, result){
    if(!error)
        console.log(result)
    else
        console.error(error);
}) 

并得到:

代码语言:javascript
复制
0xcc3f70c6caa9fee58bab68f292bdf3132c3c9ae2

显然,这不是我使用的公共地址(即web3.eth.accounts0)。

有什么改进这个代码的建议吗?谢谢!

S

EN

回答 1

Ethereum用户

发布于 2018-12-17 15:06:52

这是返回事务签名者的代码的工作变体。

签署您的消息的脚本:

代码语言:javascript
复制
let msg = web3.sha3('Schoolbus');
let signMsg;
web3.personal.sign(msg, web3.eth.accounts[0], function(error, result) {
   if(!error) {
      signMsg = result;
       console.log(result);
   } else {
       console.error(error);
   }
})

获得签名者的脚本

代码语言:javascript
复制
web3.personal.ecRecover(msg, signMsg, function(error, result) {
    if(!error) {
        console.log(result);
    }
    else {
        console.log("Error");
    }
 })
票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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