Steem: Construction of the Matrix

in #promo-steem6 years ago (edited)

Steem Blockchain presentation_ Construction of the Matrix (1).jpg

Welcome the part three of the presentation on Steem. You can find links to the previous two parts in the endnotes.

In this presentation, I will be exposing the structure of the Steem blockchain.


Steem Blockchain presentation_ Construction of the Matrix (3).jpg

My name is Jacques and I'm on Twitter as @JacquesWhales


Steem Blockchain presentation_ Construction of the Matrix (4).jpg

Last time we went over how to claim your reward tokens, what the different tokens do, and how to exchange your tokens for goods and services, or into national currencies.


Steem Blockchain presentation_ Construction of the Matrix (10).jpg

This time, I'll be going into details what the Steem network is, how it is maintained, and it's technical capabilities.


The Steem network is a little different from other social networks like Facebook, Medium, or Reddit. Those applications are built on top of a traditional network model whereas Steem operates on a Blockchain network model.

In a traditional network model, clients, or computers who want to sends a request to application servers, specifying which part of the data it needs from the master database. This either can be a static piece of data to be displayed, i.e a blog post, or a request to modify something in the database, like a vote.

The master database gets that request, does whatever it is that request asks it to do and send the resulting information back.

Steem Blockchain presentation_ Construction of the Matrix (6).jpg

This model is great for building things that do not require up-to-date or sensitive information like financial transactions. These servers are placed in locations close to the user and replicated across different locations to ensure a fast and consistent access to the server.

The problem with this model is that there is a struggle to keep all the database up-to-date at the same time. The databases not only have to communicate with the clients, but also other databases.

If a person is trying to modify the same section of the database at slightly different times on two databases taking advantage of the communication lag time between the two databases, which one should the database consider valid?

From the perspective of the two databases, both requests are "the first". But we know for a fact that there cannot be two "first"s.

This is especially a problem when it comes to financial transactions, where if a person already spent his money in his account on one database, let's call this database, "database A", taking advantage of the communication lag time, sends the same spending request to another database, "database B", because database B has not yet had the time to communicate with database A, the money is still on his account and he can spend the money again.

This model forces us to have one master copy of the database to resolve any conflicting requests.

Whichever transaction reaches the master database first, will be considered valid.

This creates a huge bottleneck and a weak point for the network. If everyone had to wait to use one database, one can imagine how slow that would be.

Having just one master database means that anyone that wishes to attack the network, have just one target to attack. If they hack the master database, they can take down the whole network.

More likely they will just overwhelm the master database with requests and thus make it unusable.


To solve these problems we need a mechanism to enforce continuous, sequential updates to be applied across all database.

That means each update must have a beginning and an end, of a data block of a fixed size. This ensures that we can eliminate any inconsistencies within a block.
No one can spend what he has in his account twice without one of the transactions being rejected.

We can further establish the sequence of the changes to be applied by having each block update reference to the last block update, creating a chain of consistent updates.

This, in essence, is the blockchain model.

Steem Blockchain presentation_ Construction of the Matrix (7).jpg

In this model, databases connected to the same network can be sure of the sequence of changes needed to be applied to the database. e

Even if there is a communication lag time, they can not fool the network by applying conflicting updates.


There are two aspects of the network. The software and the hardware that runs the software.

The software that powers the network is called the Steem blockchain protocol. This is an open-sourced software protocol it establishes a connection to the other computers that respect the rules about how information is to be transmitted and maintained, and becomes a part of the network.

We called these computers 'nodes'.

Each node is responsible for collecting, verifying, and adding to, the database. This database is replicated and constantly updated in all of the nodes.

These nodes have to be reliable and capable. Since they collectively make up the network. When these nodes fail, the network goes down.

Though theoretically any modern computer could run the Steem network protocol, it is best to have computers that are powerful and reliable system to prevent the network from going down.

Perhaps even more importantly, are the people who can be trusted to maintain these nodes.

