In order to create a governance proposal, you must submit an initial deposit along with a title and description. Currently, in order to enter the voting period, a proposal must accumulate within a week deposits of at least 100 SCRT
.
Note: Please remember through the duration of this guide that the secretcli
counts SCRT in uscrt. 1 SCRT = 1,000,000 uscrt.
Various modules outside of governance may implement their own proposal types and handlers (eg. parameter changes), where the governance module itself supports Text
proposals. Any module outside of governance has it's command mounted on top of submit-proposal
.
To submit a Text
proposal:
You may also provide the proposal directly through the --proposal
flag which points to a JSON file containing the proposal:
Where proposal.json
is:
To submit a parameter change proposal, you must provide a proposal file as its contents are less friendly to secretcli
input:
Where proposal.json
is:
You can see another param-change
example here: enigma-1-proposal-3.json
The subspace
is usually the ModuleName
The key
is usually defined in x/$MODULE_NAME/types/params.go
The value
's type is usually near the key
definition
⚠️ subspace
and key
are case sensitive and value
must be of the correct type and within the allowed bounds.
Proposals with errors on these inputs should not enter voting period (should not get deposits) or be voted on with NoWithVeto
.
⚠️ Currently parameter changes are evaluated but not validated, so it is very important that any value
change is valid (i.e. correct type and within bounds) for its respective parameter, eg. MaxValidators
should be an integer and not a decimal.
⚠️ Proper vetting of a parameter change proposal should prevent this from happening (no deposits should occur during the governance process), but it should be noted regardless.
To read more go to the Cosmos Parameters Wiki.
To submit a community pool spend proposal, you also must provide a proposal file as its contents are less friendly to secretcli
input:
Where proposal.json
is (make sure to change the recipient address to a real address when testing):
The SoftwareUpgrade
is currently not supported as it's not implemented and currently does not differ from the semantics of a Text
proposal.
Subspace | Key | Type | Example |
---|---|---|---|
auth
MaxMemoCharacters
string (uint64)
"256"
auth
TxSigLimit
string (uint64)
"7"
auth
TxSizeCostPerByte
string (uint64)
"10"
auth
SigVerifyCostED25519
string (uint64)
"590"
auth
SigVerifyCostSecp256k1
string (uint64)
"1000"
baseapp
BlockParams
object
{"max_bytes":"10000000","max_gas":"10000000"}
baseapp
EvidenceParams
object
{"max_age_num_blocks":"100000","max_age_duration":"172800000000000","max_bytes":"50000"}
baseapp
ValidatorParams
object
{"pub_key_types":["ed25519"]}
bank
sendenabled
bool
true
crisis
ConstantFee
object (coin)
{"denom": "uscrt", "amount": "1000"}
distribution
communitytax
string (dec)
"0.020000000000000000"
distribution
secretfoundationtax
string (dec)
"0.030000000000000000"
distribution
secretfoundationaddress
string
"secret164z7wwzv84h4hwn6rvjjkns6j4ht43jv8u9k0c"
distribution
baseproposerreward
string (dec)
"0.010000000000000000"
distribution
bonusproposerreward
string (dec)
"0.040000000000000000"
distribution
withdrawaddrenabled
bool
true
evidence
MaxEvidenceAge
string (time ns)
"120000000000"
gov
depositparams
object
{"min_deposit": [{"denom": "uscrt", "amount": "10000000"}], "max_deposit_period": "172800000000000"}
gov
votingparams
object
{"voting_period": "172800000000000"}
gov
tallyparams
object
{"quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto": "0.334000000000000000"}
mint
MintDenom
string
"uscrt"
mint
InflationRateChange
string (dec)
"0.080000000000000000"
mint
InflationMax
string (dec)
"0.150000000000000000"
mint
InflationMin
string (dec)
"0.070000000000000000"
mint
GoalBonded
string (dec)
"0.670000000000000000"
mint
BlocksPerYear
string (uint64)
"6311520"
slashing
SignedBlocksWindow
string (int64)
"5000"
slashing
MinSignedPerWindow
string (dec)
"0.500000000000000000"
slashing
DowntimeJailDuration
string (time ns)
"600000000000"
slashing
SlashFractionDoubleSign
string (dec)
"0.050000000000000000"
slashing
SlashFractionDowntime
string (dec)
"0.010000000000000000"
staking
UnbondingTime
string (time ns)
"259200000000000"
staking
MaxValidators
uint16
100
staking
KeyMaxEntries
uint16
7
staking
HistoricalEntries
uint16
3
staking
BondDenom
string
"uscrt"
ibc
AllowedClients
object (string[])
["07-tendermint"]
ibc
MaxExpectedTimePerBlock
uint64
"30000000000"
transfer
SendEnabled
bool
true
transfer
ReceiveEnabled
bool
true