Proposal for NEW DPOS for Steem Decentralised Governance

in Archon4 years ago

This post is the result of numerous conversations held within Discord. Yesterday, these ideas started to gain some traction within the MSPWaves Broadcast channel, and I thank @r0nd0n for voicing these ideas while I was typing them.

Why do we need a NEW DPOS?

Many Steemians continue to believe that the current DPOS is a "decentralised governance" model. If this was true, then why has governance been "centralised"?

It is not enough that a DPOS model start off being decentralised, it must also be robust enough to withstand attempted attacks on that decentralised consensus. It has always been a theoretical weakness of Steem's DPOS system that it is vulnerable to being centralised by one or more very large stakes. Now that Steemians have seen this in action, it must surely be time to review this model so that this cannot happen again.

So, the aim is to create a NEW DPOS for Steem that is a robust decentralised governance model that is self-protected from becoming centralised by any party.

I propose that this be done in two phases; a NEW DPOS Short-Term solution followed by a Long-Term solution.

Why do we need two steps?

We have an immediate problem. There are two large factions that we can broadly class as the Steem Community and the Tron Holdings; there are also other significant minority factions that make this even more precarious and unstable.

What we have been seeing over the past few days is an escalation in witness votes from both camps. This escalation is not dissimilar to an arms build up to maintain detente. However, this accumulation of resources is leading to a stressful and unstable form of balance of power. Any sudden major shift can upset this tense stability.

Hence, the NEW DPOS Short-Term solution is designed to be very easy to implement and to both maintain the current balance of power while at the same time decreasing the stress levels that come with it.

It will be mathematically impossible for anybody to seize complete control within the short-term as the number of witness votes will be decreased. This is thus designed to maintain the current detente and decrease the level of tension so that discussions can proceed without the background escalation.

NEW DPOS Short-Term

This short-term solution is the simplest and most effective that I can think of.

We reduce the number of witness votes per Steem username to 8.

We can keep the current witness count at 20 plus a backup, not because it is optimal but just to avoid more coding.

The number 8 has been chosen so that even if a large stakeholder were to split their SP into two equal amounts, they would still, in theory, only be able to gain 16 witnesses - one short of a super-majority.

This is the important part of this change. To maintain the current equilibrium plus making it impossible to achieve a super-majority without broad consensus among the two major blocs.

I hope this will be taken seriously and that this could be the first fork that all sides can support.

Let us not forget that all parties profess to be in favour of decentralisation - this is an opportunity to put this into practice.

NEW DPOS Long-Term

Once the balance of power has been achieved and the stress levels toned down, we can all look at how the Steem and Tron systems can work together. That future is not part of this proposal and I am not going to go down all the possible routes.

However, the issue of making DPOS robust to attacks remains. One possibility is that the above Short-Term solution is enough.

What I propose here is that a very small group of people be entrusted with researching and seeking a long-term solution to the issue of Steem's DPOS decentralised governance and writing a report to be submitted to the community.

Such a report will highlight the best solutions, their pros and cons and how to implement them.

That DPOS Research Group can be funded by SPS for a fixed period of time, say 30 days. This Research Group must have one person who knows how to code the blockchain, plus people who have studied and understand DPOS protocols. I myself would be happy to be one such member.

Some Consequences

One of the most obvious questions is how to decrease user witness votes from the current 30 down to 8. I think the simplest is just to take the 8 most recent votes. There is now a growing awareness of the duties of Steemians to vote for witnesses, so if any of those 8 witnesses need amending then there is all likelihood that people will do so quickly. Any other method could be complex and still be unsatisfactory.

One objection to this NEW DPOS Short-Term is that it reduces the witness votes for everyone and so the total MVests that each witness receives will drop across the board. But this is the whole point of this quick fix: that it does not distort the current witness distribution and hence is fair to all parties while removing the stressful escalation that somewhat undermines on-going negotiations.

If you have any further insights about unintended consequences, then please leave a comment.

All feedback appreciated and please resteem to broaden the discussion.

And finally...

So there are two things to decide upon:

Do you support the NEW DPOS Short-Term solution?

