keccak256()可以用于计算公钥的签名,ecrecover()可以用来恢复签名公钥,传值正确的情况下,可以利用这两个函数来验证地址:
//ecrecover接口,利用椭圆曲线签名恢复与公钥相关的地址,错误返回零...= ecrecover(hash,_v,_r,_s)) revert();
当ecrecover传入错误参数(例如_v = 29,),函数返回0地址,如果合约函数传入的校验地址也为零地址,那么将通过断言...,导致合约逻辑错误:
function transferProxy(address _from, address _to, uint256 _value, uint256 _feeMesh,
uint8...return true;
}
在函数transferProxy中,如果传入的参数_from为0,那么ecrecover函数因为输入参数错误而返回0值之后,if判断将通过,从而导致合约漏洞:
pragma...= 0x0); // 待校验的地址不为0
bytes32 h = keccak256(_from,_to,_value,_feeMesh,nonce,name);
if(_from !