EthenaTimelockController

Ethereum Browse chains

0xe8dc0fab349ea169283c48ccfd09d797e6db7c94

Solidity v0.8.26+commit.8a97fa7a

🤖
Query this contract from your AI
Reference: 0xe8dc0fab349ea169283c48ccfd09d797e6db7c94
Sample prompt: "Tell me the current state of eth/0xe8dc0fab349ea169283c48ccfd09d797e6db7c94"
No AI wired up yet? → mcp.smarts.md · Browse chains

Admin & Risk

Who can change the rules?

Detected role based controls from the verified ABI.

Role Based

Overview

Read Functions
19
Write Functions
15
Events
11

Read Functions

Block #25,831,721 · just now
CANCELLER_ROLE() view → 0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783

Returns the role identifier that grants permission to cancel scheduled timelock operations.✨ AI

Returns

Name Type Description
bytes32 bytes32 role identifier representing the CANCELLER_ROLE used for access control.✨ AI
DEFAULT_ADMIN_ROLE() view → 0x0000000000000000000000000000000000000000000000000000000000000000

Returns the bytes32 identifier for the contract's default admin role.✨ AI

Returns

Name Type Description
bytes32 bytes32 role identifier representing the DEFAULT_ADMIN_ROLE used for access control.✨ AI
EXECUTOR_ROLE() view → 0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63

Returns the bytes32 identifier of the executor role used for access control.✨ AI

Returns

Name Type Description
bytes32 The bytes32 role identifier that represents executor privileges within the timelock controller.✨ AI
PROPOSER_ROLE() view → 0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1

Returns the bytes32 identifier used for the contract's proposer role.✨ AI

Returns

Name Type Description
bytes32 The bytes32 role identifier representing accounts allowed to propose operations.✨ AI
WHITELISTED_EXECUTOR_ROLE() view → 0x389e8c0e82c32d300e95b13fa579aabf6ac32df2485cb1f756e174c811676cb2

Return the bytes32 role identifier for whitelisted executors.✨ AI

Returns

Name Type Description
bytes32 bytes32 role identifier for the WHITELISTED_EXECUTOR_ROLE used in access control checks.✨ AI
getMinDelay() view → 86,400

Returns the current minimum delay required for executing queued operations.✨ AI

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

Returns

Name Type Description
uint256 The configured minimum delay, in seconds, that must elapse before execution.✨ AI
getOperationState(id: bytes32) view

Return the current state code for the operation identified by id.✨ AI

dev: Returns operation state.

Parameters

Name Type Description
id bytes32 Operation id (bytes32) to query.✨ AI

Returns

Name Type Description
uint8 uint8 code for operation state: 0=Unknown,1=Pending,2=Ready,3=Executed,4=Cancelled✨ AI
getRoleAdmin(role: bytes32) view

Returns the admin role that controls the given role.✨ AI

dev: 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 Role identifier to query, provided as a bytes32 role hash.✨ AI

Returns

Name Type Description
bytes32 The admin role (bytes32) that can grant or revoke the specified role.✨ AI
getTimestamp(id: bytes32) view

Returns the timestamp at which the operation identified by id becomes executable.✨ AI

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

Parameters

Name Type Description
id bytes32 Operation id (bytes32) whose scheduled timestamp to look up.✨ AI

Returns

Name Type Description
uint256 The Unix timestamp (seconds) when the operation becomes executable; 0 if the operation is not scheduled.✨ AI
hasRole(role: bytes32, account: address) view

Returns whether the account holds the specified role.✨ AI

dev: Returns `true` if `account` has been granted `role`.

Parameters

Name Type Description
role bytes32 Role identifier to check (bytes32 hash).✨ AI
account address Address of the account to verify role membership for.✨ AI

Returns

Name Type Description
bool True if the account has the specified role, otherwise false.✨ AI
hashOperation(target: address, value: uint256, data: bytes, predecessor: bytes32, salt: bytes32) pure

Compute the unique id for a timelock operation from its parameters.✨ AI

dev: Returns the identifier of an operation containing a single transaction.

Parameters

Name Type Description
target address Address of the contract or account called when executing the operation.✨ AI
value uint256 Wei value to send with the call.✨ AI
data bytes Encoded function selector and arguments for the call.✨ AI
predecessor bytes32 Operation id that must be executed before this one (zero for none).✨ AI
salt bytes32 Unique salt to differentiate otherwise-identical operations.✨ AI

Returns

Name Type Description
bytes32 The bytes32 hash serving as the operation's unique identifier.✨ AI
hashOperationBatch(targets: address[], values: uint256[], payloads: bytes[], predecessor: bytes32, salt: bytes32) pure

Compute the unique id for a batch of scheduled transactions.✨ AI

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

