One of the most important tasks every Steem account should take seriously is voting for witnesses. This is especially important the more Steempower an account has.
However, doing so takes some level of knowledge, otherwise, witnesses might be voted purely on subjective matters. "Oh, he's so nice in his videos." And in the past, this didn't always work out.
But why is this important and what exactly are witnesses?
Now, before I get into these questions: let me first explain what a blockchain is, to make sure we have all a similar basic level of understanding (you can skip this part if you want).
What is a blockchain?
First off: Steem is a blockchain, which is (simply explained) an immutable database. What does this mean?
Well, I can't just go to the database record of my account and change my Steempower from 10 to 1000, hence the immutable part.
Steem was created with rules hard-coded into the software and these rules have to be followed; in this sense code is law rings true. Additionally, the rules can't be removed, only changed where new rules are being added. The latter often referred to as blockchain forks, but that is another topic altogether.
In cryptocurrencies, the immutable database is called blockchain because all of its data is saved in blocks, and in Steem a new block is generated every 3 seconds and added to the previous one thus creating a virtual chain.
Take a look at the graphic below.
Taking Steem as an example (block-numbers are random): if you upvote this post, the
vote (which is a transaction) is saved in block 1 and after 3 seconds, the next block, 2, is created.
Technically, the block 1 at that time is not irreversible. But after 30-60 seconds - we would be at block 11 to 21, it is irreversible. Which means: you are not able to change the data ever.
Now, if you wanted to remove the vote, you would create a new vote transaction, with 0% (on Steemit it looks like you unvoted, but what you actually do is making a new vote with 0%). This wouldn't remove your previous vote, but replace the effect on the post with the new one.
So far so good, but since Steem is decentralised, there is no central server that is running Steem to - for example - create these blocks.
And this is where witnesses come in. (you can skip this part if you want).
What is a (Steem) Witness?
Different blockchains have different ways to validate these transactions/blocks. Bitcoin uses proof of work (POW), Ethereum is using a hybrid between POW and proof of stake (POS) but will switch to POS eventually.
And blockchains like Bitshares, EOS and of course Steem - are using something called
Delegated Proof of Stake (DPOS). Very simply explained it means the following:
Selected individuals by the community (witnesses) validate and sign blocks. This is being done by running a version of steemd (blockchain program) on a server.
This job of securing the network is crucial and sensitive as bad actors, witnesses with bad intentions could jeopardize the whole blockchain - for example through an 51% attack.
Now, there are hundreds of witnesses, but only the TOP 20 are the main witnesses, while the rest are backup-witnesses. Every TOP 20 witness signs a block roughly every 1 minute, while the backup witnesses are rotating. And the more voted stake a backup witness has => the more often he will sign a block.
Take a look at this screenshot of the witness schedule:
On the right site is a complete list of all backup witnesses in the TOP 200 and on the left side is the current witness round with TOP 20 witnesses and 1 backup witness.
Imagine that this is a race and the more voted stake a witness has, the faster he is. That's why some witnesses sign 5 blocks while another witness hasn't even signed one.
TOP 20 Witnesses are also the decision-makers in terms of accepting new hard-forks (new updates to Steem), where 17 or more have to run this new version as only then it's valid.
But how does someone become a TOP 20 witness? And how can you influence it?
That's where voting comes into play.
Voting for Witnesses
The more Steempower you have, the more influence your vote has. This is both true for voting on content and voting for witnesses.
1000 votes of accounts with 10 Steempower is less influential than 1 vote of an account with 11,000 Steempower.
And the more stake a witness is receiving via votes, the more often he is producing blocks and the higher up in the ranking he is.
Now, as I wrote in the beginning, it is very important that you know who you're voting for and why. It's obviously your decision alone, but bad voting decisions can incentivize bad witness behaviours and reduce the security of the network we all care about.
And on the other hand, witnesses are being paid for their work and supporting the right witnesses, can increase the value of Steem indirectly. The best witnesses have projects that bring value to the ecosystem or support initiatives with positive impact too.
How to evaluate Witnesses
As I've written in the beginning, evaluating witnesses requires some basic knowledge, which is what I want to talk about & teach right now.
While there are multiple factors which can influences decisions on who to vote for, there are some very important, fundamental factors, which I personally call Witness Infrastructure.
As you should know by now, a witness is an individual or team that is running steemd on a server. Without this, we wouldn't have a blockchain.
When Steem was very new, this was done mostly by Steemit Inc themselves, but as Steem grew, external and individual witnesses created their own infrastructure, which is important for a decentralised blockchain.
If we'd have only 1 server, a possible attack would be very simple, but achieving control over the majority from TOP 20 witnesses is a lot more difficult, but only if those TOP 20 Witnesses are good actors and take their Witness Infrastructure serious.
Additionally, if 11 of the TOP 20 Witnesses were to fall out somehow, the next backup witnesses would be used in their place and active ranks would be changed accordingly.
So as you can see, backup witnesses are just as important.
Now, what exactly do I mean with witness infrastructure?
Every witness has to run at least 1 server with steemd. And depending on how high a witness is ranked, additional backup servers should be available.
In my case, I'm signing a block roughly every 40 minutes, so I have an additional backup-server, which would take over if my primary server were to fail. And a TOP 20 witness, who is signing a block roughly every minute, should think about having a 2nd backup server.
Additionally, the location where the servers are is also crucial:
BAD: if all of these servers are from the same provider and in the same data center.
NOT GOOD: if all of the servers are from the same provider but in different data centres.
GOOD: if the servers are in different data centres and from different providers.
PERFECT: if one or more of the servers are hosted by the witness themselves or with an exclusive partner, meaning physical access is possible.
When I started out as a new backup witness, my servers were from the same provider. However, the more votes a witness gets, the higher the responsibility and especially as a TOP 20 witness, using the same provider for all servers is not acceptable in my view, as it creates a weakness on the infrastructure.
And if you're wondering how you know whether or not a witness is making sure his setup is at least GOOD:
Normally this info should be available in the witness-introduction post and/or in witness-updates and you're not really able to know whether or not the witness is using different providers.
However, when a witness is inactive for more than a day or the ratio of missed blocks in comparison to produced blocks is high, chance is there that he has not the correct setup. Especially in edge-cases, where a data centre is unreliable.
Additionally, a witness should also run a seed node, which is very similar to a normal witness server, it also runs steemd but without witness parameters.
A seed node is required for witnesses to connect to and get their data from. Which means:
No Seed Nodes = No block will be produced = Blockchain halts = Very bad
You can check all the available seed nodes here: https://status.steemnodes.com/
Keep in mind that before servers are listed there, they have to run smoothly for 1-2 months. For example mine is at seed.smartsteem.com:2001, but it's too new that's why it's not listed yet.
RPC nodes are similar to witness servers as well, but without witness parameters and with more tools, for example, to get account data from the blockchain. They are also important, however very costly and most of them, are somewhat slow and unreliable.
Nevertheless, if a witness is hosting an RPC node as well, you can be surer that they're taking their job seriously.
Check the lists of RPC nodes here: https://geo.steem.pl/
For the next point, I'll use the site https://steemian.info/witnesses. I've made a screenshot and highlighted a few key areas.
GREEN: This area is for the witness-names and the ranks. In addition to displaying if a witness is currently disabled (not producing blocks), which can sometimes happen for a few hours to a few days. Now in the case of @jerrybanfield, who has disabled his witness over 2 months ago, this duration should be enough for anybody to revoke their votes.
BLUE: In this area, you're able to see the number of votes a witness has received and how much stake (MV) those included.
ORANGE: This area is also important, but can be a bit misleading. Missed blocks happen when a witness is scheduled to sign a block but isn't doing it (e.g. if the server crashed), then a missed block is added. Now, the longer somebody is a witness, the higher the chance of missing a block. Especially for TOP 20 witnesses, as those are signing one block roughly every minute in comparison to backup-witnesses who are producing one block every 20 minutes to every 1-2 days, depending on the ranking. So this number has to be taken into consideration very carefully when deciding who is a good witness. (You can use the Witness Tool from https://steemworld.org for that)
RED: Now this is very important. As I wrote before, a witness is somebody who is running the steemd program on a server. And this area displays which version of steemd the witness is running. Generally, if the number is grey AND lower than other numbers, it normally means that the witness is running an old version, which is not good. While there can be reasons why a witness chooses to do so, in most cases it's important to run the newest version. You can always find the newest releases here: https://github.com/steemit/steem/releases/
YELLOW: Another task of a witness is to run a price feed based on multiple exchange values, which is very important as this value is taken for multiple essential calculations (How much your vote is worth, how much Steem you're getting paid out as rewards, etc.)
Now, last but not least, another important factor is the competence and technical experience as a witness. If sh't hits the fan and Steem is being attacked through an exploit or maybe even halted (which already happened), you need witnesses that know what to do.
Who is able to build steemd from source (manually), without relying on outside help.
Or who are able to code on the blockchain themselves and/or review other changes (for example from Steemit Inc.).
Keep in mind, blockchains are no joke. Steem is worth hundreds of millions of dollars. And for that, you need people or teams who have the right experience.
Obviously, not everybody has to be as experienced as somebody like @gtg, but for example outsourcing the technical aspects of a witness (if it's not within the team) is a no-go in my book, and could spell disaster if an emergency was to arrive.
While the witness infrastructure is the most important factor for me personally, there are other elements we must consider that hold a lot of weight. Many witnesses are very effective at creating and leading initiatives, the most successful ones on STEEM are fundamental for user engagement, retention and of course mass adoption.
This is exactly why it's fair to consider some of these initiatives when we are deciding who to vote for. Witnesses you could say, come in all flavours, with some of them being amazing programmers/developers and others creating communities that have become a core element of the steering experience.
And I'd even say, witnesses that are successful on Steem have fewer incentives to be bad actors.
So with that said, here area few example indicators:
- Active on Steem
- Created/creating projects/communities that bring value to Steem
- Is actively developing software for/on Steem
- Taking a stance on important topics related to Steem
- Witness age as in how long an account is running a witness; the longer, the higher the chance that the witness has more experience, taken part in more hard-forks, etc. (Especially in combination with produced/missed block ratio)
Now there are of course more indicators and I'm interested to get to know some of yours in the comments.
Still not sure?
If you still don't know who you should be voting for that is completely fine. As a matter of fact, there is a very responsible way for you to use your influence and support good witnesses doing their work: You can proxy your witness votes.
When you set up a voting proxy, you are basically having another Steem user decide who you would be casting your vote for. If you are new, you could proxy your vote, delegate this important task, to an experienced user or to a witness that you know and trust.
It's important to know you get 30 votes, and they do not affect your upvote power on content, they are completely independent.
I really hope that this post and knowledge will help many of you to understand better what Witnesses of Steem do, why it's important to choose good ones and most importantly: how to find them.
With that said:
Keep on steeming!
Primary Node: 128GB - v0.20.0 | Backup Node: 64GB - v0.19.12 | Seed Node: 64GB - v0.19.12
Projects I've developed on Steem:
Smartsteem.com > Investment & Promotion Service on Steem
Steem Chat-Wallet & Witness Essentials > Github: https://github.com/therealwolf42