Skip to main content

TimeLock

Contract module which acts as a timelocked controller. When set as the owner of an Ownable smart contract, it enforces a timelock on all onlyOwner maintenance operations. This gives time for users of the controlled contract to exit before a potentially dangerous maintenance operation is applied. By default, this contract is self administered, meaning administration tasks have to go through the timelock process. The proposer (resp executor) role is in charge of proposing (resp executing) operations. A common use case is to position this {TimelockController} as the owner of a smart contract, with a multisig or a DAO as the sole proposer.

Methods

CANCELLER_ROLE

function CANCELLER_ROLE() external view returns (bytes32)

Returns

NameTypeDescription
_0bytes32undefined

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns

NameTypeDescription
_0bytes32undefined

EXECUTOR_ROLE

function EXECUTOR_ROLE() external view returns (bytes32)

Returns

NameTypeDescription
_0bytes32undefined

PROPOSER_ROLE

function PROPOSER_ROLE() external view returns (bytes32)

Returns

NameTypeDescription
_0bytes32undefined

TIMELOCK_ADMIN_ROLE

function TIMELOCK_ADMIN_ROLE() external view returns (bytes32)

Returns

NameTypeDescription
_0bytes32undefined

cancel

function cancel(bytes32 id) external nonpayable

Cancel an operation. Requirements: - the caller must have the 'canceller' role.

Parameters

NameTypeDescription
idbytes32undefined

execute

function execute(address target, uint256 value, bytes payload, bytes32 predecessor, bytes32 salt) external payable

Execute an (ready) operation containing a single transaction. Emits a {CallExecuted} event. Requirements: - the caller must have the 'executor' role.

Parameters

NameTypeDescription
targetaddressundefined
valueuint256undefined
payloadbytesundefined
predecessorbytes32undefined
saltbytes32undefined

executeBatch

function executeBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt) external payable

Execute an (ready) operation containing a batch of transactions. Emits one {CallExecuted} event per transaction in the batch. Requirements: - the caller must have the 'executor' role.

Parameters

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
payloadsbytes[]undefined
predecessorbytes32undefined
saltbytes32undefined

getMinDelay

function getMinDelay() external view returns (uint256)

Returns the minimum delay for an operation to become valid. This value can be changed by executing an operation that calls updateDelay.

Returns

NameTypeDescription
_0uint256undefined

getRoleAdmin

function getRoleAdmin(bytes32 role) external view returns (bytes32)

Returns the admin role that controls role. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

NameTypeDescription
rolebytes32undefined

Returns

NameTypeDescription
_0bytes32undefined

getTimestamp

function getTimestamp(bytes32 id) external view returns (uint256)

Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations).

Parameters

NameTypeDescription
idbytes32undefined

Returns

NameTypeDescription
_0uint256undefined

grantRole

function grantRole(bytes32 role, address account) external nonpayable

Grants role to account. If account had not been already granted role, emits a {RoleGranted} event. Requirements: - the caller must have role's admin role. May emit a {RoleGranted} event.

Parameters

NameTypeDescription
rolebytes32undefined
accountaddressundefined

hasRole

function hasRole(bytes32 role, address account) external view returns (bool)

Returns true if account has been granted role.

Parameters

NameTypeDescription
rolebytes32undefined
accountaddressundefined

Returns

NameTypeDescription
_0boolundefined

hashOperation

function hashOperation(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32)

Returns the identifier of an operation containing a single transaction.

Parameters

NameTypeDescription
targetaddressundefined
valueuint256undefined
databytesundefined
predecessorbytes32undefined
saltbytes32undefined

Returns

NameTypeDescription
_0bytes32undefined

hashOperationBatch

function hashOperationBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32)

Returns the identifier of an operation containing a batch of transactions.

Parameters

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
payloadsbytes[]undefined
predecessorbytes32undefined
saltbytes32undefined

Returns

NameTypeDescription
_0bytes32undefined

isOperation

function isOperation(bytes32 id) external view returns (bool)

Returns whether an id correspond to a registered operation. This includes both Pending, Ready and Done operations.

Parameters

NameTypeDescription
idbytes32undefined

Returns

NameTypeDescription
_0boolundefined

isOperationDone

function isOperationDone(bytes32 id) external view returns (bool)

Returns whether an operation is done or not.

Parameters

NameTypeDescription
idbytes32undefined

Returns

NameTypeDescription
_0boolundefined

isOperationPending

function isOperationPending(bytes32 id) external view returns (bool)

Returns whether an operation is pending or not. Note that a "pending" operation may also be "ready".

Parameters

NameTypeDescription
idbytes32undefined

Returns

NameTypeDescription
_0boolundefined

isOperationReady

function isOperationReady(bytes32 id) external view returns (bool)

Returns whether an operation is ready for execution. Note that a "ready" operation is also "pending".

Parameters

NameTypeDescription
idbytes32undefined

Returns

NameTypeDescription
_0boolundefined

onERC1155BatchReceived

function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) external nonpayable returns (bytes4)

See {IERC1155Receiver-onERC1155BatchReceived}.