Do you support that a Research Group investigate and then propose options for a NEW DPOS Long-Term?

Steem on!

Sort:  

I'm sure that the community would support your proposal but the question is if current witnesses would agree and implement this. I highly doubt.
They want control over the blockchain and talk about decentralization at the same time.

Interesting comment; you imply that the witnesses do not represent the community?
;-)

Of course they represent a 'community' ... a 'community' consisting of a few large stake holders. ;-)

Exactly.

Well,.....

Remember bid bots and linear rewards?
Same witnesses.

I don't believe this will be the next step, but I think it's a high priority for maintaining the integrity of DPoS ideals of decentralization. I would be in favor of 3 votes instead of 8, but 8 may be needed at first to get everyone in agreement. This is a hole in our governance, and the fears that arose with Justin to begin with could have been squashed with this one single feature. I will be lobbying hard to make this happen, I hope everyone joins me.

Please Ron help us to keep this on the discussion docket! Essential concept to fix the root!

I'm going to make it a priority and do my part.

Thanks very much! Would it be a good idea to formally add this to SPS? Not for the immediate short-term change but for the broader discussion about finding the best solution for the future?

Also, what is your favourite communication channel? We have chatted on Discord but you have sometimes not been able to DM. steem.chat?

The 3-vote idea has been suggested by others. The logic being that not only can no one party push through a hardfork but also that nobody can single-handedly block one.

There are merits to that.

Anything else between 3 and 8 are just random, but those two values both have a logic to them.

Thanks again.

Discord is usually best, but the past few days have been crazy. I'm currently editing video (on linux no less), rewatching and transcribing timestamps to make the long shows worth watching, and engaging in the info war on discord/twitter.

I'm still undecided if SPS is the way to go, I really don't think it will be needed, but it's good to keep in mind as an option.

At first I was a proponent of reducing the number of witness votes, but after more deliberation I think it will actually have the opposite effect, making decentralization harder and centralization easier.

Consider the following example scenario (similar to what we have with the current TRON situation):

  • The community collectively has 150M SP
  • A single entity has 150M SP

Now, if the 30 witness votes are reduced to let's say 10, then the single entity has to divide its SP in half and vote in 10 witnesses with each half, so each of the single-entity-supported witnesses will have 75M SP.

The community will have to do the same. It will have to split in half - half the community would have to vote for 10 witnesses and the other half for 10 more. But the community is at a disadvantage because it is decentralized, so coordinating to do this is slower and more difficult. There will be confusion as to who votes for which batch of 10 witnesses, and exactly how to spread the SP in half. It will be very difficult to coordinate that.

So I think reducing the number of witness votes will make it easier for a single, centralized entity to take over the chain.

Some people may say then that we should reduce the number of consensus witnesses, but I think this is problematic because if any single entity wanted to buy off, hack, lead a smear campaign against or otherwise remove the witnesses as an obstacle to its takeover, then the smaller the number of consensus witnesses, the easier for the entity.

Does this make sense? Or do you see it differently?

I think 10 comes with the same pitfalls as 30, which is why I would propose 3, or maybe even 8 as Rycharde outlined. 3 would protect against blocking HFs, 8 would protect against pushing through HFs.

Well that only seems to make it worse. If everyone has 3 votes, then the community has to distribute its votes into 7 equal groups in order to overcome any takeover attempt by a single entity. More coordination and difficulty for the decentralized community. You don't see how it's only making things worse?

If everyone has 3 votes, then the community has to distribute its votes

That's the point. No single entity can control anything, and the governance is more decentralized. I need to run the numbers, since things would change quite drastically, but it would seem from a cursory glance that this could be a good first step in making sure it's a the community that ultimately decides, not one person or organization.

Have you guys talked about the 1 SP - 1 vote idea?

You beat me to it.

This is also something worth considering, but it comes down to:
-ease of implementation
-community support
-effectiveness of accomplishing the goal

I'm not a dev, so I can't speak for the first one, for the second one the community seems split or apathetic, and the third point should be a good debate I'm looking forward to.

