You are viewing a single comment's thread from:

RE: Letter to Witnesses - Do not run Steem Hard Fork 23 - HF 0.23.0

in #hf234 years ago

I think with the way dPoS works it's almost impossible to continue on a legacy chain like that, which is why Steem endured 20+ hard forks without an actual chain split. Once you have that 17+ top witness consensus, now controlled by Justin Sun, any outliers running outdated versions will simply have blocks rejected from the chain. I believe Hive is less a fork in the truest sense, and more a new chain with the legacy open source Steem data imported.

Sort:  

I think with the way dPoS works it's almost impossible to continue on a legacy chain like that, which is why Steem endured 20+ hard forks without an actual chain split.

Interesting. So what happens to users who continue with running 0.22 Steem nodes? Do block production cease so the chain is essentially frozen?

This post was helpful but didn't fully answer my question.

Take this with a grain of salt because I'm no expert, just read a lot on here over the years!
Here's my understanding. Witnesses running older versions may in fact coexist with current ones in a number of ways as many transactions might cause no conflict and the basic code is compatible in almost every way.

Take for example the recent 22.888 fork which froze the ability of many accounts to transact. Witnesses running 22.888 had software that explicitly denied transactions from a list of accounts. Witnesses running 22.5 did not deny those transactions. A supermajority (17+) of top witnesses run 22.888 making it the "law of the land" but there are some backup witnesses who regularly get scheduled to produce some blocks and are still running 22.5.
Just like when you make a bitcoin transaction and it requires so many "confirmations" to occur on the network, it does take several blocks for a transaction on the Steem blockchain to become confirmed and "irreversible." So... if a witness running 22.5 picks up a block containing a transaction from an account frozen under the 22.888 rules, it will allow the transaction, but on the next block 3 seconds later, a 22.888 witness sees the transactions and does not confirm it. This doesn't cause a chain freeze, the blockchain simply drops the transaction as invalid because it didn't meet consensus. There was an interesting post that I can't find again that calculated that it may in fact be possible for a "frozen" account to sneak transactions through by continuously broadcasting them to the chain and waiting for that rare combination where several 22.5 running witnesses would pick it up in a row and therefore irreversibly confirm it! People on Steem have had a lot of problems over the past couple months with votes and comments "disappearing" or being flaky I believe precisely because of the mishmash of witness versions being run, and some actions being dropped out before they are fully confirmed.

I believe major hard forks and revisions have a way of excluding those that don't upgrade once they become accepted by that 17+ supermajority. Looking at the Steem witness list right now, I see that several "OG" Steem Witnesses did enable their nodes leading up to the 23.0 Hard fork, and are running 22.1. They did produce some blocks 15 hours ago, just before the passage of the 23.0 fork, but haven't produced any since then. I believe the dPoS system that "schedules" the witnesses for block production is smart enough to exclude those who have not upgraded to the latest consensus hard fork.

Chain freezes and halts occur when something goes really wrong. Basically the chain has to be presented with a "no-win" situation, usually caused by an outlier glitch in the code, where a block must be produced but it recognizes that it would somehow irrevocably break consensus in some fashion. Then it halts the chain as a manner of protection.