7 ways to fix Steem's Delegated Proof of Stake (DPOS) System 🤔

in Steem Governance5 years ago (edited)

7 Verbesserungsvorschläge, die teilweise auch die letzten Tage von Witnesses diskutiert worden sind, um DPOS weiter zu verbessern, zu dezentralisieren und robuster gegen Angriffe zu machen:

#1 Reduzierung der Anzahl der Witness-Votes auf 10

Derzeit kein ein einzelner großer Stakeholder bis zu 30 Witnesses wählen und dadurch alle Top 20 Witnesses austauschen und alleine bestimmen.

#2 1 SP = 1 Vote

Die Idee ist, dass wenn man mehr als einen Witness wählt, die Steem Power auf die gewählten Witnesses aufgeteilt wird. Also bei zwei Witnesses würden diese nur noch die Hälfte der Steem Power an gewichteten Stimmen bekommen, bei drei nur noch ein Drittel usw.

#3 Erhöhung der Anzahl an Konsensus-Witnesses

Im Moment hat Steem nur 20 Konsensus-Witnesses (Top 20), die relativ viel Macht haben und im Wesentlichen über den Konsensus der Chain entscheiden. Diese Zahl könnte man auf 50 oder 100 erhöhen, um DPOS weiter zu dezentralisieren.

#4 Ablaufdatum für Witness-Votes

Die Idee ist, dass man die Witnesses immer wieder (zum Beispiel alle 6 oder 12 Monate) neu wählen und bestätigen muss, ähnlich wie es in der Demokratie auch regelmäßig Wahlen gibt. Wenn ein Account über längere Zeit inaktiv ist, würden dann die Votes nicht mehr zählen.

#5 Incentive einführen, um die Wahlbeteiligung zu erhöhen

Das ist vielleicht einer der wichtigsten Punkte, der das Problem der geringen Wahlbeteiligung lösen könnte. Im Moment gibt es kein direktes Incentive an der Wahl der Witnesses teilzunehmen (außer Bestechungsgelder). Denkbar ware zum Beispiel, dass Stakeholder, die Wittnesses wählen, mehr Rewards bekommen oder eine höhere Verzinsung der Steem Power oder umgekehrt, jemand der nicht wählt, bekommt keine Verzinsung der Steem Power mehr.

#6 Exchanges die Stimmrechte entziehen

Ok, ist nach dem Fiasko selbsterklärend. Exchanges dürfen alles machen nur nicht Witnesses wählen, Steem Proposals oder Content up/down-voten.

#7 Steemit Inc die Stimmrechte entziehen

Auch der Stake von Steemit Inc. sollte speziell behandelt werden, da die Gründer-Firma einen historisch großen Anteil an Coins selber geschürft hat (ninja-mine) und es auch eine Vereinbarung/Erwartung der Community mit Steemit Inc. gibt, mit dem Steemit-kontrollierten Stake weder Content noch Witnesses zu voten.

Was haltet ihr von den Verschlägen, habt ihr noch weitere, um DPOS zu verbessern und gegenüber Attacken robuster zu machen?

blackboardsteem11920.jpg

English

7 suggestions to improve DPOS, some of which have been discussed by Witnesses already in the last few days, to further improve DPOS, decentralize it and make it more robust against attacks:

#1 Reduce the number of Witness votes to 10

Currently, one single major stakeholder can elect up to 30 Witnesses and thus replace all top 20 Witnesses and determine them alone.

#2 1 SP = 1 vote

The idea is that if you vote for more than one Witness, the Steem Power will be divided among the voted Witnesses. So if you vote two Witnesses, they would only get half the Steem Power in weighted votes, if you vote three, they would only get a third, and so on.

#3 Increase the number of Consensus Witnesses

At the moment Steem has only 20 Consensus Witnesses (Top 20), who have relatively much power and essentially decide the consensus of the chain. This number could be increased to 50 or 100 to further decentralize DPOS.

#4 Expiration date for Witness votes

The idea is that you have to re-elect and re-confirm the Witnesses on a regular basis (for example every 6 or 12 months), similar to the regular elections in a democracy. If an account is inactive for a longer period of time, the votes would no longer count.

#5 Introduce an incentive to increase voter turnout

This is perhaps one of the most important points that could solve the problem of low voter turnout. At the moment there is no direct incentive to participate in the election of the Witnesses (except bribes). For example, stakeholders who vote for the Witnesses might get more rewards or a higher interest on their Steem Power or vice versa, someone who doesn't vote will not get any interest on the Steem Power for example.

#6 Withdraw the voting rights of Exchanges with customer funds

Okay, this is self-explanatory after the fiasco. Exchanges can do anything but are not allowed to vote for Witnesses, Steem Proposals, or content.

#7 Withdraw the voting rights of Steemit Inc.

Also the stake of Steemit Inc. should be treated in a special manner, because the founder company of Steem has mined a historically large amount of coins itself (ninja-mine) and there is also an agreement/expectation between the community and Steemit Inc. to vote neither content nor witnesses with the Steemit controlled stake.

