0xcfa0388f5ddf905fdc08c45c716c15dc10a14c6f
Solidity v0.8.20+commit.a1b79de6
🤖
Query this contract from your AI
Reference:
0xcfa0388f5ddf905fdc08c45c716c15dc10a14c6f
Sample prompt:
"Tell me the current state of robinhood/0xcfa0388f5ddf905fdc08c45c716c15dc10a14c6f"
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
16
Write Functions
12
Events
8
Read Functions
Block #25,988,907 · just now
CANCELLER_ROLE()
view
→ 0xfd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
DEFAULT_ADMIN_ROLE()
view
→ 0x0000000000000000000000000000000000000000000000000000000000000000
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
EXECUTOR_ROLE()
view
→ 0xd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
PROPOSER_ROLE()
view
→ 0xb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
getMinDelay()
view
→ 86,400
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 |
getOperationState(id: bytes32)
view
dev: Returns operation state.
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | uint8 |
getRoleAdmin(role: bytes32)
view
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 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
getTimestamp(id: bytes32)
view
dev: Returns the timestamp at which an operation becomes ready (0 for unset operations, 1 for done operations).
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | uint256 |
hasRole(role: bytes32, account: address)
view
dev: Returns `true` if `account` has been granted `role`.
Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| account | address |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
hashOperation(target: address, value: uint256, data: bytes, predecessor: bytes32, salt: bytes32)
pure
dev: Returns the identifier of an operation containing a single transaction.
Parameters
| Name | Type | Description |
|---|---|---|
| target | address | |
| value | uint256 | |
| data | bytes | |
| predecessor | bytes32 | |
| salt | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
hashOperationBatch(targets: address[], values: uint256[], payloads: bytes[], predecessor: bytes32, salt: bytes32)
pure
dev: Returns the identifier of an operation containing a batch of transactions.
Parameters
| Name | Type | Description |
|---|---|---|
| targets | address[] | |
| values | uint256[] | |
| payloads | bytes[] | |
| predecessor | bytes32 | |
| salt | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes32 |
isOperation(id: bytes32)
view
dev: Returns whether an id corresponds to a registered operation. This includes both Waiting, Ready, and Done operations.
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
isOperationDone(id: bytes32)
view
dev: Returns whether an operation is done or not.
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
isOperationPending(id: bytes32)
view
dev: Returns whether an operation is pending or not. Note that a "pending" operation may also be "ready".
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
isOperationReady(id: bytes32)
view
dev: Returns whether an operation is ready for execution. Note that a "ready" operation is also "pending".
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
supportsInterface(interfaceId: bytes4)
view
dev: Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.
Parameters
| Name | Type | Description |
|---|---|---|
| interfaceId | bytes4 |
Returns
| Name | Type | Description |
|---|---|---|
| — | bool |
Write Functions
cancel(id: bytes32)
nonpayable
dev: Cancel an operation. Requirements: - the caller must have the 'canceller' role.
Parameters
| Name | Type | Description |
|---|---|---|
| id | bytes32 |
execute(target: address, value: uint256, payload: bytes, predecessor: bytes32, salt: bytes32)
payable
Parameters
| Name | Type | Description |
|---|---|---|
| target | address | |
| value | uint256 | |
| payload | bytes | |
| predecessor | bytes32 | |
| salt | bytes32 |
executeBatch(targets: address[], values: uint256[], payloads: bytes[], predecessor: bytes32, salt: bytes32)
payable
Parameters
| Name | Type | Description |
|---|---|---|
| targets | address[] | |
| values | uint256[] | |
| payloads | bytes[] | |
| predecessor | bytes32 | |
| salt | bytes32 |
grantRole(role: bytes32, account: address)
nonpayable
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 | |
| account | address |
onERC1155BatchReceived(address, address, uint256[], uint256[], bytes)
nonpayable
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
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
dev: Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
Parameters
| Name | Type | Description |
|---|---|---|
| — | address | |
| — | address | |
| — | uint256 | |
| — | bytes |
Returns
| Name | Type | Description |
|---|---|---|
| — | bytes4 |
renounceRole(role: bytes32, callerConfirmation: address)
nonpayable
dev: 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 `callerConfirmation`. May emit a {RoleRevoked} event.
Parameters
| Name | Type | Description |
|---|---|---|
| role | bytes32 | |
| callerConfirmation | address |
revokeRole(role: bytes32, account: address)
nonpayable
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 | |
| account | address |
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 | ✓ |
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 | ✓ |