Parameters

Name Type Description
targets address[] List of destination contract addresses for each transaction.✨ AI
values uint256[] List of wei values to send with each call.✨ AI
payloads bytes[] List of encoded function call data for each target.✨ AI
predecessor bytes32 Operation id that must be executed before this batch, or zero if none.✨ AI
salt bytes32 User-provided salt to ensure uniqueness of the operation id.✨ AI

Returns

Name Type Description
bytes32 bytes32: keccak256 hash of the encoded batch inputs, used as the operation id.✨ AI
isOperation(id: bytes32) view

Return true if the timelock recognizes the given operation identifier.✨ AI

dev: Returns whether an id corresponds to a registered operation. This includes both Waiting, Ready, and Done operations.

Parameters

Name Type Description
id bytes32 Operation identifier (bytes32) to check for presence in the timelock.✨ AI

Returns

Name Type Description
bool True if the operation exists in the timelock (scheduled or already executed), false otherwise.✨ AI
isOperationDone(id: bytes32) view

Checks whether the timelocked operation with the given id is marked as done.✨ AI

dev: Returns whether an operation is done or not.

Parameters

Name Type Description
id bytes32 Identifier of the operation to check.✨ AI

Returns

Name Type Description
bool True if the operation is marked done (executed).✨ AI
isOperationPending(id: bytes32) view

Check whether the specified operation is pending.✨ AI

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

Parameters

Name Type Description
id bytes32 Operation identifier hash (bytes32) to query.✨ AI

Returns

Name Type Description
bool True if the operation exists and is pending (scheduled but not executed or canceled).✨ AI
isOperationReady(id: bytes32) view

Indicates whether the timelock operation with the given id is ready for execution.✨ AI

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

Parameters

Name Type Description
id bytes32 Operation identifier (bytes32 hash) to check readiness.✨ AI

Returns

Name Type Description
bool True if the operation is ready for execution (delay elapsed and not executed/canceled).✨ AI
isWhitelisted(target: address, selector: bytes4) view

Check whether a given target address and function selector are allowed by the contract's whitelist.✨ AI

dev: Checks if a function selector is whitelisted for a specific address.

Parameters

Name Type Description
target address The address of the contract.
selector bytes4 The function selector to check.

Returns

Name Type Description
bool True if the function selector is whitelisted, false otherwise.
renounceRole(role: bytes32, callerConfirmation: address) pure

Roles cannot be renounced, only revoked thru timelock mechanism.

dev: Throws an error when trying to renounce a role.

Parameters

Name Type Description
role bytes32 The role to renounce.
callerConfirmation address The address that is renouncing the role.
supportsInterface(interfaceId: bytes4) view

Return whether the contract implements the interface specified by interfaceId.✨ AI

dev: See {IERC165-supportsInterface}.

Parameters

Name Type Description
interfaceId bytes4 The 4-byte interface identifier (bytes4) to query, per ERC-165.✨ AI

Returns

Name Type Description
bool True if the contract supports the interface identified by interfaceId, otherwise false.✨ AI

Write Functions

addToWhitelist(target: address, selector: bytes4) nonpayable

Adds a function selector for a target address to the contract whitelist.✨ AI

dev: Adds a function selector to the whitelist for a specific address. Can only be called via the timelock mechanism.

Parameters

Name Type Description
target address The address of the contract.
selector bytes4 The function selector to whitelist.
cancel(id: bytes32) nonpayable

Cancel a scheduled timelock operation identified by id.✨ AI

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

Parameters

Name Type Description
id bytes32 Identifier of the timelocked operation to cancel.✨ AI
execute(target: address, value: uint256, data: bytes, predecessor: bytes32, salt: bytes32) payable

Execute a queued, ready operation by calling target with value and data after verifying predecessor and salt.✨ AI

dev: Executes a function, bypassing the timelock if it's whitelisted.

Parameters

Name Type Description
target address The address of the contract to call.
value uint256 The amount of ETH to send along with the call.
data bytes The calldata to send.
predecessor bytes32 The operation that must be executed before this one.
salt bytes32 A random value used to differentiate the operation from others.
executeBatch(targets: address[], values: uint256[], payloads: bytes[], predecessor: bytes32, salt: bytes32) payable

Execute a scheduled batch of transactions through the timelock, honoring predecessor and salt constraints.✨ AI

dev: Executes a batch of whitelisted functions.

Parameters

Name Type Description
targets address[] The addresses of the contracts to call.
values uint256[] The amounts of ETH to send along with the calls.
payloads bytes[] The calldata to send.
predecessor bytes32 The operation that must be executed before this one.
salt bytes32 A random value used to differentiate the operation from others.
executeWhitelisted(target: address, value: uint256, data: bytes) payable

