You are viewing a single comment's thread from:

RE: There is NO 51% Attack in Steem. Is there? Help! Dan! :D

in #steemtron3 years ago

Unfortunately this analyis neglects how the witnesses are elected. All it takes to control all 20 consensus witnesses is 51% of the stake voting for witnesses.

See this discussion for specific details.

Sorry I missed this post earlier.



page don´t work. If this is what people mean when they say "51% attack", than this is not the same as a 51%-attack in the scientific/mathematical sense.

Steem is a dPOS + Byzantine Fault Tolerance Protocol (dPOS-BFT). Where the security assumption is: that there are no more than [(n-1)/3] malicious nodes, hence for f faulty nodes it needs at least a 3f + 1 honest majority (which is 2/3 + 1 nodes). This is when you want transaction finality/irreversibly. Those systems are used in rockets and nuclear power plants for decades. What Nakamoto did was "OK I cant give you finality, but I can give you 99.99% irreversibly after n rounds, if you are OK with this 0.001% probability of chain-reversibility, than here is a system with only2f + 1 honest majority assumption (>1/2 aka. "51%")". Which was a revolution in decentralized consensus.

Well, if 51% of the voting stake can elect 20 of the nodes then this is simply bad design, while the 1/3 threshold for consensus systems with finality and 1/2 threshold for systems like Bitcoin with "only" a 99.999% finality (las-vegas algorithms) is a physical limit.

in Steem there is the longest chain rule. Which means the longest chain is the valid chain. Nodes add blocks in a ***round-robin scheduling ***scheme. One block every 3 seconds. When you posses up to 1/3 of the nodes you can create a minority fork. The malicious branch will never be the valid chain because 1/3 of a 20 witness round-robin creates block on the malicious chain only every 9 seconds, while the honest 2/3 creates blocks still every 6 seconds. When you posses one single node more than 1/3 it becomes undecidable which fork is the valid chain because you can posses positions in the round-robin where you can add blocks every 6 seconds - a minority is undecidable from a majority. This is why you don´t need all 20/21. When you say 51% of the voting stake can elect all nodes this is horribly bad for a system which can be majority forked with 1/3 + 1 .

Apparently I dunno how to link properly, so here's a screenshot:


And I am certain that a bare majority of stake will elect all top 30 witnesses, given each account has 30 witness votes.

I advocate for 100% depletion of witness votes with 0% recharge until the vote is rescinded, as one way to prevent this from happening. It isn't a complete solution when one user has nearly 1/3 of the stake extant, but it does prevent a supermajority from being created by that one user competent to force hard forks.

It also ends the multiplication of weight advantage substantial stakeholders have over lesser plebs. They already have an advantage. They don't need it multiplied 30x.

Edit: despite my challenges in math, I was able to follow your clear explanation of the math regarding how witnesses submitting blocks established a 'right' chain.