We should run some simulations to determine what happens in each case based on major voter preference now.

If you have those resources and skills, go right for it.

what would self votes look like for witnesses? all witnesses just vote themselves with the one (by convention rather than rule) or banned from the self vote?

Why not change it to 1? SP should only be allowed to vote once. Now an account could split their SP as many times as they want, but each SP (for lack of a better term) will only able to vote once.

Example. I have 2 million SP. If I vote once, that witness gets all 2 million. If I vote a second time, it gets split. If I vote a third time, it gets split again.

I agree with this post. Only change I would like is to see 3 votes not 8 that way you can't even vote to block a soft fork. With 1 prrson with enough stack can block a fork.

Also this all exchanges accounts are to be known and blocked from voting

Yes, I see @r0nd0n also agrees with this.

There is a logic to this too.

Maybe dropping from 30 to 3 in one step is deeply radical!

I am personally not wedded to a number so long as it has a logic behind it given that there are 20 top witness slots.

Doing it the other way round, by increasing the top witnesses won't work as the number of current votes is way too high compared with active witness nodes.

Remove weighted stakes from governance voting.

Let's combine dPOS with capitalism and a bet market instead of the flawed witness-election and SPS which is highly centralized.

We have plutocracy on steem rn, in capitalism (like a betting market combined with SPS) people loose if they bet on shit... and winning if they've bet on a good idea-
In our plutocracy there are always the same people deciding, cuz they don't face consequences for their decision like in capitalism..

Let's finally incentive good ideas and growth instead of running after people with big stake (who only care for profit - that's not always the best for the chain) /look at drug dealers who just searched for a money-wash-machine on the btc forum, when steem launched

@lauch3d

@r0nd0n

@edicted

All your rhetoric makes me feel warm and fuzzy inside, but my mind is blank. The devil's in the details. How would this actually work?

It's actually @lauch3d 's rhetoric and idea!

I just try to bring it to the community. Make the stone start rolling :)

Sadly I'm in stationary pain therapy rn and very limited..

But I'm putting time into thinking. As many others do.. And I think we can start a beautiful chain with sooo much potential!

I bet lauch3d can tell you a bit more about how it may work.. :)
But we all need to work together, think together, have conversations.
It's finally time.

Thanks. Yes, thinking is good and the freedom to think on-chain should be protected.

Changes can happen during a crisis, not always after one, when parties are sitting at their comfy chairs once again.

DPOS on its own is not working as there is very little feedback to attenuate the plutocratic convergence. I also like some randomising elements, just as in real life. But this needs a broader forum in which to discuss these issued. I'd happily open up my discord channel.

Betting markets, eh? Putting your money where your mouth is, letting the efficient market show where the truth lies.

That's very nearly like doing a Proof of Stake consensus... to govern your Proof of Stake consensus.... I like it!

I think we should forbid accounts with reputation less than 40 to be witnesses.

Posted using Partiko Android

But aren't some of the lower rep accounts big investors who really have a vested interest in the chain and Steem?

one single vote can change that

sounds very decentralized.

Rep means mothing tho. 1 good vote and you can be at 40 no problem. The steem rep system is very broken

Why?

Have you thought through all the attack vectors to distort such a condition?

A member bonus $trendotoken tip and !trendovoter from MAXUV!
These bonuses are for members, selected at random when @MAXUV posts, and last for a few days.
Thanks for being a member of MAXUV.

Congratulations @maxuve, you successfuly trended the post shared by @rycharde!
@rycharde will receive 0.00024300 TRDO & @maxuve will get 0.00016200 TRDO curation in 3 Days from Post Created Date!

"Call TRDO, Your Comment Worth Something!"

To view or trade TRDO go to steem-engine.com
Join TRDO Discord Channel or Join TRDO Web Site

As a voter and proxy I am fully capable to vote for the maximum number of block producers to make sure the chain is secure. So no, I am against the short term solution.

The beauty of DPoS is that there a no "attacks". The rules are crystal clear: Plutocracy

The rules are only crystal clear to those who understand them.
It is, indeed, a plutocracy and hence not decentralised governance.
As long as one knows.
So you're happy with that?
a DPOP?