Execute a whitelisted transaction by calling target with the specified ether value and calldata.✨ AI

dev: Executes a whitelisted function.

Parameters

Name Type Description
target address The address of the contract to call.
value uint256 The amount of ETH to send along with the call.
data bytes The calldata to send.
executeWhitelistedBatch(targets: address[], values: uint256[], payloads: bytes[]) payable

Execute a batch of whitelisted calls, sending optional ETH and calldata in a single transaction.✨ AI

dev: Executes a batch of whitelisted functions.

Parameters

Name Type Description
targets address[] The addresses of the contracts to call.
values uint256[] The amounts of ETH to send along with the calls.
payloads bytes[] The calldata to send.
grantRole(role: bytes32, account: address) nonpayable

Grants a role to an account, allowing the account to perform role-restricted actions.✨ AI

dev: 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 Role identifier (bytes32) to grant.✨ AI
account address Address to receive the role.✨ AI
onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) nonpayable

Handle an incoming ERC-1155 batch transfer and confirm receipt to the sender.✨ AI

dev: Handles the receipt of a multiple ERC-1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. NOTE: To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector).

Parameters

Name Type Description
address
address
uint256[]
uint256[]
bytes

Returns

Name Type Description
bytes4 `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
onERC1155Received(address, address, uint256, uint256, bytes) nonpayable

Handles receipt of a single ERC1155 token transfer.✨ AI

dev: Handles the receipt of a single ERC-1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. NOTE: To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector).

Parameters

Name Type Description
address
address
uint256
uint256
bytes

Returns

Name Type Description
bytes4 `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
onERC721Received(address, address, uint256, bytes) nonpayable

Handles receipt of an ERC-721 token and returns the required selector to accept the transfer.✨ AI

dev: See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.

Parameters

Name Type Description
address
address
uint256
bytes

Returns

Name Type Description
bytes4 Selector equal to bytes4(keccak256("onERC721Received(address,address,uint256,bytes)")) confirming acceptance of the token.✨ AI
removeFromWhitelist(target: address, selector: bytes4) nonpayable

Remove a function selector for a target contract from the controller's whitelist.✨ AI

dev: Removes a function selector from the whitelist for a specific address. Can only be called via the timelock mechanism.

Parameters

Name Type Description
target address The address of the contract.
selector bytes4 The function selector to remove from the whitelist.
revokeRole(role: bytes32, account: address) nonpayable

Revokes a role from an account, removing the account's granted permissions.✨ AI

dev: 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 Role identifier (bytes32) to revoke.✨ AI
account address Address of the account from which to revoke the role.✨ AI
schedule(target: address, value: uint256, data: bytes, predecessor: bytes32, salt: bytes32, delay: uint256) nonpayable
dev: 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
value uint256
data bytes
predecessor bytes32
salt bytes32
delay uint256
scheduleBatch(targets: address[], values: uint256[], payloads: bytes[], predecessor: bytes32, salt: bytes32, delay: uint256) nonpayable
dev: 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[]
values uint256[]
payloads bytes[]
predecessor bytes32
salt bytes32
delay uint256
updateDelay(newDelay: uint256) nonpayable
dev: 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

Events

CallExecuted(id: bytes32, index: uint256, target: address, value: uint256, data: bytes)
Name Type Indexed Description
id bytes32
index uint256
target address
value uint256
data bytes
CallSalt(id: bytes32, salt: bytes32)
Name Type Indexed Description
id bytes32
salt bytes32
CallScheduled(id: bytes32, index: uint256, target: address, value: uint256, data: bytes, predecessor: bytes32, delay: uint256)
Name Type Indexed Description
id bytes32
index uint256
target address
value uint256
data bytes
predecessor bytes32
delay uint256
Cancelled(id: bytes32)
Name Type Indexed Description
id bytes32
FunctionRemovedFromWhitelist(target: address, selector: bytes4)
Name Type Indexed Description
target address
selector bytes4
FunctionWhitelisted(target: address, selector: bytes4)
Name Type Indexed Description
target address
selector bytes4
MinDelayChange(oldDuration: uint256, newDuration: uint256)
Name Type Indexed Description
oldDuration uint256
newDuration uint256
RoleAdminChanged(role: bytes32, previousAdminRole: bytes32, newAdminRole: bytes32)
Name Type Indexed Description
role bytes32
previousAdminRole bytes32
newAdminRole bytes32
RoleGranted(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
RoleRevoked(role: bytes32, account: address, sender: address)
Name Type Indexed Description
role bytes32
account address
sender address
WhitelistedFunctionExecuted(target: address, selector: bytes4, value: uint256, data: bytes)
Name Type Indexed Description
target address
selector bytes4
value uint256
data bytes