Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proof of Stake #3542

Open
IntinteDAO opened this issue Oct 21, 2019 · 21 comments
Open

Proof of Stake #3542

IntinteDAO opened this issue Oct 21, 2019 · 21 comments

Comments

@IntinteDAO
Copy link

IntinteDAO commented Oct 21, 2019

Hello, there.

In my opinion, it is high time to abandon the dangerous 'Delegated Proof of Stake' and switch to the 'Proof of Stake' system.

The Delegated Proof of Stake system comes from the average democratic governments of the countries in which we elect politics (our Witness family) and they govern (and store Blockchain) https://www.youtube.com/watch?v=3W_3AQrQEOM.

The DPoS system will never be safe and our goal should be to achieve the best possible results.

The introduction of the Proof of Stake system will allow you to achieve:

  • Democratization of Steem. Any user with node will have the power to decide the future of the network directly.
  • Decentralize network. The number of nodes should increase as it will be profitable to have your own node.
  • Network security. The whole Steem rests in the hands of 20 witnesses. This is very dangerous.
  • Hindering the scale of corruption. Today, the Steem network is a very small network, but if it grows, it is possible that there will be temptations and pressure on the witnesses to perform activities that harm the platform. Reject transactions from individuals, make updates that will be harmful to users, and so on.
  • Removal of the "Witness" item from the community structure. Witnesses, as they are witnesses, have various benefits, e.g. bigger votes than people, while looking at the cryptocurrency against the background of others, their role is not special, unique. Practically all cryptocurrencies have Witness equivalent - Miner, Staker etc. It is simply a certain feature of a node than a privileged position in the network / society.

Is it possible to introduce Proof of Stake?
From a technical point of view, yes. Having a Steem node is expensive, but because of the introduction of Mira - it is not extremely expensive. In addition, it will increase the security of the network, which is desirable.

From a practical point of view, probably not, due to the fact that the update would have to be supported by 15 out of 20 witnesses, which means that they will stop being witnesses and will earn much, much less. In the current system, 20 witnesses earn the most money. In PoS, the money will be distributed to more nodes, so the earnings will decrease.

@onozasi
Copy link

onozasi commented Oct 21, 2019

Network security. The whole Steem rests in the hands of 20 witnesses. This is very dangerous.
Hindering the scale of corruption. Today, the Steem network is a very small network, but if it grows, it is possible that there will be temptations and pressure on the witnesses to perform activities that harm the platform. Reject transactions from individuals, make updates that will be harmful to users, and so on.

SO TRUE!

@VIM-Arcange
Copy link
Contributor

Network security. The whole Steem rests in the hands of 20 witnesses. This is very dangerous.

As @IntinteDAO wrote, the chances to see a move from DPOS to POS accepted by the 15/20 top witnesses are low.
Another solution, if we can not move away from DPOS, could be to increase the number of main witnesses to N (ex: 100) and split the current reward of the top 20 to this new top N

@IntinteDAO
Copy link
Author

I'd even set the witnesses to 99999999. So we're waiting for the programmers to enter it in HF23 ;)

@mvandeberg
Copy link
Contributor

Let's address some of the criticisms.

Democratization of Steem. Any user with node will have the power to decide the future of the network directly.

I am assuming the reason you say that DPOS does not do this is because small stake accounts do not impact the witness voting much. They also will not produce often in PoS and will have very little say in the direction of Steem. Large stake holders, like in DPoS, will still control the direction of Steem.

Decentralize network. The number of nodes should increase as it will be profitable to have your own node.

At the current price of Steem, it is not even profitable for witnesses to run their nodes. Unless you are implying that the only thing holding Steem back from being a top 10 crypto is the fact that we use DPoS instead of PoS then I find you claims dubious at best. If you are implying that then we should discuss that hypothesis further because I don't believe it.

Network security. The whole Steem rests in the hands of 20 witnesses. This is very dangerous.

The first legitimate criticism. Consider 75% of Bitcoin is controlled by 6 mining pools. Not to say that 20 witnesses makes Steem impenetrably secure, but there are far less secure networks out there worth a lot more. Again, I do not believe this is the primary problem affecting Steem's valuation.

Hindering the scale of corruption. Today, the Steem network is a very small network, but if it grows, it is possible that there will be temptations and pressure on the witnesses to perform activities that harm the platform. Reject transactions from individuals, make updates that will be harmful to users, and so on.

