我想在前端页面用web3对一些数据做签名,然后在智能合约里验证,但是一直不成功。
前端代码如下:一开始想用web.eth.sign,但是现在他不能用了,就用了EIPv1中的eth_signTypedData,后来发现personal_sign的签名直接和V1的不一样。但是都验证不了。
const data=[
{
type: 'bytes32', // Any valid solidity type
name: 'Message', // Any string label you want
value: 'zaijian' // The value to sign
}
]
web3.currentProvider.sendAsync({
// method:'eth_signTypedData',
method:'personal_sign',
params:[data,web3.eth.defaultAccount],
from:web3.eth.defaultAccount,
}, function (err, result) {
if (err) return console.dir(err)
if (result.error) {
alert(result.error.message);
return console.error(result)
}
$("#InfoSign").val(result.result);
}
而且solidity现在也不能直接对数据keccak256了,需要用abi.encode打包一下,在前端也不知道怎么实现他那个编码,人直接傻掉。有大佬救救孩子吗