我对ecrecover的工作原理有很好的理解,但我不知道如何强制执行一个参数集,该参数集将决定性地返回0x0地址。我在我的合同测试中需要这个。
这有可能吗?
发布于 2019-04-05 21:09:24
我偶然发现了这个线程,然后我发现了这个文档,现在我明白了将v设置为任何(正的?)27或28以外的数字将决定性地返回0x0作为原始签名者地址。
为自己测试它的坚实性:
function getSignerZero(bytes32 msgHash, bytes32 r, bytes32 s) public returns (address _signer) {
uint8 wrongV = 17; // should normally be 27 or 28
return ecrecover(msgHash, wrongV, r, s);
}此外,如果您使用程序集和staticcall,请注意:返回的值为0x0实际上是不正确的。在那里所发生的是,预编译永远不会得到一个新的值,所以您的程序将指向它在调用之前指向的相同的值。
https://ethereum.stackexchange.com/questions/69328
复制相似问题