SmoothDAO, a collective decisionmaking tool to exclude vanilla proposers

SmoothDAO, a governance body to tackle the vanilla proposers problem and development of Smooth

TL;DR:

  • Some validators propose only vanilla blocks, extracting high MEV rewards from the pool while contributing low-reward vanilla blocks only, with no exposure to bigger blocks.
  • it is impossible to prove on-chain how much ETH could have been earned in a block and what the difference is between that and what was actually earned
  • The rewards distribution must be able to be resconstructable on-chain
  • We can put the information we need on-chain ourselves.
  • SmoothDAO would be in charge of committing information on-chain that would signal that the DAO has decided to penalize a validator
  • SmoothDAO would only be governed by current smooth participants

Background

Smooth provides right now around double the amount of execution rewards per block than the median block.

This is thanks to the blocks that have a higher reward, blocks almost always built by block builders and distributed via MEV Boost. Block builders do not only use all sorts of tactics to extract value from the transactions in the mempool, but also have access to private order flow, bundles of transactions and provide higher value to almost any block, sharing part of this profit with the block proposer.

In Smooth, we have detected some users who consistently propose vanilla blocks, which indicates that they might not be utilizing MEV boost or not be subscribed to enough competitive relays.

Since vanilla blocks are usually below the median and not being subscribed to MEV Boost relays has no chance of lottery block to compensate for this imbalance, these proposers are not contributing to the pool, and are bringing everyone else’s rewards down because they always take more than they con possibly contribute without MEV Boost.

While it’s totally OK to not want to participate in the MEV ecosystem, which some consider exploitative and a negative element of the design of current blockchains, such users should also not participate in an MEV Smoothing Pool and benefit from higher profits due to MEV without contributing themselves to the pool.

A potential solution is henceforth proposed in the hopes of generating discussion as a community and figuring out the best way to go about it.

Hurdles to overcome: on-chain information

Smooth is formed by a smart contract, an oracle and a front-end.

The rewards tree is fully reconstructable on-chain. It does NOT depend on relays, which (ironically) are unreliable, specially for old data, nor 3rd party information aggregators like payload.de, which provides a level of transparency guaranteed by on-chain information, the strongest possible.

The problem with detecting differences between a vanilla block reward sent to the pool and the best MEV block that was available is that there is no information on-chain about the “potential” MEV blocks. Any relay could say “there existed a block with 5 ETH reward” and there would be no way to prove it on-chain. The only information that there is on-chain is what actually was sent to the pool and got effectively recorded on-chain. Hence, it is impossible to determine on-chain how much ETH could have been earned and what the difference is between that and what was actually earned.

Can we find a solution that can also be reconstructable on-chain?

We have seen that it is impossible to have on-chain information of the potential blocks that have not made it on-chain. But maybe we can get the oracle to look for another signal on-chain so it can be fully reconstructed by anyone and hence completely transparent.

If the information is not onchain, one solution would be that we put the information we need to take any desired action onchain ourselves.

Now, in order to avoid using this mechanism for nefarious purpose, we would need to define who has legitimacy enough so we can trust whatever is put on-chain. If we don’t want to depend on 3rd parties, we need to put this information on-chain ourselves.

The legitimacy of such information, if it cannot be programmatic, must be social: we as a consensus must decide that the information we receive from 3rd parties about the potential earnings of the block is valid and must decide to commit it online.

SmoothDAO

SmoothDAO is composed by all Smooth participants. It has the potential to vote in the accepted rules of participation in Smooth and effectively ban from Smooth the validators who break these rules.

Practically, I envision SmoothDAO as follows:

  • We mint a Smooth token (non-transferrable, to avoid people buying votes) to Smooth participants
  • We decide on the rules of participation on Smooth (for example, one rule could be 3 vanilla blocks in a row and you’re out - more detailed information on this below)
  • We keep track of the infringements of the rules in a forum post in here (because the information comes from off-chain, 3rd parties, it must be verifiable socially by looking at links that are socially regarded to be trustworthy)
  • Once the ban conditions are met, a vote to ban a specific validator is triggered. The passing of this vote results in an on-chain call function that is picked up by the oracle and the decided penalty is applied.

Discussion points

Voting power allocation

Smooth is formed by stakers with varying weights of interest. Some have hundreds of validators, others only one. Some are willing to invest time in the management and optimization of the rewards received by smooth, some others are happy to let it run on its own.

I suggest distributing tokens based on rewards received. This makes sure that people that have been a long time in the pool have more power than recent joiners, and also that people that have more validators also get more voting power, according to their economic interest.

