⬅️ Contracts
implementation for a TRIBE Minter Contract
Author: Fei Protocol This contract will be the unique TRIBE minting contract. All minting is subject to an annual inflation rate limit. For example if circulating supply is 1m and inflation is capped at 10%, then no more than 100k TRIBE can enter circulation in the following year. The contract will increase (decrease) the rate limit proportionally as supply increases (decreases) Governance and admins can only lower the max inflation %. They can also exclude (unexclude) addresses' TRIBE balances from the circulating supply. The minter's balance is excluded by default. ACCESS_CONTROL: This contract follows a somewhat unique access control pattern. It has a contract admin which is NOT intended for optimistic approval, but rather for contracts such as the TribeReserveStabilizer. An additional potential contract admin is one which automates the inclusion and removal of excluded deposits from on-chain timelocks. Additionally, the ability to transfer the tribe minter role is held by the contract owner rather than governor or admin. The owner will intially be the DAO timelock. This keeps the power to transfer or burn TRIBE minting rights isolated.
Mainnet implementations
Core, TribeReserveStabilizer, Tribe, ERC20Dripper, FeiDAOTimelock
Events
AnnualMaxInflationUpdate
event AnnualMaxInflationUpdate(uint256,uint256)
Params
Param |
Type |
Notes |
oldAnnualMaxInflationBasisPoints |
uint256 |
|
newAnnualMaxInflationBasisPoints |
uint256 |
|
BufferCapUpdate
event BufferCapUpdate(uint256,uint256)
Params
Param |
Type |
Notes |
oldBufferCap |
uint256 |
|
newBufferCap |
uint256 |
|
BufferUsed
event BufferUsed(uint256,uint256)
Params
Param |
Type |
Notes |
amountUsed |
uint256 |
|
bufferRemaining |
uint256 |
|
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 |
|
OwnershipTransferred
event OwnershipTransferred(address,address)
Params
Param |
Type |
Notes |
previousOwner |
address indexed |
|
newOwner |
address indexed |
|
Paused
event Paused(address)
Params
Param |
Type |
Notes |
account |
address |
|
RateLimitPerSecondUpdate
event RateLimitPerSecondUpdate(uint256,uint256)
Params
Param |
Type |
Notes |
oldRateLimitPerSecond |
uint256 |
|
newRateLimitPerSecond |
uint256 |
|
TribeRewardsDripperUpdate
event TribeRewardsDripperUpdate(address,address)
Params
Param |
Type |
Notes |
oldTribeRewardsDripper |
address indexed |
|
newTribeRewardsDripper |
address indexed |
|
TribeTreasuryUpdate
event TribeTreasuryUpdate(address,address)
Params
Param |
Type |
Notes |
oldTribeTreasury |
address indexed |
|
newTribeTreasury |
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
MAX_RATE_LIMIT_PER_SECOND
function MAX_RATE_LIMIT_PER_SECOND() view returns(uint256)
maximum rate limit per second governance can set for this contract
Returns
annualMaxInflationBasisPoints
function annualMaxInflationBasisPoints() view returns(uint256)
the max inflation in TRIBE circulating supply per year in basis points (1/10000)
Returns
buffer
function buffer() view returns(uint256)
the amount of action used before hitting limit
replenishes at rateLimitPerSecond per second up to bufferCap
Returns
bufferCap
function bufferCap() view returns(uint256)
the cap of the buffer that can be used at once
Returns
core
function core() view returns(address)
address of the Core contract referenced
Returns
Param |
Type |
Notes |
|
address |
ICore implementation address |
doPartialAction
function doPartialAction() view returns(bool)
a flag for whether to allow partial actions to complete if the buffer is less than amount
Returns
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 |
idealBufferCap
function idealBufferCap() view returns(uint256)
return the ideal buffer cap based on TRIBE circulating supply
Returns
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
isPokeNeeded
function isPokeNeeded() view returns(bool)
return whether a poke is needed or not i.e. is buffer cap != ideal cap
Returns
lastBufferUsedTime
function lastBufferUsedTime() view returns(uint256)
the last time the buffer was used by the contract
Returns
mint
function mint(address,uint256) nonpayable
mints TRIBE to the target address, subject to rate limit
Params
Param |
Type |
Notes |
to |
address |
the address to send TRIBE to |
amount |
uint256 |
the amount of TRIBE to send |
owner
function owner() view returns(address)
Returns the address of the current owner.
Returns
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
poke
function poke() nonpayable
update the rate limit per second and buffer cap
rateLimitPerSecond
function rateLimitPerSecond() view returns(uint256)
the rate per second for this contract
Returns
renounceOwnership
function renounceOwnership() nonpayable
Leaves the contract without owner. It will not be possible to call onlyOwner
functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
setAnnualMaxInflationBasisPoints
function setAnnualMaxInflationBasisPoints(uint256) nonpayable
sets the max annual inflation relative to current supply
Params
Param |
Type |
Notes |
newAnnualMaxInflationBasisPoints |
uint256 |
the new max inflation % denominated in basis points (1/10000) |
setBufferCap
function setBufferCap(uint256) pure
no-op, reverts. Prevent admin or governor from overwriting ideal buffer cap
Params
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 |
setMinter
function setMinter(address) nonpayable
changes the TRIBE minter address
Params
Param |
Type |
Notes |
newMinter |
address |
the new minter address |
setRateLimitPerSecond
function setRateLimitPerSecond(uint256) pure
no-op, reverts. Prevent admin or governor from overwriting ideal rate limit
Params
setTribeRewardsDripper
function setTribeRewardsDripper(address) nonpayable
sets the new TRIBE treasury rewards dripper
Params
Param |
Type |
Notes |
newTribeRewardsDripper |
address |
|
setTribeTreasury
function setTribeTreasury(address) nonpayable
sets the new TRIBE treasury address
Params
Param |
Type |
Notes |
newTribeTreasury |
address |
|
totalSupply
function totalSupply() view returns(uint256)
alias for tribeCirculatingSupply
for compatibility with ERC-20 standard for off-chain 3rd party sites
Returns
transferOwnership
function transferOwnership(address) nonpayable
Transfers ownership of the contract to a new account (newOwner
). Can only be called by the current owner.
Params
Param |
Type |
Notes |
newOwner |
address |
|
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 |
tribeCirculatingSupply
function tribeCirculatingSupply() view returns(uint256)
return the TRIBE supply, subtracting locked TRIBE
Returns
tribeRewardsDripper
function tribeRewardsDripper() view returns(address)
the tribe rewards dripper address used to exclude from circulating supply
Returns
tribeTreasury
function tribeTreasury() view returns(address)
the tribe treasury address used to exclude from circulating supply
Returns
unpause
function unpause() nonpayable
set pausable methods to unpaused
⬅️ Contracts