我想让web3.personal.ecRecover开始工作。这是我的设计:
现在,我正在Chrome Dev控制台中尝试以下命令:
msg = web3.sha3('Schoolbus')
web3.eth.sign(web3.eth.accounts[0], msg , function(error, result){
if(!error)
console.log(result)
else
console.error(error);
})这将返回:
0xd030d9a04df643f62a1502b017f51c41a659268091abbd20e2de97b935724d7c现在我说:
signature = "0x36f32cbd6133ce6be7efa4cb73ff3f9ddf9b7db3ba15fa543ab0a93d04a96c102693739f946f2d89eca9030b4c8e01bb6fada1c23f05b6a4956dd63deaf187501b"并试着:
web3.personal.ecRecover(msg,signature, function(error, result){
if(!error)
console.log(result)
else
console.error(error);
}) 并得到:
0xcc3f70c6caa9fee58bab68f292bdf3132c3c9ae2显然,这不是我使用的公共地址(即web3.eth.accounts0)。
有什么改进这个代码的建议吗?谢谢!
S
发布于 2018-12-17 15:06:52
这是返回事务签名者的代码的工作变体。
签署您的消息的脚本:
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);
}
})获得签名者的脚本
web3.personal.ecRecover(msg, signMsg, function(error, result) {
if(!error) {
console.log(result);
}
else {
console.log("Error");
}
})https://ethereum.stackexchange.com/questions/29062
复制相似问题