⬅️ Contracts

OptimisticTimelock

Mainnet implementations

Name Address
optimisticTimelock 0xbC9C084a12678ef5B516561df902fdc426d95483
opsOptimisticTimelock 0x7DC26A320a9f70Db617e24B77aCA1D3DC48C5721

Core, RewardsDistributorAdmin, TribalChiefSyncV2, Unitroller, OwnableTimedMinter, TribalChief, CollateralizationOracle, CollateralizationOracleWrapper, NamedStaticPCVDepositWrapper, IMasterOracle, VotiumBriber

Events

CallExecuted

event CallExecuted(bytes32,uint256,address,uint256,bytes)
Params
Param Type Notes
id bytes32 indexed
index uint256 indexed
target address
value uint256
data bytes

CallScheduled

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

Cancelled

event Cancelled(bytes32)
Params
Param Type Notes
id bytes32 indexed

ContractAdminRoleUpdate

event ContractAdminRoleUpdate(bytes32,bytes32)
Params
Param Type Notes
oldContractAdminRole bytes32 indexed
newContractAdminRole bytes32 indexed

CoreUpdate

event CoreUpdate(address,address)
Params
Param Type Notes
oldCore address indexed
newCore address indexed

MinDelayChange

event MinDelayChange(uint256,uint256)
Params
Param Type Notes
oldDuration uint256
newDuration uint256

Paused

event Paused(address)
Params
Param Type Notes
account address

RoleAdminChanged

event RoleAdminChanged(bytes32,bytes32,bytes32)
Params
Param Type Notes
role bytes32 indexed
previousAdminRole bytes32 indexed
newAdminRole bytes32 indexed

RoleGranted

event RoleGranted(bytes32,address,address)
Params
Param Type Notes
role bytes32 indexed
account address indexed
sender address indexed

RoleRevoked

event RoleRevoked(bytes32,address,address)
Params
Param Type Notes
role bytes32 indexed
account address indexed
sender address indexed

Unpaused

event Unpaused(address)
Params
Param Type Notes
account address

Methods

CONTRACT_ADMIN_ROLE

function CONTRACT_ADMIN_ROLE() view returns(bytes32)

a role used with a subset of governor permissions for this contract only

Returns
Param Type Notes
bytes32

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() view returns(bytes32)
Returns
Param Type Notes
bytes32

EXECUTOR_ROLE

function EXECUTOR_ROLE() view returns(bytes32)
Returns
Param Type Notes
bytes32

PROPOSER_ROLE

function PROPOSER_ROLE() view returns(bytes32)
Returns
Param Type Notes
bytes32

TIMELOCK_ADMIN_ROLE

function TIMELOCK_ADMIN_ROLE() view returns(bytes32)
Returns
Param Type Notes
bytes32

becomeAdmin

function becomeAdmin() nonpayable

allow guardian or governor to assume timelock admin roles This more elegantly achieves optimistic timelock as follows: - veto: grant self PROPOSER_ROLE and cancel - pause proposals: revoke PROPOSER_ROLE from target - pause execution: revoke EXECUTOR_ROLE from target - set new proposer: revoke old proposer and add new one In addition it allows for much more granular and flexible access for multisig operators

cancel

function cancel(bytes32) nonpayable

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

Params
Param Type Notes
id bytes32

core

function core() view returns(address)

address of the Core contract referenced

Returns
Param Type Notes
address ICore implementation address

execute

function execute(address,uint256,bytes,bytes32,bytes32) payable

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

Params
Param Type Notes
target address
value uint256
data bytes
predecessor bytes32
salt bytes32

executeBatch

function executeBatch(address[],uint256[],bytes[],bytes32,bytes32) 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.

Params
Param Type Notes
targets address[]
values uint256[]
datas bytes[]
predecessor bytes32
salt bytes32

fei

function fei() view returns(address)

address of the Fei contract referenced by Core

Returns
Param Type Notes
address IFei implementation address

feiBalance

function feiBalance() view returns(uint256)

fei balance of contract

Returns
Param Type Notes
uint256 fei amount held

getMinDelay

