Mainnet parameter discussions: Knowable's proposal

Documentation on governance tally types here notes

Default proposals require at least 2/3 of the total active voting power to have voted AND the yay voting power must be at least 2/3 of the combined yay + nay voting power.

2/3 quorum is higher than comparable chains (ex: 20% quorum on Osmosis, 40% quorum on Cosmos). Given governance is in the critical path for launching the chain, choosing a more conservative quorum in line with comparable chains would reduce the odds of a stunted launch due to a lack of governance participation.

2 Likes

thanks for flagging this! @brentstone @cwgoes @citizenweb3 thoughts?

the issue i see is that any non-PGF proposal can execute arbitrary wasm, so there need to be high thresholds because of how much power they have

but what if there are more mundane proposals? like changing a parameter

if i want to make a social signalling proposal, i suppose i would need to use an RPG proposal that allocates 0 NAM as a work-around…

i made some feature suggestions, but i think most of them will need to wait until after mainnet: Issues · anoma/namada · GitHub

2 Likes

I do recognize its late in the game to bring it up, but felt worthwhile either way :slight_smile:

And could be supportive of higher quorums for arbitrary wasm execution, while relaxing them for ie. parameter changes. Backing a signaling proposal into an RPG proposal simply due to its ergonomics doesn’t feel ideal.

1 Like

I dont think its too late. I would argue that governance can (and should) be developed and upgraded as the chain growths / shrinks. Its purpose, amongst other things, is to defend the chains interests. So its never too late - its on time =)

2 Likes

What about unstake period? 14 days?

1 Like

@Rigorous noted that max_proposal_code_size is denominated in kb, not byes, and should be changed to 1000

thanks for checking these, Rigorous :heart:

Thanks for bringing this up @mike-u410 - I think those parameter choices haven’t been considered recently. Personally, I think a quorum of 2/5 (40% - same as Cosmos) voting power would be fine to start.

3 Likes

That feels like the right balance between ‘de-risking launch phase delays’ and ‘don’t allow folks to easily execute arbitrary wasm’ - I’m supportive within the current design! What’s next?

2 Likes

okay i’ve requested that all three proposal types have a hard-coded quorum of 40% for mainnet: Hard-code all governance proposal types to be 40% · Issue #3683 · anoma/namada · GitHub

but we would like to re-evaluate the proposal types soon after mainnet, and perhaps we can also revisit what’s parameterized at that time

thank you, @mike-u410 :raised_hands: good catch

2 Likes

In order to be able to have more control over the pace at which we advance through the phases of mainnet, I’d also like to propose some governance parameter revisions specifically for the Mainnet Phases, before returning them the original proposed parameters. We could do this using an omnibus proposal when turning on transfers in Phase 5.

At launch → 0-day grace period
at Phase 5 (transfers enabled) → 2-day grace period

At launch → minimum 3-day voting period (validators getting minimum of 2 days for voting)
at Phase 5 → minimum 7.25-day voting period (validators getting minimum of 5 days for voting)

By omnibus, I mean a single proposal could be used to update the grace period, minimum voting period, and to turn transfers on.

3 Likes

I think starting with some parameters to expedite the governance process as we move from Phase 1 to 5 is a good idea. I’ve opened two small PRs that people can check out and comment on.

  1. change quorum for default governance proposals from 2/3 → 40%: Change default proposal quorum by brentstone · Pull Request #3703 · anoma/namada · GitHub
  2. change governance min voting period and min grace epochs as part of the Phase 4 → 5 wasm that enables NAM transfers (Gavin’s “omnibus” proposal): Refactor + Add gov param updates to Phase 5 transition by brentstone · Pull Request #10 · anoma/namada-governance-upgrades · GitHub
4 Likes

what’s the unstaking buffer is set at?

@Momonosukke the unstaking buffer - the time it takes for unbonded tokens to be withdrawable - is planned to be about 14 days, assuming roughly 6 hour epochs.

The pipeline length is 2 epochs, the unbonding length is 53 epochs, and the cubic slashing window width is 1 epoch. An unbond tx then requires waiting for all of these (56 epochs in total) until the tokens can be withdrawn.

2 Likes

Hello everyone!

I’d like to refresh the discussion here just ahead of v0.44.0 and summarize what seems to be the latest consensus on the initial parameter values. The current values as I see them are detailed in the following .toml style:

# General protocol parameters.
[parameters]
native_token = "NAM"
is_native_token_transferable = false # Phase 5: turn to true
min_num_of_blocks = 2700 # assume 6 second blocks and 6 hour epochs
max_tx_bytes = 1048576
max_proposal_bytes = 6291456
vp_allowlist = [] # Fill in before mainnet
tx_allowlist = [] # Fill in before mainnet
implicit_vp = "vp_implicit"
epochs_per_year = 1460 # assumes 6 hour epochs
masp_epoch_multiplier = 4
max_block_gas = 5_000_000
masp_fee_payment_gas_limit = 250_000 # added in v0.44.0
gas_scale = 10_000 # added in v0.44.0

# Map of the cost per gas unit for every token allowed for fee payment
[parameters.minimum_gas_price]
nam = "0.00001" # assume max gas per block of 5M, costs 50 NAM to fill block

