IPermission & Context
interface IPermission {
/// Decide whether a manager-submitted transaction is permitted.
function evaluate(bytes calldata txData, Context calldata ctx)
external view returns (bool);
/// Optional stable identifier for off-chain indexing/deduplication.
function discriminator() external view returns (bytes32);
}The Context struct
struct Context {
address account; // the Safe account whose assets are being moved
address manager; // the delegated signer who submitted the dispatch
address submitter; // msg.sender of the dispatch; may differ from manager (relayer)
address target; // the call target address
bytes4 selector; // leading 4 bytes of calldata; bytes4(0) if calldata < 4 bytes
uint256 value; // native ETH forwarded with the call (wei)
uint256 blockTimestamp; // block.timestamp at dispatch — for time-based gates
uint256 blockNumber; // block.number at dispatch
}Field
Use it to…
Implementation checklist
Last updated