Parameters

NameTypeDescription
_0addressundefined
_1addressundefined
_2uint256[]undefined
_3uint256[]undefined
_4bytesundefined

Returns

NameTypeDescription
_0bytes4undefined

onERC1155Received

function onERC1155Received(address, address, uint256, uint256, bytes) external nonpayable returns (bytes4)

See {IERC1155Receiver-onERC1155Received}.

Parameters

NameTypeDescription
_0addressundefined
_1addressundefined
_2uint256undefined
_3uint256undefined
_4bytesundefined

Returns

NameTypeDescription
_0bytes4undefined

onERC721Received

function onERC721Received(address, address, uint256, bytes) external nonpayable returns (bytes4)

See {IERC721Receiver-onERC721Received}.

Parameters

NameTypeDescription
_0addressundefined
_1addressundefined
_2uint256undefined
_3bytesundefined

Returns

NameTypeDescription
_0bytes4undefined

renounceRole

function renounceRole(bytes32 role, address account) external nonpayable

Revokes role from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role, emits a {RoleRevoked} event. Requirements: - the caller must be account. May emit a {RoleRevoked} event.

Parameters

NameTypeDescription
rolebytes32undefined
accountaddressundefined

revokeRole

function revokeRole(bytes32 role, address account) external nonpayable

Revokes role from account. If account had been granted role, emits a {RoleRevoked} event. Requirements: - the caller must have role's admin role. May emit a {RoleRevoked} event.

Parameters

NameTypeDescription
rolebytes32undefined
accountaddressundefined

schedule

function schedule(address target, uint256 value, bytes data, bytes32 predecessor, bytes32 salt, uint256 delay) external nonpayable

Schedule an operation containing a single transaction. Emits {CallSalt} if salt is nonzero, and {CallScheduled}. Requirements: - the caller must have the 'proposer' role.

Parameters

NameTypeDescription
targetaddressundefined
valueuint256undefined
databytesundefined
predecessorbytes32undefined
saltbytes32undefined
delayuint256undefined

scheduleBatch

function scheduleBatch(address[] targets, uint256[] values, bytes[] payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external nonpayable

Schedule an operation containing a batch of transactions. Emits {CallSalt} if salt is nonzero, and one {CallScheduled} event per transaction in the batch. Requirements: - the caller must have the 'proposer' role.

Parameters

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
payloadsbytes[]undefined
predecessorbytes32undefined
saltbytes32undefined
delayuint256undefined

supportsInterface

function supportsInterface(bytes4 interfaceId) external view returns (bool)

See {IERC165-supportsInterface}.

Parameters

NameTypeDescription
interfaceIdbytes4undefined

Returns

NameTypeDescription
_0boolundefined

updateDelay

function updateDelay(uint256 newDelay) external nonpayable

Changes the minimum timelock duration for future operations. Emits a {MinDelayChange} event. Requirements: - the caller must be the timelock itself. This can only be achieved by scheduling and later executing an operation where the timelock is the target and the data is the ABI-encoded call to this function.

Parameters

NameTypeDescription
newDelayuint256undefined

Events

CallExecuted

event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data)

Emitted when a call is performed as part of operation id.

Parameters

NameTypeDescription
id indexedbytes32undefined
index indexeduint256undefined
targetaddressundefined
valueuint256undefined
databytesundefined

CallSalt

event CallSalt(bytes32 indexed id, bytes32 salt)

Emitted when new proposal is scheduled with non-zero salt.

Parameters

NameTypeDescription
id indexedbytes32undefined
saltbytes32undefined

CallScheduled

event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay)

Emitted when a call is scheduled as part of operation id.

Parameters

NameTypeDescription
id indexedbytes32undefined
index indexeduint256undefined
targetaddressundefined
valueuint256undefined
databytesundefined
predecessorbytes32undefined
delayuint256undefined

Cancelled

event Cancelled(bytes32 indexed id)

Emitted when operation id is cancelled.

Parameters

NameTypeDescription
id indexedbytes32undefined

MinDelayChange

event MinDelayChange(uint256 oldDuration, uint256 newDuration)

Emitted when the minimum delay for future operations is modified.

Parameters

NameTypeDescription
oldDurationuint256undefined
newDurationuint256undefined

RoleAdminChanged

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Emitted when newAdminRole is set as role's admin role, replacing previousAdminRole DEFAULT_ADMIN_ROLE is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. Available since v3.1.

Parameters

NameTypeDescription
role indexedbytes32undefined
previousAdminRole indexedbytes32undefined
newAdminRole indexedbytes32undefined

RoleGranted

event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)

Emitted when account is granted role. sender is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.

Parameters

NameTypeDescription
role indexedbytes32undefined
account indexedaddressundefined
sender indexedaddressundefined

RoleRevoked

event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)

Emitted when account is revoked role. sender is the account that originated the contract call: - if using revokeRole, it is the admin role bearer - if using renounceRole, it is the role bearer (i.e. account)

Parameters

NameTypeDescription
role indexedbytes32undefined
account indexedaddressundefined
sender indexedaddressundefined