Removal of the "Witness" item from the community structure. Witnesses, as they are witnesses, have various benefits, e.g. bigger votes than people, while looking at the cryptocurrency against the background of others, their role is not special, unique. Practically all cryptocurrencies have Witness equivalent - Miner, Staker etc. It is simply a certain feature of a node than a privileged position in the network / society.

These are the most legitimate criticisms as I see them. But I don't see them being fixed with PoS.

Currently over 28% of SP is held by Steemit. Steemit and it's employees do not vote on witnesses. Switching to PoS would require us to run nodes and begin interacting with Steem in this manner. The public perception of this change would be a more centralized Steem.

Another problem with PoS is the requirement that all stake holders are block producers. Even if 5% of stake does not want to set up a node (and I think this would be a small estimate) means that we would miss 5% of blocks. The regular 3 second block interval is an important feature of Steem to power social applications. Loosing that consistency would be a blow to our reliability.

DPoS is the solution to this problem so that users can delegate their block production responsibilities to a user they trust. That is different than our implementation of DPoS, but is still DPoS nonetheless.

There have been other criticisms of our DPoS implementation that are valid (#953). There are other knobs we can tune (number of witness votes, number of witnesses in a round, elected vs timeshare witnesses, etc) without departing from DPoS that I think could drastically improve the security and perception of Steem's block production. I see tuning the parameters as the most likely avenue to address potential corruption and perception of witnesses being separate entities.

@IntinteDAO
Copy link
Author

I am assuming the reason you say that DPOS does not do this is because small stake accounts do not impact the witness voting much. They also will not produce often in PoS and will have very little say in the direction of Steem. Large stake holders, like in DPoS, will still control the direction of Steem.

I agree, but the truth is that even large accounts do not have to have anything to say. Witness as long as it is in the TOP20 decides for itself. He doesn't have to ask other people what they think about e.g. new features. He makes the final decision himself.

In PoS, however, everyone makes a decision by installing appropriate software. For example, if 80% of nodes don't support updates (Nodes that are installed by ordinary people), they reject blocks even by Steemit-supported organizations. It is the people who democratically (directly) choose whether a patch is good or bad.

Today, the only thing a user can do (if he doesn't like the update) is say goodbye, I'm doing power down. There is no power of protest or support for the changes.

The first legitimate criticism. Consider 75% of Bitcoin is controlled by 6 mining pools. Not to say that 20 witnesses makes Steem impenetrably secure, but there are far less secure networks out there worth a lot more. Again, I do not believe this is the primary problem affecting Steem's valuation.

I support (although this will change over time), but several mining pools have different tens of thousands of miners who are able to reprogram excavators for a few hours. However, here we are different, I don't really trust Witnesses (and in my opinion, it's good, because cryptocurrencies were created as a system without trusting third parties).

Currently over 28% of SP is held by Steemit. Steemit and it's employees do not vote on witnesses. Switching to PoS would require us to run nodes and begin interacting with Steem in this manner. The public perception of this change would be a more centralized Steem.

I don't agree. We are not able to specify how many Steemit tokens he really has.

We have an account such as freedom or pumpkin, who vote for the witnesses or delegate to bots. We don't know who it is, except for the fact that it's a very early account. Do they belong to Steemit? No evidence. Maybe 28% is the official value, but in fact it's 40, 60 or 80%? Who knows.

Then maybe instead of switching to PoS, let's change the value of the witnesses from TOP20 to TOP1000.

@mvandeberg
Copy link
Contributor

He doesn't have to ask other people what they think about e.g. new features. He makes the final decision himself.

I disagree with this. The top 20 is a form of elected representative government. If the large stake holders disagrees with a witness' opinion on a proposed hardfork, they can remove their vote from that witness and vote for a witness they agree with.

The problem here is that each account can have 30 votes, meaning 51% can control all of the witnesses. This is no more dangerous than a 51% PoS attack. However, it devalues the claim that hardforks require a super-majority of witnesses. If 51% of stake wants a hardfork and 49% does, then 51% of witnesses should be voting for the hardfork with 49% voting against it. I believe we can achieve this without base PoS.

Today, the only thing a user can do (if he doesn't like the update) is say goodbye, I'm doing power down. There is no power of protest or support for the changes.

This is untrue because of the reasons stated above.

I don't agree. We are not able to specify how many Steemit tokens he really has.

We have an account such as freedom or pumpkin, who vote for the witnesses or delegate to bots. We don't know who it is, except for the fact that it's a very early account. Do they belong to Steemit? No evidence. Maybe 28% is the official value, but in fact it's 40, 60 or 80%? Who knows.

Steemit's has gone on record in the past saying that we do not know who controls Freedom. We have been very public about which accounts we do control. If you distrust us that much, then I would be begin to wonder why you are petitioning us to develop this change in the first place.

Besides, this is counterproductive to the discussion. There is currently 28% of SP that you know is not involved in block production and is controlled by Steemit. Making this change would require that stake to begin to be used in that way.

Then maybe instead of switching to PoS, let's change the value of the witnesses from TOP20 to TOP1000.

I am not against changing the number of witnesses or how many witness votes accounts have. I think expiring witness votes could be a valuable change. We do need to be careful with how those numbers are tuned.

With a 21 block round, blocks are made irreversible after roughly 14 blocks. Irreversibility guarantees that enough stake is voting for enough witnesses that the stake holders implicitly agree those blocks are valid. If the number of witnesses increases without increasing number of votes per account, then we need to change irreversibility to not track block depth, but track percentage of approving stake.

It seems like the issue we are actually discussing is whether a pure democracy or a representative government is better. The discussion is much larger than blockchain governance.

@IntinteDAO
Copy link
Author

IntinteDAO commented Oct 21, 2019

I disagree with this.

I disagree with your disagree xd

they can remove their vote from that witness and vote for a witness they agree with.

True, but they can do it after the fact. Earlier (before the changes) this is not entirely possible, because the witness may be lying.

The second problem is what you threw in - the votes on the witnesses are not extinguished. Steem has 1.5 million users but only 28k (monthly) active (steemapps get this info).

Whether freedom, pumpkin and many related accounts belong to STINC we will never know. However, these accounts take an active part in the process of creating the future of Steem. If by some miracle it turns out that they belong to STINC, it means that the project is completely compromised.


Of course, we're having a purely theoretical conversation here.

The first thing about PoS is to cut yourself off from Steemit Inc. We can always say - yes, it was bad, but we decided to change it once and for all.

Node owners can block changes before they are made, knowing that no one (with a sufficient number of people) will introduce / force them.

A very interesting option for scaling in the future may be sharding, which probably looks more effective on PoS.

The problem is also that the Witnesses often abused the system themselves and, for example, created bidbots. I think they feel safe because DPoS doesn't work as it should.

@steemdevelopment
Copy link

steemdevelopment commented Oct 22, 2019

Why not just lower the votes they can have to 10 votes, 30 votes almost guarantees peoples stay up pretty high. With the prices being so low anyone can easily get a significant voting power.

Also, I find it hard to believe if we made it 10 votes per person. That anyone would risk powering down and spreading them selfs thin to lose a position. This control of the top could easily be solved with just a reduction to 10 votes.

Unless less there is some ultimate reason why 30 is the magic number. This would also give the community a chance to have a real effect on the top. Other than being in the highest 1% of the chain, so you decide how everything is run.

I do believe in dpos, though I think how it's used for witnesses is a bit off. There is a bit of consolidation of the chain's future in too few hands.

@graylan0
Copy link

graylan0 commented Nov 5, 2019

A digital democracy is a beautiful thing. What makes Steem blockchain so revolutionary is hardforking without chainsplit. If we continue down this path I envision a future in that we improve many communication systems. I call these governance systems Democratic DAO's. Lowering the amount of votes , increasing the top 20 to a top 50, or simply fixing a flaw is all possible with digital democracy. It is NOT POSSIBLE with PoS or PoW. To fix a flaw they must hardfork AND CHAINSPLIT ( very damaging to the network ). Although Steem is not perfect . It is still infected with an undemocratic (GitHub repo) just the same as BTC core is today. If something happens to steemit it would be nice to have a community driven and decentralized democratic repo system. Some basic versions of this exist in the public sector already. Although Steemit and the brainpower there can really innovate, and potentially break through into a new plateau versus what has been built already (storj uses a partially democratic repo for example). If a limited (witness) voting system can take us this far, I am convinced a repository staked voting DAO with some controls ( to prevent tyranny of the masses ) can accelerate us well into a future digital democracy.

@IntinteDAO
Copy link
Author

IntinteDAO commented Nov 6, 2019

@graylan0

Perhaps, but does that mean a lack of democracy, or even some kind of authoritarian rule? It sounded a little like the government in China and the people of Hong Kong. "You cannot protest because we do not have democracy.

I think chainsplit is a good option. Not because the division of communities is good, but because it gives freedom of choice. Today the system works and if you don't like Steem, go to Facebook or any other platform, Witnesses don't care.

I even have a hypothesis that your text is contrary to the cryptocurrency spirit.

@graylan0
Copy link

graylan0 commented Nov 7, 2019

Chainsplitting means that bitcoin/eth etc can not upgrade their code. Steem has upgraded to 22 major hard forks already. Bitcoin cannot fork because the initial code design combined with the network's unwillingness to improve code developed 10+ years ago by a guy who disappeared like it is some "holy grail" of cryptography. This grinds innovation to a halt. Things break and these large decentralized networks need upgrading over time. Chainsplits are a nightmare for anyone wanting a democratic and simple/secure way of conducting operations on such a mass globalized scale.

Steem has plenty of forks showing us how different features interact with the core code. For example Smoke removed SBD/market and changed around the old bandwidth system Steem used to use. It works for what the smokeians want to do on the blockchain. Steem and Smoke both enjoy the freedom (to use each other's code) and to also upgrade their own chains democratically. Hardforking with chainsplit spells doom in my humble opinion. https://blocktivity.info/ Tells us the CUI of Bitcoin and ETH are 54% and 84% with both having less transactions than Steem.

Democracy:
n. Government by the people, exercised either directly or through elected representatives.
n. A political or social unit that has such a government.
n. The common people, considered as the primary source of political power.

Tyranny:
n. Unjust or oppressive governmental power.
n. A government in which a single ruler is vested with absolute power.
n. The office, authority, or jurisdiction of an absolute ruler.

I'd argue that Steem has an early democratic form of governance and Bitcoin/ETH are both fairly tyrannical in their (ageing) deployments.

@IntinteDAO
Copy link
Author

IntinteDAO commented Nov 7, 2019

Chainsplitting means that bitcoin/eth etc can not upgrade their code. Steem has upgraded to 22 major hard forks already. Bitcoin cannot fork because the initial code design combined with the network's unwillingness to improve code developed 10+ years ago by a guy who disappeared like it is some "holy grail" of cryptography.

Chainsplitting is a violation of the principles of consensus established by (here witnesses) some time ago.

Bitcoin has decided to introduce changes that will not violate the consensus (and as you can see for 10 years - he's alive and well), but still introducing new changes in the system, Segwit, Lightning Network, RSK, and now Schnorr Signatures and Taproot.

Ethereum introduces Hard Forks update even and you can see that he is well. Sometimes, because of people's disagreement, old versions of the chain are alive (e.g. Ethereum Classic).

Tells us the CUI of Bitcoin and ETH are 54% and 84% with both having less transactions than Steem.

An operation, not a transaction. Bitcoin simply transfers money and Steem stores data.

Bitcoin/ETH are both fairly tyrannical in their (ageing) deployments.

But you can change that by introducing Hard Fork (if you think so), which you can't change in Steem. Since the introduction of HF21 / HF22, Steem has lost 10% of its users. Maybe they would develop the old version of Steem?

@KINGdotNET
Copy link

Network security. The whole Steem rests in the hands of 20 witnesses. This is very dangerous.

As @IntinteDAO wrote, the chances to see a move from DPOS to POS accepted by the 15/20 top witnesses are low.
Another solution, if we can not move away from DPOS, could be to increase the number of main witnesses to N (ex: 100) and split the current reward of the top 20 to this new top N

I support this idea. The blockchain network should be shared to many N witnesses not just the Top 20.
I hope to see this change very soon.

@mvandeberg
Copy link
Contributor

There was a fireside chat with a few witnesses and Steemit at Steemfest. In it there was a short discussion surrounding witness voting and potential changes to how voting works that could improve upon the current system. Moving from DPOS to POS is not discussed, but these ideas are a part of the wider discussion.

@mvandeberg
Copy link
Contributor

The blockchain network should be shared to many N witnesses not just the Top 20.

This could actually reduce network security. On Bitcoin, most exchanges wait for a transaction to be six blocks deep in the chain (confirmations) before they consider your transaction irreversible. Technically it is reversible, but one would need to possess a sizable amount of hash power to fork the chain and undo the transaction.

One of advantages of Steem's DPOS implementation is that transactions can be considered irreversible much quicker. 16/17 blocks or 48-52s as compared to an average of 1 hour for Bitcoin. To make the switch to POS, those confirmations would need to be stake weighted otherwise it would be possible for a minority stake to make a transactions irreversible. That is unacceptable in all cases.

Being realistic here, we would not be able to make the change to pure POS. There are many small users of Steem that have no desire to set up a node. The more realistic implementation would be like the current system, except for one witness vote per user and no elected witnesses. This is the simplest version of DPOS where each user's stake can be delegated to a single block producer to produce on their behalf.

The concept of rounds in Steem would likely still need to remain because you need to have some forewarning that you are about to produce a block (due to latency), but the round size could change. Shorter rounds would bring more accuracy to how often a block producer would produce given a percent of stake, but at an increased overhead of updating those data structures more often, as well as an increased chance of being scheduled at the beginning of a round and potentially missing a block due to latency. Increasing the round size might have benefits as well such as more predictability in block production as well as less overhead than a 21 block round. However, setting the round size to 1 would create a the purest DPOS experience at the cost of overhead. I do not know what the actual overhead cost would be, but it is easily testable on the TestNet.

If we can at least agree that pure POS, attempting to schedule social only users for block production when they have no intention, is not a viable solution, then we can look at the problem as a continuum of different variables where the current and proposed systems both exist.

The variables I have identified are:

  • Witness votes per user
  • Number of elected witnesses (0 being all witnesses are the current "time-share" position)
  • Round size
  • Vote expiration/decay solutions

If there are variable discussed here that I have missed, I will add them to the list.

I think it is useful to frame the problem like this because there are some changes that many stakeholders are in favor of that are better than the current system and increase security, even if it is not "full" POS as has been proposed.

@VIM-Arcange
Copy link
Contributor

The variables I have identified are:

We had a talk about voting power splitting (i.e. if I vote for 2 witnesses, they both get 50% of my vests, if 3 then each gets 33,33%, etc...). There could be an additional variable to enable/disable such vote-splitting if agreed by stakeholders. If enabled, then "witness votes per user" should be ignored.

Speaking about variables, do you mean hard-coded variable or consensus variable defined by witnesses (using witness_update similar operations)?

@IntinteDAO
Copy link
Author

This can change the TOP20 to TOP100 and all votes as well (75 witness votes are required for HF to be turned on, etc.).

@mvandeberg
Copy link
Contributor

Speaking about variables, do you mean hard-coded variable or consensus variable defined by witnesses (using witness_update similar operations)?

I think whatever the change is to the witness schedule is should be hardcoded, not witness votable. These change are more like changes to the constitution than maintaining the blockchain. There are too many corner cases for exploitation if a small amount of stake can change the witness schedule to something truly centralized in a short period of time without the ability to change it back without a historic fork of the chain. I think we can all agree that is the least desirable scenario.

@mvandeberg
Copy link
Contributor

This can change the TOP20 to TOP100 and all votes as well (75 witness votes are required for HF to be turned on, etc.).

If changes are made so that there are more elected witnesses than user have votes (either by decreasing the number of votes or increasing the number of elected witnesses) then hardfork voting needs to become stake weighted. For example, a long tail witnesses 25-100 currently accounts for 54.5% of the stake voting on the top 100. It is easy to imagine a scenario where the top 25 accounts for over 50% of the stake (we aren't far off) yet the bottom 75 elected witnesses could cause a minority fork.

This is the exact same scenario described above regarding stake weighting irreversibility.

@VIM-Arcange
Copy link
Contributor

There are too many corner cases for exploitation...

I fully agree with you and to be honest I started to think about such cases right after posting my comment.

@graylan0
Copy link

graylan0 commented Nov 22, 2019

then hardfork voting needs to become stake weighted.

I'm certain as the network continues to grow Steem will need a larger witness core. Can we expect the users to take the burden of going through dozens (or hundreds) of witnesses to find the best of the best and vote them to the top?

Another idea, from Athen's direct democracy, randomly select top witnesses in time capped renewable block periods (say 1 month, or 1 year) from a larger p2p witness pool, determined by missed blocks, community verified identity voting, and staked voting. I may be thinking a bit far ahead with that, current governance works quite well considering all of the factors involved.

The worry i would have with staked hardfork voting is how do you determine what is acceptable rages of participation and what happens if it's too low? Can it lock out the system? etc etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants