An essay on hard forks & the blockchain of emotions

in #blockchain6 years ago (edited)

Recently one of the words unspeakable f* word that many of us came across is "Hard Fork". But what is it in the context to Steem blockchain ?

This is an attempt to explain a hardfork as promised in the previous post Promise to the STEEM stake holders & community as a witness

In simple terms its about changing the behavior of a software. Lets take the case of the popular software from Google called Chrome browser. This browser is built on 2 components on a very high level. A runtime for Javascript, WebGL, HTML, CSS WebAssembly and a a physical area on the screen where the results of the run time. We can almost of it as an engine and car's chassis.


(from Google's Chrome Graphic Novel https://www.google.com/googlebooks/chrome/)


Without doubt Google's Chromium is a fast browser due to the design decisions like a faster engine.

Firefox from Mozilla foundation is arguably the original graphical web browser but it has lost out to Google's Chromium over the years. The primary reason was the engine. There were many other browser's like Opera which replaced their engine with Google Chrome's Engine. Such a replacements are major changes but mostly from the outside it the resulting browser will look the same.



In the case of Firefox also, theoretically its possible to replace the "engine" with Chrome's and get a faster browser. The result will be faster browser, but ideally it will maintain the same look and feel as that of older Firefox.

Essentially any major change to a software that is differing from the previous version can be called as a "fork". In the similar fashion, Windows 10 can be considered as a hard fork from the previous versions of the Windows OS.

Hard Fork and Blockchains

In the case of blockchains, we can consider as a a long chain where blocks are connected together. When someone proposes a change in the behavior of the blockchain software, a hard fork appears. Now, blockchains are "decentralized" & "democratic" by nature. Democrazy leads to different opinions. As intense the difference of opinion, crazier it becomes. The end result is two entirely different versions of software both claiming to be better than the other. Remember people arguing about iOS and Android, Nokia or Blackberry, Emacs or Vim etc.

There are numerous forks for chains like Etherium. Some of the chains like Etherium Classic died out due to lack of development support.

Its not always democrazy

Its important to note that not all the chain forks are due to "difference in opinions". There are cases like upgrades like what we saw with Steem's Hard Fork 20, Etherium Fork after an big attack, Upgrades to the Bitcoin chain etc.

Steem blockchain will need a Hardfork when we introduce SMTs.

Steem and Hardforks

Unlike many other chains, Steem boasts a large number of Daily active users who interact with the "data" stored with the chain. The users are attached to the data stored in the blocks than any other chain. Bhutan is a country which measures its growth interms of GNH (Gross National Happiness) as opposed to GDP. If we compare the blockchain "marketcaps" interms of "emotions" there is absolutely no doubt that Steem blockchain stores is the the number of blockchain. We have our happiness, stories, travelogues, photographs of our children, good news, parting messages from people who are not well, love stories & much more on this chain.


Steem is a blockchain of human emotions


The chain was pet named "Proof of Brain" and even though there is a shift from PoB to pure Delegated Proof of Stake I feel the pet name has become much more real than what the founders expected.

(Source: https://steemit.com/true-love/@rougebot/the-steemit-love-story-or-or-the-girl-i-love-this-post-is-about-how-i-found-my-true-love-on-the-steemit-platform)

While in terms of the sum total of emotions, Steem blockchain is the numero-uno, this has provided unique challenges to its development. I will not comment on whether this has impacted the development in anyway or not as I am too new here. There is definitely difference of opinions about the the transparency, speed of development, features in the major dApp Steemit.com etc. I am optimistic that this will resolved in the near future.

Though the chain might have become much more "emotion driven" than originally anticipated, it has an inbuilt mechanism to agree on something. Getting a group of people agree on something is a difficult process. Its human nature to form groups and make decisions in ways that's beneficial to groups of people. On a high level this is described in Byzntine General's problem and to address such grouping a consensus mechanism is devised for the witnesses.

For the blockchain to approve normal, regular actions a consensus of 21 witness nodes are needed. For specific decisions like a fork, support from the top 17 witnesses are needed. This is programmatically imposed on the witnesses. This means, if at any point in time all the top 17 witnesses agrees to run a specific version of the blockchain software, the chain will fork. This also means if there is a single entity controlling the top 17 witnesses, it will be possible to make them accept any software change.

Types of Changes

The most common changes in a hard fork is either fixing the bugs or adding new features. In certain cases like HF9 it seems there were cases of certain account authorities had to be changed. In any of the Hard Forks, the name of the currency will not change from STEEM to something else. There are also serial numbers or chain_id for any chain based on the Steem blockchain software. Many forks of Steem code base exists with different currency symbols and mostly without the SBD. GOLOS, Scorum etc are few popular examples. If we change the chain_id and also the currency symbol from STEEM to something else, then it becomes a new chain with no connection whatsoever with Steem blockchain. As far as I can think the only constraint to create a new chain with a currency symbol and chain_id is the need to follow the MIT Open Source Licensing terms under which the code base is shared. The resulting NEWSTEEM token and chain may or may not have the accounts from the old Steem blockchain.

Forking a blockchain for dummies

(In Simple 10 Steps!!!!)


.

\1. Decide the new coin name, do the "fork", setup a node and seed

\2. Bring up few more nodes - lets say, another 25 of them

\3. Fork Steem-js, Steem-python, condensor, watcher, pricefeed, beem

\4. Elect witnesses

\5. Setup a full node or two

\6. setup a faucet & condensor

\7. setup a discord server

\8. Setup Telegram, Twitter, bitcointalk, involve coingecko & others, do the PR

\9. Setup nodes for Exchanges & on board exchanges (technically)

\10. or create a Token in Bitshares & setup gateways if needed

Ok, Now lets try a quick hands on session.

For this demo, lets create 99th fork of HF20

Ideally you can change the name STEEM, Chain ID etc as well.

Oh, yea, beautiful new version.

Sort:  

I could not agree more with your theory of Blockchain and Emotions.
Very informative and interesting write-up.

Thank you :-)

this is really informative for me.
as part of this blockchain i want to know more about this.

This post has been rewarded with 100% upvote from @indiaunited Community account. We are happy to have you as one of the valuable member of the community.

If you would like to delegate to @IndiaUnited you can do so by clicking on the following links: 5SP, 10SP, 15SP, 20SP 25SP, 50SP, 100SP, 250SP. Be sure to leave at least 50SP undelegated on your account.

Please contribute to the community by upvoting this comment and posts made by @indiaunited.

very informative. It helps all.

This post has been included in the latest edition of SoS Daily News - a digest of all you need to know about the State of Steem.



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

You made more than 16000 upvotes. Your next target is to reach 17000 upvotes.

Click here to view your Board
If you no longer want to receive notifications, reply to this comment with the word STOP

Support SteemitBoard's project! Vote for its witness and get one more award!

Coin Marketplace

STEEM 0.16
TRX 0.15
JST 0.028
BTC 54384.85
ETH 2275.99
USDT 1.00
SBD 2.33