Steem blockchain code changes for humans

in #witness-update6 years ago (edited)

Occasionally people ask me what are the changes happening (if any) in the Steem blockchain code. One example is the below discussion.

As a Steem Witness, I feel obliged to explain my limited (& may be wrong) deductions based on the code changes to the community. This is an attempt along the lines.

The discussion which prompted me to think in this direction is shared below.


@surpassingoogle was discussing about @teardrops SMT & a part of the discussion below.

.
surpassingoogle:
it (@teardrops) will e used across all three interfaces
very powerful

bobinson Last Thursday at 6:42 PM:
it can be ...
It will take some 6 months I think

surpassinggoogle Last Thursday at 6:42 PM:

i mean being able to build a blockchain
smt?

bobinsonLast Thursday at 6:44 PM:
yes

surpassinggoogleLast Thursday at 6:44 PM:
the whole version or lite?
bobinsonLast Thursday at 6:45 PM:
whole version
right now they are doing the work for RocksDB integration

surpassinggoogleLast Thursday at 6:45 PM:
is that still going to be built?
i mean the whole version
how long do you think more before rockdb based on the progress you monitor

bobinsonLast Thursday at 6:49 PM
By Feb end

surpassinggoogleLast Thursday at 6:49 PM
oh awesome
but how about smt lite, will that come out first?
or have they decided to go for the full version instead?

bobinsonLast Thursday at 6:50 PM
I am not sure about the smt-lite. Confused now .. if I am able to recollect I will update
RocksDB will come first for sure


In a nutshell, the questions and doubts which everyone asked were the following

1. What is the current work being done on the Steem blockchain ?

From my limited observations and the automatic inspection (CI - CD) I have setup, the recent changes are all towards RocksDB integration. Essentially we have to "connect" the blockchain to a database called RocksDB.



The arrows from left to right can be thought of the pipes connecting the blockchain. Its going to carry the content that is not required for the house keeping of the blockchain to a long term warehouse. The RocksDB database is such a long term warehouse which can store large amount of "things". Mira can be seen as the pipes and as of now, we are doing the plumbing to transport over flowing items from the blockchain to the warehouse. Looking at the speed of commits at the Github were the work is done, a wild guess is that the work will be completed by Feb end 2019.




RocksDB as explained by @blocktrades and also by steemit / @ned is a great addition to the long term sustainability of the blockchain. Such a mechanism is useful for any blockchain and this work is need of the time. In my personal opinion, even without the cost cutting measures this is indeed very much needed.

This work is going to take time & even the "Sword fish trick" is not going to speed up & patience is needed. If someone things this can be done faster, they are missing the "girl in the red" just like in the hottest hacking/cracking scene screenshot shown below.

(The uninitiated are welcome to watch the hottest hack seen here :

2. SMT / SMT-lite

Well, Atleast from the repository I am not able to see much happening in that direction. If this deduction is wrong, whomsoever knows more, feel free to correct me.

3. MacOS support

As I had written earlier, it was not easy to build the Steem source code in macOS due to missing few dependencies (zlib, bzip2) and a major tool (boost 1.60.0. C++ library to be precise)



4. Memory handling bugs were fixed.

The Steem source code had few bugs which could have been exploited (though very difficult ) & this major security fix also was pushed in the December time frame.

Summary

In general, there is quite a lot of work happening in the blockchain side. Irrespective of the bearish market or anything else, this is indeed a good development. Personally, these developments are much more valuable than the Etherium hard forks happening under various names.

--

Steem witness Appeal

I am a Steem witness & if you think I can add value to the chain, please do consider voting me as a witness. Every vote counts and this month I am hoping to pay the infrastructure bills with the revenue. Thanks!

Sort:  

Thank you for the updates Bob. Great to know the devs are active. I wouldn't be able to tell if any work is being done even if i checked it out myself. I don't understand all the lines of weird-looking codes...

If i needed to become a contributing developer on Steem, what would i need to know?

I am happy that its useful atleast to certain extend.

If i needed to become a contributing developer on Steem, what would i need to know?

The blockchain is written in C++ and uses Boost.org C++ libraries. For compilation it uses Cmake and make. Further the use of various data structures and construct from Boost libraries is quite extensive. Apart from the new RocksDB integration and the adapter, there is also an in-memory database called ChainBase which is essentially the blockchain state in memory. Apart from the blockchain code where it maintains the consensus, other parts like witness, rc etc are written as plugins. P2P (Peer to Peer) component ensures the data being sent and received from other nodes in the network. The APIs are essentially exposed by the above mentioned plugins. The final piece of the puzzle seems to the cli_wallet tool which is one way to interact with the blockchain.

In general either hands on experience with C / C++ and experience in UNIX network programming I assume is needed to start contributing to the Steem code base. (Computer science educational background or self learned will be quite helpful and make one efficient)

Neatly explained Bobby. 😊

Posted using Partiko Android

Thank you :)

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.




This post was shared in the Curation Collective Discord community for curators, and upvoted and resteemed by the @c-squared community account after manual review.
@c-squared runs a community witness. Please consider using one of your witness votes on us here

Thank you very much for the update @bobinson, every piece of news about progress is very welcome:) Nice touch with the Swordfish hack scene also, lol:) Voted you for witness, keep up the good work.

This post has been rewarded with 100% upvote from @indiaunited-bot 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.

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

lol - we watched this from F-dash were NSFW was not an issue ;-)

In a sense, Steem is developing a "Side-database" a way a sidechain would be used?

Posted using Partiko Android

"Side database" is a good way to put it IMHO. Another way to look at is how databases like Timesten is used for in-memory, short term, frequently needed data sets in telecom networks. The blockchain will act like the in-memory database with all the "consensus" data.I believe this is not as complicated as a sidechain.

The usage of RocksDB is excellent choice as its a proven database within google as BigTable and then developed and actively used by Facebook, Google etc.

@blocktrades : If you have time, your insights will be great in this context.

A great post Bobby. I guess RocksDB should do wonders in data manipulation. I personally feel that the current APIs are not that robust and some of the DApps have timeout issues because of the call back response. Happy to see continuous improvements happening to the Blockchain.

Posted using Partiko Android

I think I wasn't even a teenager when I caught Swordfish on TV.

Coin Marketplace

STEEM 0.20
TRX 0.24
JST 0.037
BTC 96071.21
ETH 3327.74
USDT 1.00
SBD 3.21