USC Token
USC token is the stable coin in the ecosystem
Last updated
USC token is the stable coin in the ecosystem
Last updated
Contract:
USC Token is an ERC20Upgradeable smart contract that acts as the stable coin in the ecosystem.
You can refer to the for reference.
ERC20Upgradeable: Openzeppelin's ERC20
smart contract that is upgradeable.
Pausable: Allows for pausing/unpausing of the smart contract.
Mintable: Allows for minting new USC tokens to a user.
Burnable: Allows for holders of USC token to burn their tokens.
AccessControl: Allows for multiple permission roles to exist in the same contract.
The USC token is a basic ERC20
contract with no modification or limitation for users. Users are free to transfer
, approve
, burn
,... just like other ERC20
tokens.
The owner of the USC contract can mint new tokens to a user without any special mechanism.
Admin (DEFAULT_ADMIN_ROLE): Admin role is able to pause/unpause the smart contract and can perform mint
action.
Admin role will be held by a gnosis safe address to ensure security.
Pauser (PAUSER_ROLE): Pauser role is able to pause/unpause the contract in case of emergencies. Initially no specific address is the holder of the Pauser role other than the Admin.
Upgrader (UPGRADER_ROLE): Upgrader role is able to upgrade the smart contract for future phases. Initially no specific address is the holder of the Upgrader role other than the Admin.
Gnosis-safe address as Admin: This ensures important roles are secure and doesn't have single-point-of-failure. Also for future extension, Admin can grant roles to other addresses if needed.
User: Freely to do whatever he/she wants with the token with no restrictions.
Minter (MINTER_ROLE): Minter role is able to perform mint
action.
The contract has Minter role so it can perform the redeem workflow.
as Minter: The Token controller will have Minter role as it is a part of the redeem flow. TokenController can mint new USC tokens in exchange for burning user's AGC token as a part of the redeem process.