Special nodes, called Witness nodes are nodes that have been agreed upon by the users of the network to allow them to specify which data blocks are valid, and is to be added. These Witness nodes sign each block updates with their digital signature, signaling to the rest of the nodes to accepts and applies the updates from these data blocks and not any other.

These Witnesses also have special powers that other nodes do not.


Steem Blockchain presentation_ Construction of the Matrix (9).jpg

Witnesses are responsible for the not only keeping the network running, but they also decide on the monetary policy and the technological direction of the network.

There are 21 Witnesses and they are chosen by the users of the network. Anyone can apply to become a Witness, but only the top 20 are allowed to produce blocks consistently. The last Witness is chosen at random; their chance of being chosen is relative to their popularity.

In the rare case that someone who wants to attack the network, instead of targeting just one Witness they would have to go after everyone who has a chance becoming the random Witness, thus dramatically increasing the difficulty needed to take down the network.


They are chosen by a process called Delegated-Proof-of-Stake, or DPoS for short.

Stake is the amount of Steem tokens you have vested, or locked up for a period of at least 3 months in the form of Steem power.

The network surveys all the accounts and the account with the most vote power, and who have applied to be Witnesses and their signatures are recognized as valid Witness signatures. The block updates they produce will be added to the blockchain.


Rounds.

Block updates are generated in rounds. In the beginning of each round an order is given to the Witnesses. Within each time-slot, they are responsible for collecting, verifying, and finally broadcasting the data block update within that time slot.

If they fail to do so, the data and transfers made within that time will be forever lost.

At the end of each round, the orders are shuffled and another random Witness is selected to the 21st.


Steem Blockchain presentation_ Construction of the Matrix (11).jpg

What are the capabilities of the network?

The metric traditional used to measure blockchain architecture is transactions per second. This is basically how many data update requests that can be processed within a second.

Reddit, one of the most popular site on the internet, receives updates requests at about 250 requests per second, or 250 transactions per second.

The Visa payment network, which is technologically designed to solve the same problems that blockchain architecture is designed to solve can process, handles average about 2,000 transactions per second.

The graph below show the number of transaction each blockchain is currently handling.

blocktivity 4.10.18.PNG

With increasing number of users added to the network everyone, will it ever happen that the network simply gets overloaded?

If the network is open to all to use, wouldn't someone abuse that by flooding the network with data, effectively overwhelming it and making it unusable for other people?

As a regular user of the network, it is unlikely that you will ever experience this, but you are limited to how much data you can send and have it be processed by the network. Your limit is directly proportional to the number of tokens you have staked within the network. However, when the network is under-utilized, meaning the amount of data being uploaded and processed has not reached its maximum, the network allocates you with more bandwidth, or the ability to upload data than your stake. When the network reaches its maximum capacity, it'll limit you to your allocated bandwidth as a proportion to your percent stake in the network.

That means at no time you will be prevented from using the network, only that sometimes you would be limited to use only your share of the network.


Learn more about:

Blockchain vs Database

Delegate Proof-of-Stake and Transaction-as-Proof-of-Stake

More on Transaction-as-Proof-of-Stake

Witnesses


Post end notes


If you would like to know more about me and what I'm doing you can read my introduction post here.

Read my series on the Steem blockchain:

Steem: Welcome to the Matrix. Part One

Steem: Operating on the Matrix. Part Two

Steem: Construction of the Matrix. Part Three

And you can contact me in the following way:

Steem Blockchain presentation_ Entering the Matrix (19).jpg

Sort:  

Congratulations! Your post has been selected as a daily Steemit truffle! It is listed on rank 6 of all contributions awarded today. You can find the TOP DAILY TRUFFLE PICKS HERE.

I upvoted your contribution because to my mind your post is at least 25 SBD worth and should receive 153 votes. It's now up to the lovely Steemit community to make this come true.

I am TrufflePig, an Artificial Intelligence Bot that helps minnows and content curators using Machine Learning. If you are curious how I select content, you can find an explanation here!

Have a nice day and sincerely yours,
trufflepig
TrufflePig

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.029
BTC 60811.28
ETH 3369.34
USDT 1.00
SBD 2.48