想要验证一下ecrecover方法如何还原对数据进行签名的地址,于是在web3js中:
let msg = document.getElementById("msgToSign").value;
let keccakMsg = web3.utils.keccak256(msg);
let signedMsg = await web3.eth.sign(keccakMsg,accounts[0]);
console.log(signedMsg);
我输入字符串”abc“,用解锁的钱包进行签名,在metamask中确实可以看到,abc被散列成0x4e03657aea45a94fc7d47ba826c8d667c0d1e6e33a64a036ec44f58fa12d6c45
,正符合网上最常见的那个案例里给出的值。
然而得到sign结果之后,我对sign结果进行了vrs切片,在solidity里面:
addr = ecrecover(hash, v, r, s);
却只能返回0x0地址,无法返回我实际签名的地址。
请问问题出在哪里呢?