123456789101112131415161718192021222324252627282930313233343536 |
- methods {
- // hashOperation(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt) returns(bytes32) => uniqueHashGhost(target, value, data, predecessor, salt)
- }
- // ghost uniqueHashGhost(address, uint256, bytes, bytes32, bytes32) returns bytes32;
- //
- // Assuming the hash is deterministic, and correlates the trio properly
- // function hashUniquness(address target1, uint256 value1, bytes data1, bytes32 predecessor1, bytes32 salt1,
- // address target2, uint256 value2, bytes data2, bytes32 predecessor2, bytes32 salt2){
- // require ((target1 != target2) || (value1 != value2) || (data1 != data2) || (predecessor1 != predecessor2) || (salt1 != salt2)) <=>
- // (uniqueHashGhost(target1, value1, data1, predecessor1, salt1) != uniqueHashGhost(target2, value2, data2, predecessor2, salt2));
- // }
- //
- //
- // rule keccakCheck(method f, env e){
- // address target;
- // uint256 value;
- // bytes data;
- // bytes32 predecessor;
- // bytes32 salt;
- //
- // hashUniquness(target, value, data, predecessor, salt,
- // target, value, data, predecessor, salt);
- //
- // bytes32 a = hashOperation(e, target, value, data, predecessor, salt);
- // bytes32 b = hashOperation(e, target, value, data, predecessor, salt);
- //
- // assert a == b, "hashes are different";
- // }
- rule sanity(method f) {
- env e;
- calldataarg arg;
- f(e, arg);
- assert false;
- }
|