Proposal for Community Vote Process to Enable Full-Inflation on Mainnet Beta

Hello Solana Community!

As you may be aware, our Mainnet Beta inflation roadmap has been delayed this month due to prioritization of the core team’s work toward supporting the network through high growth. Due to this, we’d like to propose a new on-chain process to allow the community to decide if and how the Solana protocol will enable inflation!

Community Initiated Inflation Process Overview

Through the following public process, the Foundation will host on-chain community votes to grant representatives the ability to enable full-inflation on Mainnet Beta. This process consists of three main steps outlined here with technical details provided below.

1. Nomination Period

The Solana Foundation announces an enrollment period during which any member of the community can declare their desire to act as an “Inflation Candidate”. If elected, this individual will be able to initiate full-inflation on Mainnet Beta under certain conditions defined below.

We propose that the Nomination Period start on Friday Jan 29th with an open enrollment duration of 7 days. In advance of this date we will provide a more detailed outline of the Inflation Candidate nomination process, but some details on submitting nominations for Inflation Candidates are also provided below.

2. Upgrade Period

At the close of the Nomination Period, the list of submitted Inflation Candidate nominees and associated pubkeys will be merged into a new release of the Solana protocol software. This release must be accepted by 95% of the active validators before the community voting for an Inflation Candidate can begin. This time for the network to upgrade to this new release, if they choose to, is referred to as the Upgrade Period.

For reference, typical network upgrades take a day or two to complete.

3. Voting Period

Once the network has upgraded to the release that includes the Inflation Candidate nominees (i.e. the Upgrade Period has concluded), the Solana Foundation will instantiate a Feature Proposal for each of the Inflation Candidates.

As is part of the standard Feature Proposal process, a set of Vote SPL Tokens will be generated for each Inflation Candidate Feature Proposal and distributed to the validators in a 1:1 match with the amount of staked SOL delegated to each validator at that time. Any Inflation Candidate Feature Proposal that receives more than 66% of its Vote SPL Tokens to its unique acceptance token address will be able to enable full-inflation on Mainnet Beta.

A vote for an Inflation Candidate is a vote to accept the currently proposed inflation design and grant the ability for that Inflation Candidate to activate it. A decision by a validator not to send their Vote SPL Tokens to any Inflation Candidate is effectively a vote against inflation in this instance.

Considerations

Given this design, the voting process for an Inflation Candidate is not exclusive (i.e. it is not winner-take-all). Feature Proposals will be created for each Inflation Candidate that is submitted during the Nomination Period. This means that multiple Inflation Candidate Feature Proposals may independently reach the 66% vote approval threshold. In such a case, full inflation on Mainnet Beta will be activated by the first approved Inflation Candidate that submits the activation command.

Also please note, individuals who submit their nominations during the nomination process should do so purely out of a desire to help foster the development of the Solana protocol. The Solana Foundation will not be providing any compensation or incentives to Inflation Candidate nominees or electors. Additionally, neither Solana Foundation nor Solana Labs, Inc., will be participating in this process beyond defining the nomination process and managing the platforms for discussions and coordination (primarily Discord and these forums).

Nomination Period Details

The Solana Foundation proposes that the Nomination Period for Inflation Candidate nominations begin on Friday Jan 29th and stay open for 7 days.

During this timeframe, individuals who want to become Inflation Candidates must first reach out to the Solana Foundation and request an Inflation Candidate address. This address will be used to identify the Inflation Candidate Feature Proposal.

Additionally, the candidate must generate their own keypair using solana-keygen new -o inflation.json. If a candidate’s Feature Proposal vote is successful (i.e. they gather more than 66% of the associated Vote SPL Tokens), this keypair can be used by the candidate to enable full-inflation via solana feature activate inflation.json

For the individual to nominate themself as an Inflation Candidate, they must submit these two addresses via a pull request based off of the template provided HERE to the Solana Foundation Github within the Nomination Period time frame.

At the close of the Nomination Period, a new build will be shipped that includes all of the addresses described above (i.e. the release will include all of the nominee pull requests). If that release is adopted by the majority of the validators on the network, the Feature Proposals for all of the Inflation Candidates will be then initiated by the Solana Foundation and the Voting Period will begin.

Voting Period Details

The Voting Period will start if and when 95% of the network validators upgrade to the release of the subsequent Solana protocol build that includes the Inflation Candidate Feature Proposals from the Nomination Period. The Solana Foundation will initiate these proposals by generating and distributing Vote SPL Tokens for each Inflation Candidate to each validator in a 1:1 proportion with the respective amount of delegated stake at that time.

This voting process, for any specific candidate, will be identical to the previous Feature Proposal votes that have been held on testnet and Mainnet Beta, please refer to the pico-inflation vote instruction for a reference of what a Feature Proposal vote process consists of. Validators may send the respective Vote SPL Tokens to any number of the Inflation Candidates.

Each Inflation Candidate Feature Proposal will have a 66% success threshold. I.e. the proposal will “pass” if greater than 66% of the proposal specific Vote SPL Tokens are transferred to that proposal acceptance address. Once this criteria has been met for any Inflation Candidate, they will then be able to activate the full-inflation feature by using their self-generated pubkey from the pull request with the solana feature activate command along with the self-generated keypair they submitted in the Nomination Phase. Inflation will then be activated upon the network reaching the next epoch.

Timeline Summary