Voting power should be revoked when validators leave the pool.

Alternatives and why I don’t like them:

  • 1 withdrawal address = 1 vote: it doesn’t take into account that some withdrawal addresses have more economic interest than others
  • 1 validator = 1 vote: It doesn’t take into account the time factor and creates opportunities of attack: someone with lots of validators could register to the pool, vote, and leave the pool.

Penalties

What are the penalties applied and what is the threshold from which the penalties apply?
I suggest applying a ban from the pool per validator (as opposed to per withdrawal address) and apply this ban at 3 vanilla blocks in a row.

I don’t have a strong opinion on this and would love to see feedback here.

Policy / Terms of use

SmoothDAO would govern the terms of use of the pool. In order to avoid arbitrary votes, the rules of engagement should be clear. A policy document should be approved by the DAO.

An example of such rules can be found here: Lido on Ethereum Block Proposer Rewards Policy - HackMD

Infringement of rules reporting

The way I see it, there would be a bot/script keeping track of the difference between the vanilla blocks proposed and checking whether there was an MEV Boost block. If such difference was of more than 10% of the submitted execution reward, a forum post would be created with the information from the sources (relays, payload.de, etc.) that have been decided to be reliable by the DAO.

Each validator would have their own thread of infringements and when the conditions for the penalty are met, a DAO vote would be triggered to signal the penalty on-chain.

All voters could then check in the thread whether the penalty is justified and verify the source of data. This step is what gives the vote the legitimacy to be accepted and where edge cases are brought up and discussed.

Additional considerations

  • We could also give the DAO a budget to manage research on MEV, establish partnerships or do marketing activities to increase the amount of validators in the pool and increase exposure to lottery blocks. Dappnode is more than happy to lower the fee to 5% and send 2% to the DAO for the DAO to manage. Votes to spend this budget should be proposed by its members and passed by the DAO.
1 Like

Thank you for drafting this proposal.

The entire reason this topic (unfortunately) needs to be addressed, is because there are numerous accounts in the pool that have 25%, 50%, and even 100%(!) vanilla block proposal rates. At those percentages, it’s clear these are intentional acts.

It think it’s important to suggest that joining Smooth should be considered a privilege and not a right or entitlement. Smooth is a MEV smoothing pool that only really works when everyone is submitting maximum MEV-based blocks at a near 100% rate.

I agree with this method of token distribution / vote weighting.

I think bans need to be on a per account basis. Currently validators propose on average about 2x per year. If the rule for penalty action is 3 consecutive vanilla blocks, then it will take on average 1.5 years to purge the pool of the worst offending validators. In other words, they would have 1.5 years of additional time to continue accumulating what equates to stolen rewards from everyone else in the pool. That is just way too long in my opinion.

I think penalty / ban actions need to be on a per account (withdrawal address) basis. Rated.network provides a very clear history of an account’s behavior and performance under the “all time” time frame. If and until a better source of account metric history becomes available, I think rated.network is more than sufficient to instantly assess whether an account is behaving acceptably and in the best interests of the pool, or not.

I would suggest that (for now) payload.de along with rated.network, collectively serve as the primary sources for determining whether an account is behaving acceptably, or not.

Another issue that is adjacent to the vanilla block issue, and nearly as problematic, are the accounts subscribing only to OFAC compliant relays. I propose these accounts also be subject to the same penalties as vanilla block abusers. Mainly, because these accounts usually have a higher percentage of vanilla blocks anyway, and because these accounts frequently do not receive maximum MEV blocks because they are not subscribing to non-OFAC compliant relays. Meanwhile, these accounts are accepting payment from the pool that has earnings contributed by other users who are submit non-OFAC compliant blocks. :face_with_raised_eyebrow:

TLDR: in addition to the vanilla block abusers, there are accounts hiding behind “OFAC compliance” that are also hurting the pool – they should also be penalized.

2 Likes

Yeah, I don’t dislike the idea of banning per withdrawal address.

Very likely the validators of one person are running in the same setup, and hence if they get 3 vanillas in a row, it is likely that all of their validators are under the same non-MEV Boost setup.

Regarding the Non-OFAC… I would like to see some numbers on the delta of the rewards. Non-OFAC compliant in theory can add an even broader number of transactions (the same as OFAC plus the ones that deal with sanctioned accounts and tokens), so there’s nothing per se that would make them less profitable.

I think we could use the same heuristic for all relayers in general: a difference of x% from the biggest block. This way we don’t care if it’s vanilla, ofac compliant or otherwise.

1 Like

Marketen @Marketen has issued a proposal to go to market with a minimum viable vote: