使用ecrecover功能 - Solidity

时间:2018-05-08 01:02:14

标签: solidity

我正在尝试验证消息,我在StackOverflow上搜索并找到了ecrecover功能。但是当我使用它时,它会返回与我期望的不同的地址。

function verify(bytes32 hash, uint8 v, bytes32 r, bytes32 s) constant returns(address) {
    bytes memory prefix = "\x19Ethereum Signed Message:\n32";
    bytes32 prefixedHash = keccak256(prefix, hash);
    return ecrecover(prefixedHash, v, r, s);
}

签名对象:

{
message: 'a',
messageHash: '0x34f291c0b5f0c13c8f43e9d37c04094c22234da43f4040adb36654c98235b4b3',
v: '0x1b',
r: '0x944f8187c19a711259e32dd9ab0f005c97c9e2013c735f823d3ad34c7cd5030f',
s: '0x254607e8d32e8a0436c8d678fe7d3478c8858fd903e164c51f8a8595e723b7a7',
signature: '0x944f8187c19a711259e32dd9ab0f005c97c9e2013c735f823d3ad34c7cd5030f254607e8d32e8a0436c8d678fe7d3478c8858fd903e164c51f8a8595e723b7a71b' }

输入:(我将其传递给remix-ide)

"0x34f291c0b5f0c13c8f43e9d37c04094c22234da43f4040adb36654c98235b4b3", 0x1b, "0x944f8187c19a711259e32dd9ab0f005c97c9e2013c735f823d3ad34c7cd5030f", "0x254607e8d32e8a0436c8d678fe7d3478c8858fd903e164c51f8a8595e723b7a7"

输出:(错误)

0x5dd277a46b3ab8ce30735d82df5e6e8312bce7ef

请帮我弄清问题。非常感谢。

0 个答案:

没有答案