Given the process proposed above, without any unexpected delays, we roughly expect the following timeline:

  • Today Jan 21: announce new community vote process, 1 week for community to review digest
  • Friday Jan 29: Inflation candidate nomination process starts, 1 week to collect nominees
  • Friday Feb 5: Nomination period closes. New build with nominees is released
  • ~Monday Feb 8: Foundation initiates candidate vote
  • ~Wed Feb 10: Inflation enabled assuming a successful candidate election and inflation activation

So, if all goes well, we may see community initiated inflation on Mainnet Beta ~2.5 weeks from today!

Again, look for specific Nomination Period details to be published in these forums next week and don’t hesitate to use this thread for questions and discussion.

10 Likes

Hi @eric,

Thanks for this well thought-through process and thorough explanation.

My first question is -

1 - What are the responsibilities of an inflation candidate validator throughout the process, particularly if their feature proposal passes?

After an initial review, I’m feeling a bit lost in the details. If you could provide a high-level summary of the process, e.g. a flow chart or even bullet points, I think that would help frame the details.

The first three steps in the list you provided are mostly clear to me. I’m still having some trouble understanding the details of the final two steps, particularly the on-chain voting process.

Chris

1 Like

Hi @cjremus!
Thanks for the questions.

What are the responsibilities of an inflation candidate validator throughout the process, particularly if their feature proposal passes?

Quick nit here, keep in mind that an inflation candidate can be anyone. It doesn’t have to be a validator :slight_smile:

As far as responsibilities, there aren’t really strict responsibilities. Think of the Inflation Candidate as someone who is throwing their hat in the ring to be granted the power to “flip the switch” and turn on inflation for the whole network. The voting process is what grants the power.

I.e. Once an Inflation Candidate receives >66% of the Vote SPL Tokens submitted to their Feature Proposal acceptance address, they will automatically be able to enable the full-inflation feature for the whole network. They don’t have to, but they can if they want.

The other thing to point out here is that, assuming we receive multiple submissions for Inflation Candidates during the Nomination Period, there will be multiple Inflation Candidate Feature Proposals generated and available to be voted on. So let’s say, hypothetically, the first Inflation Candidate that receives >66% of their Vote SPL Tokens (another way to say the first Inflation Candidate that is elected), doesn’t enable inflation for whatever reason. Any of the other elected Inflation Candidates, i.e. any others who also receive >66% of their Vote SPL Tokens to their Feature Proposal acceptance address, will have received the exact same ‘power’ to enable full-inflation by being elected, and are free to send the command to turn it on :rocket:

So to understand this vote process there are really three components:

  1. The Feature Proposal Vote process itself. The best resource to understand this is the Feature Proposal documentation. It’s a quick read that nicely summarizes the process. We’ve also used this process for all preceding inflation-related votes. E.g. pico-inflation on Mainnet-Beta

  2. The fact that the community won’t be voting for a single Feature Proposal (e.g. pico-inflation), but they will be voting on multiple independent Feature Proposals (one for each Inflation Candidate).

  3. Some cleverness in the Feature Proposal code along with the process proposed above (namely the multiple pubkey submission during the Nomination Period), that enables the enablement of a feature by an individual (a keypair) after a successful Feature Proposal vote, rather than the vanilla version we’ve run in the past in which a successful Feature Proposal vote enables the feature directly itself.

Basically, the vote is to grant the power to enable inflation to an Inflation Candidate rather than a vote to directly enable inflation :rocket:

At a higher level, we want to, more and more, start handing over both the decision making and execution of those decisions to the community. This is another baby step in that direction.

If this is still confusing, keep the questions coming!

1 Like

Do I understand correctly that these bells and whistles are a kind of legal hack, and candidates are scapegoats? Or there are some hidden gems around this scheme :performing_arts:?

1 Like

Hi @eric The “Solana Inflation Design Overview” document discusses a range of possible values for the inflation schedule. How are the final values determined for the Inflation Rate, Dis-inflation Rate, and Long-term inflation rate?

1 Like

Do I understand correctly that these bells and whistles are a kind of legal hack, and candidates are scapegoats? Or there are some hidden gems around this scheme :performing_arts:?

There are tons of ways for the community to be involved in open source development. One area we’ve been thinking about a lot is governance. Validators, projects building on Solana, and other community members have expressed a great deal interest in an inflationary measure and we put forth a path that leaves it up to the key community stakeholders to decide and take forward. The process laid out here allows anyone to have a voice and for the entire community to consider all voices. It’s one approach to governance, and if you have seen a better process anywhere else in crypto, please feel free to propose it in the forums. Governance and participation is evolving and we are always open to changes and new ideas.

2 Likes

Hi @brian.long,
Ah, apologies I meant to link to the final inflation proposal, posted Nov 20th. I updated in the post thanks for the catch!

2 Likes

Hey Eric, is there a concrete guide of what needs to happen to be nominated? Where/how/in what format do we need to submit to be a candidate?

Is this a rolling process? If we spin another validator up later, do we not have a chance to participate/nominate that specific one later?

Thanks advance!

Hi James,

Look for instructions on the nomination process in the forums tomorrow! If you still have questions after that let me know.

Is this a rolling process? If we spin another validator up later, do we not have a chance to participate/nominate that specific one later?

Nominations aren’t tied to validators, you can submit as many as you’d like :slight_smile:

Best,
Eric

1 Like

Hi @jrmoreau, see here: The **Nomination Period** of the community process to enable inflation on Mainnet Beta is now OPEN :slight_smile:

1 Like

Thanks Eric! I see it!