Curve DAO Token: Admin Controls
The controls within the Curve DAO Token are strictly limited. The admin of the contract can only modify the name
, admin
, or minter
. Since the CurveOwnershipAgent is the current admin of the contract, any changes to these parameters would require a successfully passed DAO vote.
Admin Ownership¶
set_admin
¶
CRV.set_admin(_admin: address):
Guarded Method
This function is only callable by the admin
of the contract.
Function to set/change the admin of the contract.
Emits: SetAdmin
Input | Type | Description |
---|---|---|
_admin | address | New Admin Address |
Source code
event SetAdmin:
admin: address
admin: public(address)
@external
def set_admin(_admin: address):
"""
@notice Set the new admin.
@dev After all is set up, admin only can change the token name
@param _admin New admin address
"""
assert msg.sender == self.admin # dev: admin only
self.admin = _admin
log SetAdmin(_admin)
Changing Name and Symbol¶
set_name
¶
CRV.set_name(_name: String[64], _symbol: String[32]):
Guarded Method
This function is only callable by the admin
of the contract.
Function to change the token name symbol.
Input | Type | Description |
---|---|---|
_name | String[64] | New Token Name |
_symbol | String[32] | New Token Symbol |
Source code
name: public(String[64])
symbol: public(String[32])
@external
def set_name(_name: String[64], _symbol: String[32]):
"""
@notice Change the token name and symbol to `_name` and `_symbol`
@dev Only callable by the admin account
@param _name New token name
@param _symbol New token symbol
"""
assert msg.sender == self.admin, "Only admin is allowed to change name"
self.name = _name
self.symbol = _symbol
Minter¶
set_minter
is technically an admin-only function. However, there's no actual way to change the minter of the contract using this function, because the code checks if the current minter is set to ZERO_ADDRESS
, which was only true when the contract was initially deployed.
set_minter
¶
CRV.set_minter(_minter: address):
Guarded Method
This function is only callable by the admin
of the contract.
Function to set the minter contract for the token.
Emits: SetMinter
Input | Type | Description |
---|---|---|
_minter | address | New Minter Address |
Source code
event SetMinter:
minter: address
minter: public(address)
@external
def set_minter(_minter: address):
"""
@notice Set the minter address
@dev Only callable once, when minter has not yet been set
@param _minter Address of the minter
"""
assert msg.sender == self.admin # dev: admin only
assert self.minter == ZERO_ADDRESS # dev: can set the minter only once, at creation
self.minter = _minter
log SetMinter(_minter)