Deterministic addresses
Core salts
Contract
Salt
SMA address binding
boundSalt = uint256(keccak256(abi.encode(
saltNonce, msg.sender, permissionSigner, manager, feePolicy
)));// create2Salt = keccak256(keccak256(initializer), boundSalt)
bytes32 create2Salt = keccak256(abi.encodePacked(keccak256(safeInitializer), boundSalt));
// initCodeHash = keccak256(proxyCreationCode ++ uint256(uint160(singleton)))
bytes32 initCodeHash = keccak256(abi.encodePacked(
ISafeFactory(safeFactory).proxyCreationCode(),
uint256(uint160(safeSingleton))
));
address predicted = address(uint160(uint256(keccak256(abi.encodePacked(
bytes1(0xff), safeFactory, create2Salt, initCodeHash
)))));Front-run resistance
Predicting off-chain
Last updated