yes, because decentralization is desirable to protect ones investment. anyone with half a brain (hi Justin) should come to this conclusion

But it isn't there to protect everyone's investment.

OK, I still don't think the vast majority of Steemians actually understand this feature of DPOS, they just effervesce the "decentral" mantra.

Thank you for being a part of the INCOME entertainment Fund, where builders are sought and supported!

This service is managed by @ecoinstant.

$trendotoken

Congratulations @ecoinstats, you successfuly trended the post shared by @rycharde!
@rycharde will receive 3.27308850 TRDO & @ecoinstats will get 2.18205900 TRDO curation in 3 Days from Post Created Date!

"Call TRDO, Your Comment Worth Something!"

To view or trade TRDO go to steem-engine.com
Join TRDO Discord Channel or Join TRDO Web Site

Hello!

This post has been manually curated, resteemed
and gifted with some virtually delicious cake
from the @helpiecake curation team!

Much love to you from all of us at @helpie!
Keep up the great work!


helpiecake

Manually curated by @ecoinstant.


@helpie is a Community Witness.

If you change the votes to 8 right now it will benefit to Justin.
Why? Because he could guarantee a certain number of seats in the top20.

Right now he can not guarantee that.

Yes, he would have 8, with the other 12 going to the community.
It would still be stalemate.
Just as in the nuclear cold war, as nobody could win, the best course was to de-escalate.
The time it would take to, say, move funds around to vote for more than 8 witnesses would also be enough time for the current Steem community to increase votes on their own witnesses.
What is happening now is that all parties are escalating their SP and I'm not sure Justin can't win such a financial war.

(sorry, not to confuse with the wrong account, reposted)

Yep, Justin has more money than us, and he most likely still has the backing of those exchanges. He could probably go back to 20 witnesses at any time he wanted.

I suspect he needs to accumulate, but yes, he can mount another attack and get all 20. That's what my DPOS proposal would stop - him getting the full monty.
There could be another attack vector with 8 votes, which would mean splitting his VP, but that may be slower to implement and more expensive.

Interesting concept. In general I would support it if bigger brains than mine think it would help. But I do not think you could get both sides to agree, because they both have things they believe must be met to go forward and this would still maintain the stalemate we are in. The big threat is still if the exchanges are convinced to vote for TRON witnesses as they believe in a 1 day power down HF and get their money back. Of course they should have started power down and get funds back week by week while still holding voting power.

A well reasoned plan. Whether Sun would accept this is probably debatable, as it seems likely he's waiting while his monkeys code a hardfork to allow him to powerdown almost instantly with the help again of the exchanges.

True, but all sides currently champion the "decentralised governance" model and it would be hard to argue against these proposed DPOS changes from that POV.
Both sides could flatly refuse, of course, but that seriously weakens their claims regarding "decentralisation".

Limiting each account to a specific multiple of their stake is not an adequate solution. What I mean by multiple of their stake is illustrated forthwith:

User A has 1M Steem. User A casts witness votes for the maximum number of witnesses, now 8. Each of User A's votes are worth 1M Steem. User B has 100 Steem. User B also casts 8 witness votes, each of which is worth 100 Steem. The difference in stake between User A and User B is 999,900 Steem. The difference in their vote weights - their influence on governance - is 7,999,200 Steem.

Why? Because User A casts 8 votes worth 1M Steem, or exerts 8M Steem influence on the witnesses. User B casts 8 votes worth 100 Steem, exerting 800 Steem influence on governance. The system we have to day is far worse than this in multiplying the influence of large stakeholders on governance, but any multiple of stake is a strongly centralizing force on Steem governance.

We need to make witness votes 1 Steem = 1 vote, so that each account exerts as much influence as it has stake, and no more. Presently @justinsunsteemit is estimated to have ~100M Steem at his disposal. He could theoretically exert 3B Steem influence on witness elections. This is a lot of why he is able to simply seize control of the governance at will.

Thanks!