What do you think about the suggestions, do you have any more to improve DPOS and make it more robust against attacks?

Resources

[1] Steem blockchain multivote security vulnerability https://steempeak.com/palnet/@hotbit/steem-blockchain-multivote-security-vulnerability
[2] Changing the witness voting system by introducing witness downvotes? Could this work? https://steempeak.com/steem/@holoz0r/changing-the-witness-voting-system-by-introducing-witness-downvotes-could-this-work

Live your Secrets and Steem Prosper 🔥

xx Viki @vikisecrets

Sort:  

Egal, wie man es wendet oder dreht, DPoS ist ein sehr plutokratisches System. Die spieltheoretische Annahme, dass jemand der einen hohen Stake hat nur, dass beste für die Blockchain will, stimmt leider auch nicht. Die kurzfristigen Kursgewinne sind einfach zu verlockend. EOS hat mit ähnlichen Problemen zu kämpfen, obwohl diese bei weiten nicht so extrem sind wie was gerade hier auf Steem passiert.

Zu deinen Punkten:

#3 finde ich gut, die Beschränkung auf 20 Witnesses finde ich etwas niedrig und willkürlich. Je weniger Witnesses, desto kürzer können die Blockzeiten sein, aber 20 ist schon sehr wenig.

#1, #6 und #7 sind gut gemeint, jedoch können sie einfach umgangen werden, indem Steem an mehrere Sockpuppet Accounts geschickt wird. Für #2 ist es ähnlich, es ist aber trotzdem gut, da es die Macht der Whales etwas eindämmt.

#5 ist was gerade jetzt passiert, ich glaube, es gab noch nie so eine hohe Wahlbeteiligung.

#4 ist eine gute Idee, jedoch für das aktuelle Problem keine Lösung.

indem Steem an mehrere Sockpuppet Accounts geschickt

Das Argument wird immer wieder gemacht. Aber das währe aber nur bedingt der Fall da die Menge VEST (aka Steem Power) ja gleich bleibt.

I think the biggest problem with voting is that votes can be sold and there seems to be no way to stop this. That's a longterm problem with DPoS and not sure if there are great solutions. But several of your points would fix more immediate problems with the STEEM consensus IMO.

2 1 SP = 1 vote

This is the most important change. Once implemented, setting max votes would no longer be neccessary as every additional vote dilutes previous votes. Or you could allow users to allocate vests however they would like, with the rule that one vest can support at most one candidate.

I think this would make it substantially harder to make controversial changes to Steem. Because 30% of the community could elect witnesses to block a supermajority.

3 Increase the number of Consensus Witnesses

Agreed. Seems like we're wasting a lot of decentralization that is waiting to participate.

4 Expiration date for Witness votes

Possibly, but this would also encourage proxy voting to circumvent the expiration. And possibly other actions that result in users giving up security for convenience.

5 Introduce an incentive to increase voter turnout

This may be good, if paired with some mechanism to encourage intelligent voting.

6 Withdraw the voting rights of Exchanges with customer funds

I wonder whether there is a practical way to to accomplish this. You could blacklist known exchange accounts, but then it would just drive exchanges to use more secretive account structures. Also how do you define exchange? If I'm holding some STEEM for family members and helping them trade it am I an exchange? It will be hard to agree on a definition here.

Sehr gute Zusammenstellung, in der Kürze gut verständlich dargelegt!
.2. halte ich für überflüssig, da es nichts wesentliches ändern würde.
.3. 50 bis 100 scheinen nach den Aussagen unseres Profis @lauch3d nicht möglich zu sein. Wenn ich es richtig verstanden habe, muss bei jedem Block der Konsens hergestellt werden indem jeder Konsens-Witness jedem anderen das bestätigt. Bei den jetzigen 20 (oder 21?) sind das 400 bzw. 441 (Konsens-Witness-Anzahl²) Datentransfers pro 3 sec. Bei 50 wären es 2.500 und bei 100 10.000. Das dürfte die Datenrate der Onlineverbindung mancher Konsens-Witness-Nodes überfordern. Habe ich das richtig verstanden, @lauch3d? Aber 30 --> 900, vielleicht auch 35 --> 1.225, sollte hinhauen.

Wenn es mal unterschiedliche wählbare Festlegungszeiten für Stakes geben sollte, sollten die Votes entsprechend der Festlegungszeit gewichtet werden.

Wenn du ein Quorum - eine direkte Tafelrunde aus bekannten Knoten (Jens, Sabine, Frank, ...) hast, dann limitiert direkt (wie du richtig angemerkt hast) die Anzahl der Teilnehmer. Computer können ja nicht in die Runde sehen, sondern jeder muss jeden anderen einzeln abklappern und fragen was der Server vom jeweils anderen meint.