# Proof of stake parameters.
[pos_params]
max_validator_slots = 255
pipeline_len = 2
unbonding_len = 53
tm_votes_per_token = "1"
block_proposer_reward = "0.125"
block_vote_reward = "0.1"
max_inflation_rate = "0.0" # Phase 2: turn to 5%
target_staked_ratio = "0.4"
duplicate_vote_min_slash_rate = "0.001"
light_client_attack_min_slash_rate = "0.001"
cubic_slashing_window_length = 1
validator_stake_threshold = "1000000000" # 1000 NAM
liveness_window_check = 10_000 # assuming 6s blocks, the window for evaluating is 16.67 hours
liveness_threshold = "0.1" # assuming 6s blocks, must sign 10% in a 16.67 hour window
rewards_gain_p = "0.25" # will check if recalibration needed
rewards_gain_d = "0.25" # will check if recalibration needed

# Governance parameters.
[gov_params]
min_proposal_fund = 2000 # 2000 NAM deposited to make gov proposal
max_proposal_code_size = 1_000_000 // in bytes
min_proposal_voting_period = 12 # Phase 5: turn to 29
max_proposal_period = 84 # 21 day voting 
max_proposal_content_size = 10000
min_proposal_grace_epochs = 0 # Phase 5: turn to 8
max_proposal_latency = 8 # max 2 day delay between launching proposal and voting start

# Public goods funding parameters
[pgf_params]
stewards = []
pgf_inflation_rate = "0.0" # Phase 2: turn to 5%
stewards_inflation_rate = "0.0" # Phase 2: turn to 0.5%
maximum_number_of_stewards = 1 # added in v0.44.0

# IBC parameters
[ibc_params]
default_mint_limit = "0" # Phase 3: NEED TO COME UP WITH VALUE
default_per_epoch_throughput_limit = "0" # Phase 3: NEED TO COME UP WITH VALUE

There are three new parameters introduced in v0.44.0: masp_fee_payment_gas_limit , gas_scale, and maximum_number_of_stewards. The values of the first two were recommended by the engineer responsible for the gas mechanism. The maximum number of stewards at any given time is proposed to be 1 to begin the network. Adding another PGF steward with a gov proposal down the line would just also require increasing the max_number_of_stewards.

Please feel free to continue the discussion and express agreement or disagreement with the current params.

2 Likes

Yes, thanks for confirming, this should be added in the latest release so the minimum commission rate of 5% is enforced from the beginning.

The stake is very sticky so if the min 5% fee is not enforced from the beginning every validator will want to put 0% fee to attract the most stake before a governance proposal to enforce the min 5% fee. There is already a huge unfair marketing advantage for many weeks for those validators advertising a fee below 5% currently in the pre-genesis stage 2. I’m amazed that nobody at Heliax or Luminara had planned already this min 5% fee in the code to avoid this current unfair marketing advantage, from what I read before it seemed obvious that it would be included but such an important parameter was finally overlooked. I hope any pre-genesis staking dashboard shows those validators with a fee below 5% currently as 5% and a clear message that a min 5% fee is enforced. Also until the min 5% fee was enforced in the Cosmos Hub for example, several previous proposals to enforce the minimum fee failed. This happened obviously because many delegators want to have 0% fee to get all the rewards so a very large % of delegators will vote against enforcing a min fee min. The probability of a governance proposal to enforce the min 5% fee failing is very high actually, because not only all validators with a fee below 5% and accumulating unfairly VP before the proposal will vote against but also a large % of delegators. The min 5% fee must be enforced in the protocol since the beginning @cwgoes

Whoops, left that in there mistakenly in my first post (and now edited and removed). Like I mentioned in discord, this is not planned for pre-genesis.

But why if the code is ready for the min 5% fee? If there are still 2 weeks left for pre-genesis phase 2 surely those validators with a fee below 5% have time to resubmit the txs?

For validators it is a very big deal, it means potentially losing a huge amount of stake and delegators that may go to 0% fee validators (and this will be very noticeable already once the dashboards are ready and if not clearly indicated about the min 5% fee) and then if a 5% min fee is enforced later given that the stake is sticky it could remain in those previous 0% fee validators. This will be greatly exacerbated by the fact that initially the staking ratio will be low and hence the APR higher meaning even more incentives to choose 0% fee validators

Thanks @brentstone! I think I can say that we (Knowable) are ready to proceed with these parameters.

Noting that:

  1. max_proposal_code_size (cc @Rigorous) turns out to be what we intended, being denominated in bytes in the code (but good catch, Rigorous! the docstring had mistakenly noted kb).
  2. Governance voting period would only be 3 day minimum voting at launch, which we think that should later increase to 7.25 days at the same time that transfers are enabled.
  3. Governance grace period would be 0 at launch, which we think that should later increase to 2 days at the same time that transfers are enabled.

Looking forward to progress with “Preparing to kick off shielded set rewards”!

Wanted to make a small update on parameter values, as there is one that will need to be changed with respect to Mainnet parameter discussions: Knowable's proposal - #94 by brentstone.

The max_block_gas will be 15_000_000 instead of 5_000_000. This is needed to pass governance proposals with wasm code such as the proposals to transition between phases of mainnet.

2 Likes

How was the 15 million gas units benchmarked? I managed to submit a proposal with WASM with less than 200,000 gas units.

1 Like