Edit: I also know at least one user that credibly claims to have over 10k accounts. Limiting each account to 8 votes for witness does not limit this user's ability to vote for all witnesses in consensus positions. @justinsunsteemit has access to at least 5 accounts presently - and probably a lot more. Splitting his stake allows him to spread it to all consensus positions, although at a reduced weight.

What you say is all true but is a topic to be brought up when discussing Long-Term DPOS solution.
I really think your system would take a lot of recoding.
There are also many consequences, in that STEEM holdings change every minute, so how are votes balanced? Once could allocate on a % basis and let the system calculate actual values. Again, a lot of new coding.

My short-term proposal has the benefit of being fairly easy to implement without major re-coding. I hope such detailled DPOS discussions will continue and will not be "forgotten" by the community.
Thanks

I dunno about coding. I note we already have VP for ordinary votes, and all this would require is setting VP decay to 100% with no recharge for witness votes.

Seems pretty easy, mayhap.

I appreciate your forwarding this idea to the community. We do need to do something, and even 1 Steem = 1 vote probably isn't nominal to secure governance from the Sybil attack that has captured it. It would make it harder, and that's good. So would limiting the number of witnesses each account could vote for, since it reduces the stake multiple account holders could throw at a vote.

Maybe together both mechanisms could combine their improved security impact beneficially.

Let me see if tagging a few people will move this forward.

@justinsunsteemit, in furtherance of decentralised governance, would you accept the above change in DPOS witness voting?

The aim is to maintain the current balance but also defuse tensions. It would also allow the exchanges to start powering down as their votes would not affect the number of witnesses so much. The exchanges do not need 100% of their tokens immediately, they just need enough to satisfy liquidity issues.

Perhaps such exchanges may wish to speak for themselves too - not just on twitter.

Hi @rycharde ! Nice to see your input about this. I hope your proposal will be funded and that some real discussion about this will happen.

Just thinking out loud here, for the long term solution, why not make an hybrid of the UN's Security Council and the Athenian's sortition (selection by lot) ?

Some more details :

  • There will only be a TOP 4, each of them will have veto right on any possible fork (hard and/or soft, but i think at least on hard). This way, if you manage to get one witness on that TOP 4, you can be sure no hard fork will ever happen that you don't agree with (from the POV of a big stake holder / or the community as a whole, or even a certain portion of that community). For this part, keep the stake system, but limit witnesses' votes slots to 4 and weigh each vote (if you vote for only 1 : 100% of your SP, for 2 : 50% of your SP, ..., for 4 : 25% of your SP). This way it's easy for either side to get one witness in that TOP 4 and make sure there is no "hostile" hard fork. This is for the UN's Security Council part.
  • For the rest, increase the number of consensus witnesses (X - like 100 or so). Block rewards will be distributed equally among these X witnesses. There will be selected by lot every week (or any other period of time, must be long enough but not too long) and will be the consensus witnesses for that period. In the code, you can put some criteria (witness server must be on independent hardware - maybe you can do that by IP -, it must not have missed more than Y blocks in the last Z days, the account must be at least W weeks old, and so on...). After that, the rules for soft/hard forking stay the same (only the number of witnesses agreeing changes and of course the possibility to veto). This way you ensure that if someone wants to seize control, he has to run an awful lot of servers during a long period of time and manage to block community to vote 1 witness in the TOP 4.

Just had this idea 10 minutes ago, didn't put too much thought into it.

This whole thing is so confusing to me. Guess I'll just keep posting and trust that everyone will do what is best for all steemians

Congratulations @rycharde! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You distributed more than 85000 upvotes. Your next target is to reach 86000 upvotes.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

Downvote challenge - Add up to 3 funny badges to your board
Use your witness votes and get the Community Badge
Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Congratulations @rycharde, your post successfully recieved 3.2733315 TRDO from below listed TRENDO callers:

@maxuve earned : 0.000162 TRDO curation
@ecoinstats earned : 2.182059 TRDO curation


To view or trade TRDO go to steem-engine.com
Join TRDO Discord Channel or Join TRDO Web Site

We reduce the number of witness votes per Steem username to 8.

Why 8 ?

 4 years ago  Reveal Comment