function getMinDelay() 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
Param Type Notes
duration uint256

getRoleAdmin

function getRoleAdmin(bytes32) view returns(bytes32)

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

Params
Param Type Notes
role bytes32
Returns
Param Type Notes
bytes32

getTimestamp

function getTimestamp(bytes32) view returns(uint256)

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

Params
Param Type Notes
id bytes32
Returns
Param Type Notes
timestamp uint256

grantRole

function grantRole(bytes32,address) 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.

Params
Param Type Notes
role bytes32
account address

hasRole

function hasRole(bytes32,address) view returns(bool)

Returns true if account has been granted role.

Params
Param Type Notes
role bytes32
account address
Returns
Param Type Notes
bool

hashOperation

function hashOperation(address,uint256,bytes,bytes32,bytes32) pure returns(bytes32)

Returns the identifier of an operation containing a single transaction.

Params
Param Type Notes
target address
value uint256
data bytes
predecessor bytes32
salt bytes32
Returns
Param Type Notes
hash bytes32

hashOperationBatch

function hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32) pure returns(bytes32)

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

Params
Param Type Notes
targets address[]
values uint256[]
datas bytes[]
predecessor bytes32
salt bytes32
Returns
Param Type Notes
hash bytes32

isContractAdmin

function isContractAdmin(address) view returns(bool)

returns whether a given address has the admin role for this contract

Params
Param Type Notes
_admin address
Returns
Param Type Notes
bool

isOperation

function isOperation(bytes32) view returns(bool)

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

Params
Param Type Notes
id bytes32
Returns
Param Type Notes
pending bool

isOperationDone

function isOperationDone(bytes32) view returns(bool)

Returns whether an operation is done or not.

Params
Param Type Notes
id bytes32
Returns
Param Type Notes
done bool

isOperationPending

function isOperationPending(bytes32) view returns(bool)

Returns whether an operation is pending or not.

Params
Param Type Notes
id bytes32
Returns
Param Type Notes
pending bool

isOperationReady

function isOperationReady(bytes32) view returns(bool)

Returns whether an operation is ready or not.

Params
Param Type Notes
id bytes32
Returns
Param Type Notes
ready bool

pause

function pause() nonpayable

set pausable methods to paused

paused

function paused() view returns(bool)

Returns true if the contract is paused, and false otherwise.

Returns
Param Type Notes
bool

renounceRole

function renounceRole(bytes32,address) 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.

Params
Param Type Notes
role bytes32
account address

revokeRole

function revokeRole(bytes32,address) nonpayable

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

Params
Param Type Notes
role bytes32
account address

schedule

function schedule(address,uint256,bytes,bytes32,bytes32,uint256) nonpayable

Schedule an operation containing a single transaction. Emits a {CallScheduled} event. Requirements: - the caller must have the 'proposer' role.

Params
Param Type Notes
target address
value uint256
data bytes
predecessor bytes32
salt bytes32
delay uint256

scheduleBatch

function scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256) nonpayable

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

Params
Param Type Notes
targets address[]
values uint256[]
datas bytes[]
predecessor bytes32
salt bytes32
delay uint256

setContractAdminRole

function setContractAdminRole(bytes32) nonpayable

sets a new admin role for this contract

Params
Param Type Notes
newContractAdminRole bytes32

setCore

function setCore(address) nonpayable

set new Core reference address

Params
Param Type Notes
newCore address the new core address

supportsInterface

function supportsInterface(bytes4) view returns(bool)

See {IERC165-supportsInterface}.

Params
Param Type Notes
interfaceId bytes4
Returns
Param Type Notes
bool

tribe

function tribe() view returns(address)

address of the Tribe contract referenced by Core

Returns
Param Type Notes
address IERC20 implementation address

tribeBalance

function tribeBalance() view returns(uint256)

tribe balance of contract

Returns
Param Type Notes
uint256 tribe amount held

unpause

function unpause() nonpayable

set pausable methods to unpaused

updateDelay

function updateDelay(uint256) 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.

Params
Param Type Notes
newDelay uint256

⬅️ Contracts