⬅️ Contracts
Source of truth for Fei Protocol
Author: Fei Protocol
maintains roles, access control, fei, tribe, genesisGroup, and the TRIBE treasury
Mainnet implementations
CollateralizationOracleGuardian, Fei, BalancerLBPSwapper, OwnableTimedMinter, PCVEquityMinter, PCVGuardian, RatioPCVControllerV2, Tribe, TribeMinter, FeiDAOTimelock, OptimisticTimelock, PCVDripController, BAMMDeposit, PriceBoundPSM, MintRedeemPausePSM, FeiSkimmer, TribeReserveStabilizer, AavePCVDeposit, AngleUniswapPCVDeposit, BalancerPCVDepositWeightedPool, ERC20CompoundPCVDeposit, EthCompoundPCVDeposit, ConvexPCVDeposit, CurvePCVDepositPlainPool, UniswapPCVDeposit, EthLidoPCVDeposit, EthTokemakPCVDeposit, SnapshotDelegatorPCVDeposit, ERC20TokemakPCVDeposit, CollateralizationOracle, CollateralizationOracleWrapper, NamedStaticPCVDepositWrapper, CompositeOracle, ChainlinkOracleWrapper, ConstantOracle, CollateralizationOracleKeeper, AutoRewardsDistributor, ERC20Dripper, TribalChief, FuseAdmin, FuseGuardian, RestrictedPermissions
Events
FeiUpdate
event FeiUpdate(address)
Params
Param |
Type |
Notes |
_fei |
address indexed |
|
GenesisGroupUpdate
event GenesisGroupUpdate(address)
Params
Param |
Type |
Notes |
_genesisGroup |
address indexed |
|
GenesisPeriodComplete
event GenesisPeriodComplete(uint256)
Params
Param |
Type |
Notes |
_timestamp |
uint256 |
|
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 |
|
TribeAllocation
event TribeAllocation(address,uint256)
Params
Param |
Type |
Notes |
_to |
address indexed |
|
_amount |
uint256 |
|
TribeUpdate
event TribeUpdate(address)
Params
Param |
Type |
Notes |
_tribe |
address indexed |
|
Methods
BURNER_ROLE
function BURNER_ROLE() view returns(bytes32)
Returns
DEFAULT_ADMIN_ROLE
function DEFAULT_ADMIN_ROLE() view returns(bytes32)
Returns
GOVERN_ROLE
function GOVERN_ROLE() view returns(bytes32)
Returns
GUARDIAN_ROLE
function GUARDIAN_ROLE() view returns(bytes32)
Returns
MINTER_ROLE
function MINTER_ROLE() view returns(bytes32)
Returns
PCV_CONTROLLER_ROLE
function PCV_CONTROLLER_ROLE() view returns(bytes32)
Returns
allocateTribe
function allocateTribe(address,uint256) nonpayable
sends TRIBE tokens from treasury to an address
Params
Param |
Type |
Notes |
to |
address |
the address to send TRIBE to |
amount |
uint256 |
the amount of TRIBE to send |
createRole
function createRole(bytes32,bytes32) nonpayable
creates a new role to be maintained
can also be used to update admin of existing role
Params
Param |
Type |
Notes |
role |
bytes32 |
the new role id |
adminRole |
bytes32 |
the admin role id for role |
fei
function fei() view returns(address)
the address of the FEI contract
Returns
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
getRoleMember
function getRoleMember(bytes32,uint256) view returns(address)
Returns one of the accounts that have role
. index
must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.
Params
Param |
Type |
Notes |
role |
bytes32 |
|
index |
uint256 |
|
Returns
getRoleMemberCount
function getRoleMemberCount(bytes32) view returns(uint256)
Returns the number of accounts that have role
. Can be used together with {getRoleMember} to enumerate all bearers of a role.
Params
Param |
Type |
Notes |
role |
bytes32 |
|
Returns
grantBurner
function grantBurner(address) nonpayable
grants burner role to address
Params
Param |
Type |
Notes |
burner |
address |
new burner |
grantGovernor
function grantGovernor(address) nonpayable
grants governor role to address
Params
Param |
Type |
Notes |
governor |
address |
new governor |
grantGuardian
function grantGuardian(address) nonpayable
grants guardian role to address
Params
Param |
Type |
Notes |
guardian |
address |
new guardian |
grantMinter
function grantMinter(address) nonpayable
grants minter role to address
Params
Param |
Type |
Notes |
minter |
address |
new minter |
grantPCVController
function grantPCVController(address) nonpayable
grants controller role to address
Params
Param |
Type |
Notes |
pcvController |
address |
new controller |
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
init
function init() nonpayable
isBurner
function isBurner(address) view returns(bool)
checks if address is a burner
Params
Param |
Type |
Notes |
_address |
address |
address to check |
Returns
Param |
Type |
Notes |
|
bool |
true _address is a burner |
isGovernor
function isGovernor(address) view returns(bool)
checks if address is a governor
Params
Param |
Type |
Notes |
_address |
address |
address to check |
Returns
Param |
Type |
Notes |
|
bool |
true _address is a governor |
isGuardian
function isGuardian(address) view returns(bool)
checks if address is a guardian
Params
Param |
Type |
Notes |
_address |
address |
address to check |
Returns
Param |
Type |
Notes |
|
bool |
true _address is a guardian |
isMinter
function isMinter(address) view returns(bool)
checks if address is a minter
Params
Param |
Type |
Notes |
_address |
address |
address to check |
Returns
Param |
Type |
Notes |
|
bool |
true _address is a minter |
isPCVController
function isPCVController(address) view returns(bool)
checks if address is a controller
Params
Param |
Type |
Notes |
_address |
address |
address to check |
Returns
Param |
Type |
Notes |
|
bool |
true _address is a controller |
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 |
|
revokeBurner
function revokeBurner(address) nonpayable
revokes burner role from address
Params
Param |
Type |
Notes |
burner |
address |
ex burner |
revokeGovernor
function revokeGovernor(address) nonpayable
revokes governor role from address
Params
Param |
Type |
Notes |
governor |
address |
ex governor |
revokeGuardian
function revokeGuardian(address) nonpayable
revokes guardian role from address
Params
Param |
Type |
Notes |
guardian |
address |
ex guardian |
revokeMinter
function revokeMinter(address) nonpayable
revokes minter role from address
Params
Param |
Type |
Notes |
minter |
address |
ex minter |
revokeOverride
function revokeOverride(bytes32,address) nonpayable
revokes a role from address
Params
Param |
Type |
Notes |
role |
bytes32 |
the role to revoke |
account |
address |
the address to revoke the role from |
revokePCVController
function revokePCVController(address) nonpayable
revokes pcvController role from address
Params
Param |
Type |
Notes |
pcvController |
address |
ex pcvController |
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 |
|
setFei
function setFei(address) nonpayable
sets Fei address to a new address
Params
Param |
Type |
Notes |
token |
address |
new fei address |
setTribe
function setTribe(address) nonpayable
sets Tribe address to a new address
Params
Param |
Type |
Notes |
token |
address |
new tribe address |
supportsInterface
function supportsInterface(bytes4) view returns(bool)
See {IERC165-supportsInterface}.
Params
Param |
Type |
Notes |
interfaceId |
bytes4 |
|
Returns
tribe
function tribe() view returns(address)
the address of the TRIBE contract
Returns
⬅️ Contracts