Introduction:
This proposal by Massa Foundation introduces a possible first version of decentralized governance on Massa, with the aim to allow more collective participation in decisions impacting the Massa ecosystem.
We suggest tackling two easier topics first: blockchain parameter updates, and ecosystem grants. The described governance system would allow the community to quickly setup a vote on matters such as the one discussed here regarding block reward, and to be more active in shaping the future of the Massa ecosystem through the Grant Program.
More complex topics would follow later, after testing this first version for some time. These could include arbitrary changes to the core codebase and algorithms, arbitrary changes to the ledger, direct funding of community initiatives with no Foundation contracts, etc.
We welcome feedback on the following, while on our side we study its legal implications in detail. The main new concept is a soulbound governance token used to vote, and then there are specific details around proposals and votes, and a smart contract with a Deweb frontend.
Scope:
-
Parameter update proposal: Change a set of blockchain parameters, listed in the code here:
- Examples: ROLL_PRICE, BLOCK_REWARD, LEDGER_COST_PER_BYTE, THREAD_COUNT, T0, MAX_OPERATIONS_PER_BLOCK, ROLL_COUNT_TO_SLASH_ON_DENUNCIATION
- If the proposal passes, Massa Labs (or any tech team) can publish a new version of the node with the parameter update, together with the update procedure/timeline.
-
Grant application: Give a grant or bounty to a project for the Massa Ecosystem
- Example: Team A wants to build a Full On-Chain Coffee Machine. They apply for a grant of 100k MAS in total, with two milestones of 50k MAS: smart contract + DeWeb frontend deployed, and 1 million coffees made.
- Example: Team B has built a Full On-Chain App with 1,000 active wallets so far, they apply for a bounty.
- If the proposal has good support from the community (based on votes), the Massa Foundation will do basic sanity checks (KYC of the team, check relevance of amount based on previous grants and current budget), and if all is fine sign a grant contract with the team.
Massa Governance token:
- We create a new MAssa SOulbound Governance token, called MASOG token.
- MASOG is earned by stakers at each cycle based on their number of rolls and with a bonus for the duration of their staking. The exact formula we propose is the following:
- Letâs define the function nbRolls(address, cycle) giving the number of rolls of the given address at the given cycle.
- Letâs define the function avgRolls(address, cycle)=average(nbRolls(address, c) for c in [cycle-1000: cycle-1])
- Then we design the function mintMASOG(address, cycle) giving the number of MASOG tokens minted to the given address at the given cycle as mintMASOG(address, cycle) =
- 0 if nbRolls(address, cycle) < avgRolls(address, cycle)
- avgRolls(address, cycle) * (1+min(oginess(address, cycle)/15000, 2))/1289 otherwise
- Where the oginess function is oginess(address, cycle)=max n / #(mintMASOG(address, i)>0 for i in [cycle-n:cycle-1]) > n-10
(intuitively, from how many cycles have I been staking well, missing at most 10 cycles)
Procedure/Lifecycle of a parameter update proposal:
- The candidate creates a forum post on https://forum.massa.community/ in a âparameter update proposalâ category, detailing the proposal and reasoning/background (following a template)
- The candidate connects to governance.massa, submits the proposal:
- Link to the forum post
- Exact parameter changes (set of parameter names + new values), example: {ROLL_PRICE: Amount = Amount::const_init(80, 0), T0: MassaTime = MassaTime::from_millis(15000)}
- To prevent spam, the submission costs 1,000 MAS which are burnt on the smart contract. Submitters must hold a minimum of 1,000 MASOG.
- The governance contract triggers a 3-weeks discussion period, which can happen on any place but preferentially on the forum post. This Discussion status is shown on the governance.massa frontend.
- Using the autonomous smart contract feature, the governance contract triggers a voting period of 1 week. During this period, any MASOG holder can vote YES/NO/BLANK on governance.massa. A (TEXT) reason can be provided optionally. If at least 50% of the MASOG supply has voted YES, then the proposal has passed.
- The governance.massa frontend shows the result of the vote.
- Several proposals can be processed in parallel, they are all tracked on governance.massa.
Procedure/Lifecycle of a Grant application: similar to the previous one, except:
- The candidate creates a forum post on https://forum.massa.community/ in a âgrant applicationâ category
- The candidate connects to governance.massa, submits the application:
- Link to the forum post
- Summary of the application
- Entity and Massa address which would receive the grant
- Expected grant amount (MAS)
- To prevent spam, the submission costs 1,000 MAS which are burnt on the smart contract.
- The governance contract triggers a 1-week discussion period
- Using the autonomous smart contract feature, the governance contract triggers a voting period of 1 week. During this period, any MASOG holder can vote SUPPORT/NOSUPPORT/BLANK on governance.massa, except the applicant itself who cannot vote for its own application. A (TEXT) reason can be provided optionally.
- If there are many applications, maybe we should batch their timing so that voters can connect once per month and vote on all at the same moment.
Constants:
Here is a list of constants of the smart contract which we can tweak now in this discussion:
- DISCUSSION_PERIOD=21 (days)
- DISCUSSION_PERIOD_GRANTS=7 (days)
- VOTING_PERIOD=7 (days)
- SUBMISSION_COST=1000 (MAS)
- SUBMISSION_MASOG_MIN_HOLD=1000 (MASOG)
- AVG_ROLLS_HISTORY=1000 (cycles)
- OGINESS_MAX_POWER=2 (cycles)
- OGINESS_MAX_TIME=15000 (cycles)
- OGINESS_MAX_MISSES=10 (cycles)
- MASOG_FACTOR=1289 (number of cycles per month, so that 1 roll gives approx 1 MASOG per month)
Note on quorums:
The two voting topics have different purposes and therefore different proposed voting mechanisms. For changing blockchain parameters, which can have a very big impact on all holders, this proposal requires a ratio of 50% of the MASOG supply voting YES, which also implies a 50% quorum. That means nothing will pass if we donât have 50% of the MASOG supply voting and voting YES. We should study if this is not too hard. For instance, what happens if too many keys are lost ? The increasing supply of MASOG tokens should minimize this problem in the first years at least.
A possible improvement could be the following: not counting the MASOG supply which did not vote in the last 12 months in the 50% ratio denominator (many more sophisticated mechanisms can be imagined here with updating quorums but maybe we should keep this simple).
For grant support, no quorum is really required in the code as the result is not automatic, it is taken into account by the foundation for the grant decision, so the number of votes can also be taken into account at the same time, and we donât expect as much participation as for blockchain parameter changes. For instance, a
- 0.001% support may be discarded
- 3% support / 0.5% nosupport is already a strong support signal