Attributes
- Author(s): @adam
- Parameter: RelaysToTokensMultiplier, ProposerAllocation, ServicerAllocation
- Current Value: Variable (see PUP-13: Initial WAGMI Parameters)
- Related: PUP-11: WAGMI Inflation, PUP-14: Increase MaxValidators to improve economic security
- Replaces: PUP-13: Initial WAGMI Parameters
- New Value: Variable: see below.
Preface
We are working to come up with an upgrade to this proposal that would simplify the mechanisms used in this proposal. If we were to upgrade, the nature of the proposal would remain the same and we want to optimize for simplicity, predictability, and stability. I wanted to release this proposal to begin the discussion around the mechanisms proposed.
Disclaimer
The ideas in this proposal are my own and don’t necessarily reflect the views of others on the core team or Pocket Network, Inc. Nothing in this proposal should be relied upon for decision making. The examples and spreadsheets are for informational purposes only.
Update Log for V1.1
- Updated spreadsheet
- Changed Input: GOOD VIBES Factor (GV): 0.450
- Changed Input: Inflation Decelerator: -0.65%
- Changed Input: Max Validator Allocation: 40.50%
- Added Minimum WAGMI Target Inflation Value. Set value to 250,000,000 POKT
- Added support in the spreadsheet for USD returns to better encapsulate the true cost of running nodes
- Added a more in depth calculator page
Summary
Pocket Network has several sources and sinks, which have been discussed at length on these forums. WAGMI is designed to curb the main source, but doesn’t go far enough. It was never designed to be the end all be all. It was the kickoff to a long and recurring conversation about how to make the economics work for all parties involved and to make Pocket Network sustainable through good and bad times.
We need to reduce the cost of the overall network which in turn can be used to dramatically reduce sources of POKT. Our tests indicate that nodes can handle far more than what they’ve been given credit for. At present, our engineers are very roughly estimating the minimum viable node count considering even distribution and capacity to be about 10,000 - 15,000 nodes distributed across the globe near traffic sources (this is a rough estimate of minimum viable node count and is directionally correct, but not a precise figure to be relied upon. We will monitor and adjust accordingly). This means we can cut network costs without damaging quality of service. Further, using 15,000 nodes as a baseline provides an opportunity to view the real performance of the network for users and have the ability to adjust accordingly.
This proposal attempts to combine several ideas into one while piggybacking on, but not entirely replacing, WAGMI. The idea is that by simply incentivizing validators, we can encourage people to accumulate on a single node rather than continuing to spread POKT over new nodes. In doing so, we can proportionately decrease the mint rate and overall inflation while maintaining work-based rewards at reasonable values.
Motivation
There have been many discussions that effectively end with the conclusion that the cost of the network is too high, which puts pressure on the token in the open market (I won’t bother to list all the arguments here). We can address all of these through one proposal that aims to curb sources and sinks.
GOOD VIBES Only
The Growth Oriented and Optimal Distribution of Validator Incentives Based Economic System (GOOD VIBES) proposal attempts to create a predictable mechanism that incentivizes validators by assigning a rewards premium over and above servicing rewards. GOOD VIBES adjusts ProposerAllocation and ServicerAllocation according to a given level of nodes, annual minted tokens, and average validator stake. It creates a curve based on these inputs that can be relied upon as we transition from overprovisioned to a more sustainable node count.
GOOD VIBES attempts to make it much more economically viable to make the switch to validating and to have confidence in that decision. Those who make the switch from servicing to validation will make a small premium over servicers. If the node count reduces below the Minimum Viable Node Count threshold, the economics reverse, making service nodes more attractive than validators. The Minimum Viable Node Count acts as a way to govern when the economics change to favor servicers so that node count doesn’t fall below an optimal number.
Unboxing GOOD VIBES
ValidadtorAllocation =
IF
(Total Unjailed Validator Stake / Total Unjailed Stake) * GOOD VIBES Factor) < Max Validator Allocation
THEN
Total Unjailed Validator Stake / Total Unjailed Stake) * GOOD VIBES Factor
NOT
Max Validator Allocation
Important Inputs & Other Information
Servicer_Allocation = 1 - ValidatorAllocation - DAO Allocation
Max_Validator_Allocation_Percentage = 40.50%
DAOAllocation = 10%
Minimum_WAGMI_Target_Inflation 250,000,000
MaxValWeight 40.50%
Inflation_Decelerator -0.65%
GV_Factor 0.300
WAGMI_Target_Inflation @ 15,000 Nodes: 320,954,252
Assumed_Node_Cost: $120 (all in)
If you graph this out, you’ll see that it only takes a small amount of validator incentives at first, but that amount increases significantly as validation becomes more popular, but as node count shrinks, validator weight is increased significantly. Due to the incentives, node count would never go far below the Minimum Viable Node Count (proposed to be 15,000 nodes).
See full table here: Experimental: PUP:15 - GOOD VIBES - Google Sheets
The chart below shows daily expected average rewards by node count if they were to do all servicing or all validating (validators also earn servicing rewards).
The average assumes that you’re able maintain an average validator stake throughout the decrease in node count. Individual results will vary, but the intention is that it’ll always be better to validate - if you can stay in the pool of validators, considering the cost of servicing.
Example: 50,000 POKT
From a practical perspective, let’s take a closer look at what this means for a node runner. As an arbitrary number, I chose 50K POKT as an example of a node runner who needs to make a decision about how to run their nodes.
With a constant average Validator Power, it is obvious that validating is (almost) always better than servicing even without introducing the costs of servicing. The node runner would always choose validating as long as they could keep up with the minimum Validator Power required to be a validator. The expected rewards for work on the network get squeezed as the amount of staked POKT increases.
People with smaller amounts of POKT will risk getting pushed out of the validator list and then being relegated to only servicing. This could make the list of servicers overrepresented by the long-tail of node runners.
Example: 2,000,000 POKT
As we can see below, in the 2M POKT example, the more stake you have, the tighter the difference between validating and servicing becomes.
Even though their expected APR is higher for servicing, the additional cost for running servicers should cause whales to flock to validating. It’s worth noting that APRs will vary per user depending how many nodes it’s possible to run with a given stake.
How it works
A curve is created by the previously entered inputs and the GOOD VIBES factor. The GOOD VIBES factor increases validator incentives and acts as a lever to encourage servicer to validator migration. The initial input for this proposal would be 1.15. This proposal aims to start with a modestly low GOOD VIBES factor and increase it over time if necessitated by the market. This scenario may come about if whales are cautious about the change and don’t think there is enough incentive to make the leap. While I don’t see a need for an adjustment for this in the near term, the adjustment of this should come by DAO vote in future proposals.
To give the reader a sense for the curve created by an decrease in GOOD VIBES factor, this is the curve at .3 GOOD VIBES.
As you can tell, you can manipulate the validator premium up and down with this input.
GOOD VIBES and WAGMI
A nice side effect of GOOD VIBES is that we can bring down the inflation rate in proportion to the number of nodes on the network to a sustainable level.
Extrapolating out the current numbers, our WAGMI-based economic system is on track for the following:
Effectively, GOOD VIBES would replace the WAGMI Parameter proposal when implemented where the number of nodes on the network determines the Target Inflation Value in WAGMI. To be clear, WAGMI is still used to govern the mint rate according to the number of relays, but the inflation target is determined by GOOD VIBES.
For example, if there were 31,500 nodes in total, the WAGMI Target Inflation Value would be 544,261,626 POKT. At 19,000 total nodes, the WAGMI Target Inflation Value would be 386,007,055 POKT. The mint rate would still be adjusted according to the number of relays over the past 30-days. The full schedule can be found here:
At an Minimum Viable Node Count of 15,000, the annual WAGMI target would be 398,655,195 POKT, a 56.25% reduction in inflation beyond the 50% annual inflation target of 472,507,494 set out in the original WAGMI parameter proposal. Effectively, this brings annual inflation to roughly 21.8%.
Grace Period
As part of this proposal, I’m suggesting that we provide an unstaking time grace period to allow for the easy transition between servicing and validating. The passing of this proposal would delegate the specifics of this to the Foundation to announce and provide a period of time to make the transition. To aid in this process, the control of the unstaking time parameter would be delegated to the Foundation until this proposal has later been revoked.
Rationale
I view GOOD VIBES as a stop-gap measure until stake weighted servicer selection (as proposed in V1) can become a reality or other advances can make it irrelevant. That said, GOOD VIBES addresses several problems at once:
- Network-wide overprovisioning
- Network-wide inflation (source)
- Increases the effectiveness of the sinks through validator power competition (sink)
- Economic network security
People have discussed overprovisioning at length, and this proposal effectively addresses that problem head on by encouraging validation.
Further, it consistently incentivizes validators to compete for additional Validator Power, which causes an effective sink to be created as there is a competition to capture more rewards.
Future proposals like Jinx’s Stake Weighted Adjustment of Probability for Session Selection could be a drop in replacement for these mechanisms in a more elegant, code-driven solution. If/when a code-based solution is implemented, we can remove GOOD VIBES. For avoidance of doubt, the repeal of this proposal happens only if that language is included in a new proposal.
Implementation
GOOD VIBES is fairly set and forget, from a framework perspective. If/when node count decreases, the power to change the RelaysToTokensMultiplier, ProposerAllocation, and ServicerAllocation would be delegated to the Foundation to adjust at its discretion according to changes in the node count.
This proposal includes the ability for the Foundation to edit the GOOD VIBES factor (increase/decrease validator incentives), the Max Validator Allocation Percentage (to change the incentives to servicers) and the Max Validator Weight (according to the Minimum Viable Node Count) to increase or decrease validator incentives at its discretion to balance the demand of service nodes. From time to time it may be necessary to adjust the curve to align incentives. An example of this may be when the MaxValidators parameter changes.
Dissenting Opinions
Stake Weighting: Stake weighting is being considered by the engineering team but is not a light lift from a code perspective and will take months to properly code, test, and release. This proposal is not a replacement for stake weighting, but it’s a stop gap until stake weighting is released. Jinx is planning a proposal that would address this topic.
Node count inflation attack: Colluders who don’t care about profits could stake many nodes to drive up the inflation while earning rewards. While not a very threatening attack, it probably is worth noting that this could be an attack angle.
DAO Allocation: This adversely affects the DAO’s income in POKT terms. The DAO will be hamstrung by any proposal that aims to reduce inflation.
Costs aren’t considered as part of the premium: As long as rewards per POKT staked is equal, and validators are cheaper to operate than an equivalent amount of servicers, validating is more attractive and therefore a premium is not required. This is a valid argument and should be considered as part of the overall parameter proposal.
The validator competitor pool naturally gets smaller over time as the validator bid gets higher. This is a very fair critique of this proposal. Validation could end up extremely top heavy and centralized.
Expensive transition: As people unstake from the network, they might use it as an opportunity to exit the network completely and sell their tokens. This may lead to additional sell pressure while unstaked in a short time period. To counter this, I recommend a pre-defined grace period of reduced unstaking time which would allow for people to make the switch without the massive opportunity cost associated with the switch.
Analyst(s)
@adam - Wizard of WAGMI, Least Popular Proposer, Guy who VIBES
Thank you for the numerous contributors to this proposal. Your guidance was invaluable.
Copyright
Copyright and related rights waived via CC0.