[Proposal] Delegation Strategy updates (finally)

Gm, Marinade has identified a few issues with the current Delegation Strategy. In this thread I present another iteration of improvements that are planned to be implemented in February.

There is a playground for testing different parameters of the delegation strategy. It is a technical/work tool in alpha version, so please excuse the UI/responsivness - Marinade will further invest into development of this tool to allow easier iterations over time. https://playground.marinade.finance/

This a bit detailed draft of the Delegation Strategy (PSR not yet included in the draft): https://public.marinade.finance/Marinade_Delegation_Strategy___draft-1.pdf

The parameters, weights etc are still up for discussion but many of the things are already based on community feedback and it makes sense to make iterative improvement and later add more parameters. Perfect is the enemy of good.

Highlevel summary of the major changes follows, for details check the document linked above:

Eligibility criteria

  • Eligibility criteria relied e.g. on averages of credits earned. But a lot of detail was lost when averaging.

Eligibility criteria is much stricter. Criteria for algo stake and stake directing has been unified.

Concentration score

  • Previously, the score was min-max normalized. The situation today is much improved and yet even not-so-concentrated data centers receive 0 score.
  • Previously, the score was based on ASO only

Formula used for concentration score is updated, and it consists of Country, City and ASO of the node.

Node stake

  • Previously node’s stake had no effect on stake received from Marinade

The more stake the node has, the less score it will receive - up to a point where the node is no longer eligible to receive Marinade’s stake

Count of supported validators

  • Algorithmic delegation supported 100 validators regardless of Marinade’s TVL.

Updated DS stakes more with more validators the more TVL there is to share

Stake directing

  • Previously mSOL and MNDE controlled 20 % of directed stake each but token holders (MNDE or mSOL) had no good way of adjusting this parameter or benefit from the stake directing

