Stablecoin Governance
HLUSD Stablecoin Governance
To enhance the transparency and decentralization in stablecoin governance, HeLa proposes a set of on-chain and community-driven governance mechanisms.
Before you begin, please ensure that you have set up the command line wallet with the appropriate network and default account.
Chain Initiator
Chain Initiator is an HeLa address (hela01qrmyx4d...
), hard-coded in paratime/src/libs/chain_initiator
field. Its primary function is to initiate the chain roles, as defined below. Please note that the Chain Initiator can only be used once, and after initiation, the address will be set to that of a normal user.
Subsequently, all roles management should be carried out through the propose-voting system. Currently, this action can only be executed via the command line using the following command: ./hela managest initowners [addr1 role1] [addr2 role2] ...
Note: The Chain Initiator has the ability to initiate multiple addresses; however, each address can only be associated with a single role within our system. If multiple roles are assigned to an address, the address's role will be overwritten by the last assignment.
Roles
There are 12 kinds of roles defined in our system, which are as follows. Update: All the voters' role can also raise proposals as proposers'.
Admin Only admin can
propose
andvote
for all other roles and config the values formintQuorum
,burnQuorum
,whitelistQuorum
,blacklistQuorum
andconfigQuorum
.MintProposer Both mint proposer and mint voter can propose to mint stable coins to a
WhitelistedUser
user.MintVoter Only mint voter can vote the proposals from the
MintProposer
, and only themintQuorum
is reached, themint
action can take effect.BurnProposer Both burn proposer and burn voter can propose to burn stable coins from a
WhitelistedUser
user.BurnVoter Only burn voter can vote the proposals from the
BurnProposer
, and only theburnQuorum
is reached, theburn
action can take effect.WhitelistProposer Both whitelist proposer and whitelist voter can propose addresses to be a
WhitelistedUser
user, but this proposed address should not beBlacklistedUser
userWhitelistVoter Only whitelist voter can vote the proposals from the
WhitelistProposer
, and only thewhitelistQuorum
is reached, thewhitelist
action can take effect.BlacklistProposer Both blacklist proposer and blacklist voter can propose addresses to be a
BlacklistedUser
, but this proposed address can only be a normalUser
.BlacklistVoter Only blacklist voter can vote the proposals from the
BlacklistProposer
, and only theblacklistQuorum
is reached, theblacklist
action can take effect.WhitelistedUser The
WhitelistedUser
can be the beneficiary address of minting and burning besides the functions of a normal user.BlacklistedUser The
BlacklistedUser
can not send any transactions to change the state of the specific runtime, even query.User Normal users can exercise general functions provided by our system, like transferring money, deploying smart contracts etc.
Actions
We introduce the following actions into our system, they are:
SetRoles
SetRoles
action allowsAdmin
to propose a role to some address, the proposal is like the following which should follow the json format (the role is in the snake manner, e.g., mint_proposer, mint_voter, burn_proposer, whitelist_proposer, blacklist_proposer, whitelisted_user etc.).
Mint
Mint
action allowsMintProposer
to propose minting specific amount5000000000000000
to aWhitelistedUser
.
Note: the exponent for the runtime is 18, which means 1 HLUSD = 10^18 base unit.
Burn
Burn
action allowsBurnProposer
to propose burning specific amount5000000000000000
from aWhitelistedUser
. The proposal json file is similar with the Mint one.Whitelist
Whitelist
action allowsWhitelistProposer
to propose whitelisting some address.
Blacklist
Blacklist
action allowsBlacklistProposer
to propose an address with a normalUser
role to be aBlacklistedUser
. The proposal json file is similar with the Whitelist one.Config
Config
action allowsAdmin
to propose new values formintQuorum
,burnQuorum
,whitelistQuorum
,blacklistQuorum
andconfigQuorum
, at least one value is required in the data field, otherwise, this proposal will be declined.
Propose
All proposals can be made with the following command: ./hela managest propose [proposal.json]
. After the proposal is broadcast, the users can show the proposals with the command: ./hela managest show [number]
. By default, the latest proposal will be displayed if the [number]
is left blank.
Vote
The voters with the specific role can vote proposals with the following command: ./hela managest vote [proposal ID] [options]
. Each proposal gets a unique ID, which can be found by the ./hela managest show [number]
command. The [options]
field can be yes
, no
or abstain
. The users can look up the vote result by the same ./hela managest show [number]
command, where the latest result of the voting is shown in the Results
row. Update: Voters can not vote for the same proposal many times.
Last updated