Bei Steem haben wir technisch keine direkte Tafelrunde (aber es kommt am Ende aufs gleiche raus). Wir haben einen Rundlauf-Algorithmus der jenem Blockproduzenten welcher an der Reihe ist einen Vertrauensvorschuss gewährt. Die Tafelrunde stimmt dannach mit mindestens 2/3 + 1 (also 17 Nodes) für die Richtigkeit der Kette. Darum sind vorne an der Kette immer Blöcke, die noch nicht von allen validiert wurden.

Auf dem Papier kannst du mit so einem Rundlauf zwar mehr Server anschließen, musst aber garantieren dass 2/3 + 1 den Anschluss halten, sonst können 1/3 einen Fork im Sinne einer Diskrepanz auslösen. Aber mehr Kandidaten bedeutet ja nicht dass auch mehr Akteure dahinter stehen. Wenn es stärkere Hardware fordert, dann ent-demokratisiert man und es werden eher weniger. Und vorallem steigt die Wähler-Apathie, niemand kann 100 Witnesses recherchieren. Die Beteiligung bei bisherigen dPOS-Systemen liegt bei unter 10% der Nutzer. Problem hier war einfach, dass es eingebaute Kollusionen gab, Sun hat mit Ninja-Stake UND dem Stake der chinesischen Börsen Huobi und Binance gewählt. dPOS kann man nicht einfach fixen aber man kann es.

(2) Ein großer Stakeholder könnte nicht mehr alle 20 Witnesses im Alleingang austauschen, stimmt wäre, wenn man (1) umsetzen, würde wahrscheinlich dann überfüssig
(3) Danke für den Hinweis, das könnte tatsächlich ein Problem sein, vlt würden sich noch 30 Witnesses ausgehen.

Siehe meine Edit-Ergänzung

Wieder mal vergessen: !BEER und !COFFEEA und !invest_vote und !giphy Votes und resteem




giphy is supported by witness untersatz!

Toller Artikel mit guten Verbesserungsvorschlägen.
Bis Punkt 5 finde ich alle super.

Zu Punkt 7, bin ich der Meinung, dass das kein wirklicher ninja mined stake mehr ist, da justinsun ihn ja gekauft hat.
Da steemitinc ja eine zeitlang steem verkauft hat um die laufenden kosten zu decken, haben wohl ziemlich viele leute ninja mine stake gekauft. Und die dürfen alle damit voten etc. warum sollte jsutinsun das nicht dürfen, in unserer chain geht es eben um geld, wenn jemand wie justin viel geld in die hand nimmt hat er eben am meisten macht, ob er seine steem jetzt von steemitinc oder igendwoanders herhat spielt da nach den steem regeln meiner ansicht nach keine rolle.

(das problem das alle mit ninja mine sehen ist doch, dass es damals so billig war, aber sun hat doch dafür bezahlt)
!invest_vote

Einmal das und dann noch die Frage: Warum soll eigentlich nur Steemits Ninja Stake nicht voten können? Blocktrades votet ja z. B. auch - Sowohl Artikel als auch Witness.

Bei >>nothing-at-stake<< gilt dass es so billig war und vor allem dass es sich x-fach amortisiert hat...aber wie viel hat er bezahlt? Ab wann ist es Skin in the Game? Ist das Problem von Ninja-Stake in diesem Fall nicht eher die relative Verschiebung? Wenn jemand einen GROßTEIL an Token für sich selbst pre-mined (was Dan gemacht hat), dann liegt das Problem nicht nur im Nothing-at-Stake sondern im Anteil. Das System ist ja responsiv auf die Menge an Token. Führst du zum Zeitpunt t=0 einen signifikanten Anteil der Größe N ein, dann haben alle anderen Zusammen zu jedem zeitpunkt G minus N Nachteil. Egal wie sich G in der Zwischenzeit unter anderen Spielern aufteilt. Inflation gilt ja für alle.

Sun hat hier aber vorallem mit dem Stake von Binance und Huobi gewählt (u.a. die Token derer Kunden). Es war also Nothing-at-Stake (vermutlich) UND eine Bribe-Attacke. Er hat es gekauft man hätte ihn nicht überrumpeln und provozieren sollen aber das Problem war immer da. Vorher war es @pumkin, jetzt ist es @binance +@huobi+@steemit.

Kenn mich zwar nicht so gut aus aber als leihe würde ich sagen klingt alles vernünftig und nach einer guten idee

Ich hoffe das es Steem noch lange gibt und wir daraus gestärkt hervor gehen. Yours Querdenker !invest_vote

Ja, das hoffe ich auch :)

Good article. Thanks for info
$trdo
!COFFEEA
For you

Congratulations @avare, you successfuly trended the post shared by @vikisecrets!
@vikisecrets will receive 0.13200975 TRDO & @avare will get 0.08800650 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

Finde die Vorschläge wirklich alle sehr gut und treffend. Liebe Grüsse Michael !invest_vote

Finde ich gut

Gut