This changes as MNDE/mSOL holders will be allowed to vote for algorithmic stake, effectively decreasing stake direction to specific validators. (This will be incentivized in Marinade Season #2, so holders who do not run validators can also benefit from voting)

(Please note that the directed stakes listed in the playground will change drastically, you can try modifying 0.2 mSOL/MNDE direction to 0.1 or 0.15 to better understand the impact. Also at this moment it seems that one of the large mSOL self-voters will no longer be eligible to receive Marinade stake - because of stake concentration and momentarily the votes are distributed to other voted validators)

Commission

Effect of commission on the score is now reduced

MEV

  • MEV rewards - score of validators should be affected by MEV commission/rewards as well -
    • MEV commission is now a new parameter of the scoring

Future ideas (not included atm)

  • Tracking block quality
  • Failover setup detection
  • Data center seniority
  • Validator client concentration (not sensible until there are at least 4)
5 Likes

I’d like to see Directed Stake go from 20/20/60% to 25/25/50% Easier to explain and makes MNDE more powerful

4 Likes

Regarding the concentration score, I think validators.app uses better geolocation tool: currently
validator IP 84.32.189.99 resolved as a server in Lithuania - which is not true, using IP Address Lookup | Geolocation you can see it’s in Netherlands.

Other bug is DataCenter detected by ASO / ASN , which could be misleading: CherryServers has the same ASN number in NL and in LT, but defenetly these are not ONE datacenter.
For example, these are considered as one DC:

  • 59642-LT-Europe/Vilnius
  • 59642-NL-Amsterdam

Iwould be very glad if you could fix these calculations, as my validator’s (sotEf7Y5db7uEviYW4x4Xe3ZE3RE3H9mGyajMBozGun) scrore is descreasing because of it.

Many thanks

2 Likes

would it be possible to label the columns in the dashboard somehow? It’s pretty hard to read at present.

1 Like

I’ve got some comments and questions.

MEV Commission

It mentions in the paper, “Unlike inflation rewards, MEV rewards are very volatile and change epoch from epoch. Therefore, the weight of this parameter is evaluated dynamically based on the size of MEV rewards compared to inflation rewards over past 1 month.”

What’s the equation that decides the weight of MEV commissions?

Inflation Commission

Because of the Solana Foundation’s stake matching program, validators may be willing to pay Marinade for its stake. For example, if a validator charges 10% commissions, they could pay Marinade 9% commissions in exchange for its stake and profit the 1% difference.

So are negative commissions possible in this scheme? How would they affect the scores? I suppose that if a score can be above 1, then the equation would remain the same.

Geographic Concentration

I’m trying to understand the impetus behind using a square root relationship for scoring here. As you can see, although a 33% concentration in a given geography or ASO would give the validator a 0 score and make them inelligible for stake, a 30% concentration would give them an 0.56.

I wonder if a function closer to linear could make sense. It’s true that there’s a big difference between a 30% and a 35% stake concentration because 35% of stake can halt the network whereas 30% cannot. But I don’t know that there’s as big a difference as this function represents. For example, as far as state-censorship goes (which is no longer a theoretical concern post-Tornado Cash), there’s very little difference between the two. If 90% of stake were held in the US, that could have huge ramifications on Solana’s decentralization, but a validator in the US wouldn’t be penalized much by Marinade (country only has a weight of 1, compared to 2 for city, 3 for ASO, and 10 for node).

With a linear relationship, a node/country/aso with even 20% of stake would only receive a 0.4. This would incentivize geographic dispersion beyond what exists today.

If you still want to account for the critical difference between 33% and 34%, you could also use a cubic root function.

Node Concentration

Based on the node concentration function shown below, validators with less than or equal to 800,000 SOL staked are treated identically by Marinade’s algorithm. What’s the impetus for this? I would think that it is better to stake to a validator with 50,000 SOL staked than a validator with 800,000 SOL staked. Also, what’s purpose of the square root instead of a linear function for the 0.8-3M range?

Block Allocation

In a similar vein to the above two sections, what’s the impetus of using a quadratic function for determining how many stake blocks a validator gets? Is there a 2x difference in quality between a validator who has a score of 0.98 and a validator who has a score of 1?

3 Likes

Great points. I’d also suggest finding out some network stake distribution percentile to target as the boundaries for the node concentration function rather than fixing in 0.8M - 3M range.

3 Likes

ASNs are not tied to countries but to companies/organizations (in your case CherryServers). I think they have multiple ASNs but your ip range seems registered under AS 59642 (which can be NL, LT, etc.)

Regarding the first issue, the IP Geolocation cache was refreshed so it should show the correct country.

1 Like

Will MNDE votes become uncapped with this change?

1 Like

Gm, thanks for taking interest in the updates!

It mentions in the paper, “Unlike inflation rewards, MEV rewards are very volatile and change epoch from epoch. Therefore, the weight of this parameter is evaluated dynamically based on the size of MEV rewards compared to inflation rewards over past 1 month.”
What’s the equation that decides the weight of MEV commissions?

commission score weight * MEV rewards per staked SOL over past month / (Inflation rewards per staked SOL over past month + MEV rewards per staked SOL over past month)

TLDR: score of MEV commission is proportional in terms of rewards amount over past month

geo decentralization

I wonder if a function closer to linear could make sense.

There is quite a variety of opinions on what the weights/formulas should be. However, linear formula makes little sense to me personally - arguably, when there is 8 % or 12 % concentration, it is still “fine” as this means, at worst, there is 8 to 12 quality providers (if all had equal share). But when there is 24 % - 28 % concentration, at worst this would be 3 to 4 quality providers (if all had equal share).

With weight 3 on the ASO score, the moment a validator gets to 0, their total score is going to be .917 at most, just below eligibility threshold

Ad countries: if we saw significant increase in stake going in the US direction, I would call for increasing the weight of that parameter as I definitely agree 90 % in the US would no be great. However, it seems that changing country in case of incoming legal changes allows for some grace period (as opposed to some ASO blackholing all Solana traffic).

Based on the node concentration function shown below, validators with less than or equal to 800,000 SOL staked are treated identically by Marinade’s algorithm. What’s the impetus for this? I would think that it is better to stake to a validator with 50,000 SOL staked than a validator with 800,000 SOL staked.

This parameter is put in place, so Marinade supports smaller validators. Smaller in this context means < 800 k SOL. 800 k SOL is a lot but arguably, a validator with 500 k SOL staked may (or rather should!) spend more resources on hotswaps, alerting, other people being ready to respond to incidents - even make it really a sustainable full-time job - even if SOL price drops again. So I see merit in staking both with new validators, with less stake overall, but also with larger validators, who already proved they can get stake from their communities for their hardwork (and punishing them for it does not seem right)

But once the stake creeps up to larger values, it should be penalized imo.

Also, what’s purpose of the square root instead of a linear function for the 0.8-3M range?

I wanted to make the progress steeper towards the 3 M, but I agree that this could easily be linear as well.

In a similar vein to the above two sections, what’s the impetus of using a quadratic function for determining how many stake blocks a validator gets? Is there a 2x difference in quality between a validator who has a score of 0.98 and a validator who has a score of 1?

Please take a look at the playground where the formulas as applied to validators. I was thinking that it would be great if validators with really stellar score were really rewarded.
You can play with the playground and share the link if you come up with another approach that rewards top validators more than the validators lower in the scoring order. Another POV could be that having better score is already incentive enough - a validator at the top of the list has more “secure” stake from Marinade.

The playground links are sharable, would you mind sharing a link to what you suggest - if you get to it?

2 Likes

Hi everybody,

  1. I believe that the name MEV (MEV rewards) here is misleading to users (actually, I think this about all dashboards that show this, but not every dashboard has a forum where you can express an opinion). After all, we’re talking about jito tips here, and the parameter involved in the calculations is nothing other than the validator’s commission on jito tips.
    (Of course, you could say jito mev tips, because today that’s a hot word.)

  2. Honestly, I think that this parameter by itself doesn’t show anything. A more important value for the staker is the absolute value of the tips converted to his APY. I know it’s kind of a lottery, but considering that you do an average over 10 epochs, it becomes a more fair indicator.
    I want to say that at the moment, making a higher APY on credits for staker incomes is still more profitable… (maybe I’m wrong now, but the last time I calculated it was indeed so)
    And it would be just wonderful if you were the first to start presenting it in this way.

Upd.
Perhaps I was too vague, but the main point of the first item is to make sure to specify that it’s about tips and not about MEV, and secondly, that it’s about jito (as far as I know, there are others, but they are not public).
Yes, from my perspective, this parameter about jito is nothing but a kind of jito promotion here, and as a consequence, it will create problems for the development of other similar services, which is a step towards centralization. With all due respect.

Gm,

  1. Yeah, it makes sense to me to talk about jito tips instead of MEV
  2. Indeed, the jito tip commission value shows nothing. But neither does commission for inflation rewards on its own. However, in the updated versions of DS, the two are weighted against each other proportionally (based on value for staker over the past month). So when infl. commission have weight 5, jito tips have weight (today) of roughly 0.1 (in other words: 50x less) - this shows quite accurately the relation between the 2 while making sure that if the tips go up significantly, validators are rewarded in terms of score - as this would be beneficial to Marinade stakers.

Maybe a good consideration would be to merge these 2 (tips and commission) into a slightly different parameter expected_stake_rewards_per_sol_per_epoch - this could be extended to support other types of rewards (if applicable) in the future.

EDIT: Do you know of other MEV related solutions in Solana that might be worth taking into consideration?

2 Likes

Sorry, I realized I misclicked when replying - this was actually reply to your comment: Delegation Strategy updates (finally) - #10 by lj1024

  1. Suppose I want to open a deposit account at a bank and earn interest on it. Imagine that different banks represent some variable interest rates, depending on their success in trading on the stock market, the number of depositors, the number and size of loans issued, and they honestly say that they will share their profits to some extent and cover to some extent just the cost of the average product basket. This is something like inflation, but the inflation rate is the same for all banks, and in our example, different banks use different analytical agencies to assess the basket. Therefore, different banks have slightly different inflation rates.
    And so, I am a normie. Would I want to delve into all this? Obviously not, I’ll just ask - how much % do you actually pay at each bank. And if this absolute parameter changes in favor of another bank, then I will simply transfer my funds to another bank.

I mean to say that these percentage rates at validators are informational quantities. I suggest considering real quantities. At least those that are already known (inflation records, jito tips).

Answering your question.
Laine recently started distributing additional amounts to its solo pool.
Another thing I know about is: not public. I avoid such solutions. And accordingly, I do not think that there is a fair distribution model (although this is just my assumption) and it probably depends on each validator participant.

I’ve been meaning to, and today I finally forced myself to start this document SIMD-0119: Additional Income for Distribution by diman-io · Pull Request #119 · solana-foundation/solana-improvement-documents · GitHub
If this violates the rules, then I will delete the link.

I mean to say that these percentage rates at validators are informational quantities. I suggest considering real quantities. At least those that are already known (inflation records, jito tips).

So for these, the actual quantities would be used. E.g. inflation rewards + jito tips over past month. The weight of jito tips rewards commission is proportional to the one set for inflation based on actual, observed data. So I assume we are in sync on this. For the future it would be nice to find a good way to be able to observe and evaluate all other MEV/tips/… sources automatically.

If this violates the rules, then I will delete the link.

I am no discourse police and I think this link is quite handy! Thanks for sharing, this would definitely allow Marinade to make this work in a nicer way eventually :thinking:

The PDF draft has been updated based on another round of feedback.

  • Score drop is now linear for node’s stake between 0.8 M SOL and 3 M SOL
  • DC param weights are updated.

Hello, I plan to put up an on chain proposal to update the Marinade’s delegation strategy.

The final mechanics are reflected in the delegation strategy paper. The projected implications of the delegation strategy is available on the playground.

Summary:

Eligibility criteria (binary criteria for an initial filter)

  • at least 80% credits earned in each of the last 14 epochs,
  • maximum 7% commission on inflation rewards,
  • at least 80% decentralization score,
  • maximum 80% of total node stake can be delegated by Marinade
  • existing PSR bond associated with the validator

Scoring criteria (to order filtered validators for delegation priority)

  • 15x performance
  • 5x economics (inflation + mev commission)
  • 11x concentration (2x node stake, 2x country, 3x city, 4x ASO)

maybe I missed it, but can’t see any mention about setting both mSOL votes control and veMNDE votes control to 1% down from 20% and I think this should be stated in the summary since it is important for MNDE voters.

The weights are not updates; the playground has 1 % for illustrative purposes of how the algorithmic strategy distributes stake. However, it is now possible to vote for the algorithmic strategy to allow any holder to participate in the governance.