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
Name | Type | Description |
---|
_0 | bytes32 | undefined |
DEFAULT_ADMIN_ROLE
function DEFAULT_ADMIN_ROLE() external view returns (bytes32)
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
EXECUTOR_ROLE
function EXECUTOR_ROLE() external view returns (bytes32)
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
PROPOSER_ROLE
function PROPOSER_ROLE() external view returns (bytes32)
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
TIMELOCK_ADMIN_ROLE
function TIMELOCK_ADMIN_ROLE() external view returns (bytes32)
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
cancel
function cancel(bytes32 id) external nonpayable
Cancel an operation. Requirements: - the caller must have the 'canceller' role.
Parameters
Name | Type | Description |
---|
id | bytes32 | undefined |
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
Name | Type | Description |
---|
target | address | undefined |
value | uint256 | undefined |
payload | bytes | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
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
Name | Type | Description |
---|
targets | address[] | undefined |
values | uint256[] | undefined |
payloads | bytes[] | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
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
Name | Type | Description |
---|
_0 | uint256 | undefined |
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
Name | Type | Description |
---|
role | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
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
Name | Type | Description |
---|
id | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | uint256 | undefined |
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
Name | Type | Description |
---|
role | bytes32 | undefined |
account | address | undefined |
hasRole
function hasRole(bytes32 role, address account) external view returns (bool)
Returns true
if account
has been granted role
.
Parameters
Name | Type | Description |
---|
role | bytes32 | undefined |
account | address | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
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
Name | Type | Description |
---|
target | address | undefined |
value | uint256 | undefined |
data | bytes | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
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
Name | Type | Description |
---|
targets | address[] | undefined |
values | uint256[] | undefined |
payloads | bytes[] | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes32 | undefined |
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
Name | Type | Description |
---|
id | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
isOperationDone
function isOperationDone(bytes32 id) external view returns (bool)
Returns whether an operation is done or not.
Parameters
Name | Type | Description |
---|
id | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
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
Name | Type | Description |
---|
id | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
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
Name | Type | Description |
---|
id | bytes32 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
onERC1155BatchReceived
function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) external nonpayable returns (bytes4)
See {IERC1155Receiver-onERC1155BatchReceived}.
Parameters
Name | Type | Description |
---|
_0 | address | undefined |
_1 | address | undefined |
_2 | uint256[] | undefined |
_3 | uint256[] | undefined |
_4 | bytes | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes4 | undefined |
onERC1155Received
function onERC1155Received(address, address, uint256, uint256, bytes) external nonpayable returns (bytes4)
See {IERC1155Receiver-onERC1155Received}.
Parameters
Name | Type | Description |
---|
_0 | address | undefined |
_1 | address | undefined |
_2 | uint256 | undefined |
_3 | uint256 | undefined |
_4 | bytes | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes4 | undefined |
onERC721Received
function onERC721Received(address, address, uint256, bytes) external nonpayable returns (bytes4)
See {IERC721Receiver-onERC721Received}.
Parameters
Name | Type | Description |
---|
_0 | address | undefined |
_1 | address | undefined |
_2 | uint256 | undefined |
_3 | bytes | undefined |
Returns
Name | Type | Description |
---|
_0 | bytes4 | undefined |
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
Name | Type | Description |
---|
role | bytes32 | undefined |
account | address | undefined |
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
Name | Type | Description |
---|
role | bytes32 | undefined |
account | address | undefined |
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
Name | Type | Description |
---|
target | address | undefined |
value | uint256 | undefined |
data | bytes | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
delay | uint256 | undefined |
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
Name | Type | Description |
---|
targets | address[] | undefined |
values | uint256[] | undefined |
payloads | bytes[] | undefined |
predecessor | bytes32 | undefined |
salt | bytes32 | undefined |
delay | uint256 | undefined |
supportsInterface
function supportsInterface(bytes4 interfaceId) external view returns (bool)
See {IERC165-supportsInterface}.
Parameters
Name | Type | Description |
---|
interfaceId | bytes4 | undefined |
Returns
Name | Type | Description |
---|
_0 | bool | undefined |
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
Name | Type | Description |
---|
newDelay | uint256 | undefined |
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
Name | Type | Description |
---|
id indexed | bytes32 | undefined |
index indexed | uint256 | undefined |
target | address | undefined |
value | uint256 | undefined |
data | bytes | undefined |
CallSalt
event CallSalt(bytes32 indexed id, bytes32 salt)
Emitted when new proposal is scheduled with non-zero salt.
Parameters
Name | Type | Description |
---|
id indexed | bytes32 | undefined |
salt | bytes32 | undefined |
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
Name | Type | Description |
---|
id indexed | bytes32 | undefined |
index indexed | uint256 | undefined |
target | address | undefined |
value | uint256 | undefined |
data | bytes | undefined |
predecessor | bytes32 | undefined |
delay | uint256 | undefined |
Cancelled
event Cancelled(bytes32 indexed id)
Emitted when operation id
is cancelled.
Parameters
Name | Type | Description |
---|
id indexed | bytes32 | undefined |
MinDelayChange
event MinDelayChange(uint256 oldDuration, uint256 newDuration)
Emitted when the minimum delay for future operations is modified.
Parameters
Name | Type | Description |
---|
oldDuration | uint256 | undefined |
newDuration | uint256 | undefined |
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
Name | Type | Description |
---|
role indexed | bytes32 | undefined |
previousAdminRole indexed | bytes32 | undefined |
newAdminRole indexed | bytes32 | undefined |
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
Name | Type | Description |
---|
role indexed | bytes32 | undefined |
account indexed | address | undefined |
sender indexed | address | undefined |
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
Name | Type | Description |
---|
role indexed | bytes32 | undefined |
account indexed | address | undefined |
sender indexed | address | undefined |