小编cen*_*riq的帖子

web3.personal.ecRecover 未返回正确的公共地址

我正在尝试让 web3.personal.ecRecover 正常工作。这是我的设置:

  • Chrome 使用 Remix IDE

  • MetaMask 注入 web3.js

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

msg = web3.sha3('Schoolbus')

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

这返回:

0xd030d9a04df643f62a1502b017f51c41a659268091abbd20e2de97b935724d7c
Run Code Online (Sandbox Code Playgroud)

现在我设置:

 signature = "0x36f32cbd6133ce6be7efa4cb73ff3f9ddf9b7db3ba15fa543ab0a93d04a96c102693739f946f2d89eca9030b4c8e01bb6fada1c23f05b6a4956dd63deaf187501b"
Run Code Online (Sandbox Code Playgroud)

并尝试:

web3.personal.ecRecover(msg,signature, function(error, result){
    if(!error)
        console.log(result)
    else
        console.error(error);
}) 
Run Code Online (Sandbox Code Playgroud)

并得到:

0xcc3f70c6caa9fee58bab68f292bdf3132c3c9ae2
Run Code Online (Sandbox Code Playgroud)

显然这不是我使用的公共地址(即web3.eth.accounts[0])

有什么建议来解决这个问题吗?

javascript ethereum web3js

2
推荐指数
1
解决办法
4375
查看次数

标签 统计

ethereum ×1

javascript ×1

web3js ×1