A Full Steemit User's Guide to Steem Witnesses

last year

top

A full-scope article to Steem witnesses and voting to approve them.

The Basics

Steemit.com is a social blogging platform powered by a decentralized blockchain called Steem. The Steem blockchain produces blocks in 63-second rounds: 21 blocks per round at a target of 3 seconds between blocks. A decentralized blockchain needs a varied set of people running computers to create these blocks. There are many solutions to this, and Steem uses a consensus mechanism called Delegated Proof of Stake, or DPOS.

In the DPOS system, what are called witnesses in Steem are delegated by the collective Steem Power-weighted witness approval votes from Steem accounts. There is a limit of thirty active witness votes that any account can make to prevent abuse, but these votes can be added or removed at any time. The top 19 witness accounts with the most witness votes are delegated to produce a block every round. That leaves 1 block to be produced by a backup witness, and 1 block to be produced by a miner account every round. The backup witness is a proportional-to-approval timeshare of all witness accounts below the top 19 that have votes. This means that every account that has witness votes but is not in the top 19 have a probability to produce a block each round equal to their witness vote share versus the other witness accounts also not in the top 19. A miner witness is an account that has provided proof-of-work by mining with the Steem client to enter a queue to generate a block.

Witnesses

Witnesses are generally voted for because they are trusted members of the community, positively contribute to Steem and Steemit in many ways, are qualified and experienced in administration of servers, and are experienced in cryptocurrency networks and software. Witnesses are expected to keep a block-producing Steem node running 24/7/365.25. They are also expected to provide an ongoing price feed of the value of STEEM tokens in U.S. dollars, set the mininum Steem Power deposit to create an account, set the APR% for the Steem Dollar interest rate, and in the future might set additional network variables. Witnesses are also strongly encouraged to run a seed-node to provide the blockchain to syncing clients.

Witnesses are rewarded for these qualities, services, and of course running their node by getting powered up by 1 STEEM for each block they produce. By being paid in Steem Power, witnesses are further incentivized to be committed long-term and also to contribute to Steemit curation.

Voting

So you'd like to join in the fun and vote to approve a witness or thirty? Great! But don't vote blindly. Here's how to find out more about the people you are thinking of approving.

steemd.com/witnesses

Steem witness @roadscape's steemd.com is an invaluable resource to get in under the hood of Steem. The witness page provides most pertinent information relating to the top 100 witnesses by approval votes.

list
I'll just show the top 6 here for illustration

As you can see, the list is ranked by approval votes and the percent of network SP that votes for them. It shows how many blocks they've missed since the beginning, the last block number they've produced, a link link to their witness URL, the "fee" (not really a fee since it goes to an account as SP) for new account creation, the price feed, the Steem Dollar APR%, and version of the steemd node software they run. Each witness account name on the list is link to their steemd.com page.

Deciding who to choose (warning: pfunk opinion ahead)

Witness URL

It's my own opinion that unless you know them already, the witness URL link is the most valuable way to find out if a witness is worthy of your approval. Most often this is a link to a Steemit post with a little bit about themselves, the contributions they make to Steem(it), and often an explanation of their hardware, hosting, and ability to expand to reassure everyone they'll be up to the challenge of higher loads over time and aren't running their node on a shared AthlonXP server in Madagascar.

Activity

Another thing I like to see in a witness is regular activity on Steemit. A witness needs to run a reliable node and there is great value to that alone, but I want to see more than that. I check a witness' account page on steemd.com to see that at the least they're actively curating on Steemit, and if posting even better. Note: some witness accounts are dedicated for witnessing such as witness.svk and smooth.witness. svk also uses another account with a large stake for curating.

Price feed

Maintaining an accurate price feed is important, because it's necessary to have an accurate USD peg of STEEM tokens to the Steem Dollar on the internal market. Compare the price feed of each witness to the general average, or to your own calculation or source.

Version

Finally, the version of the node that each witness is running will generally have a consensus, although presently there is not complete consensus on a curation rewards issue, resulting in a few different versions being run simultaneously. Just make sure whichever node version is reported is up to date with the current blockchain and isn't out-of-date past a hard fork.

Approval voting

Steemit

When you've decided that you want to vote to approve a particular witness, go to Steemit's Top Witnesses page find their account, and click the up button, turning it green. To unvote, click the button to make it grey. Remember your account is limited to approving 30 witness accounts at any one time (vote changing is unlimited however).

vote
Top 10 showed here for illustration, but the page goes to 50.

Note: if you are logged in with your posting key (see this post to find out why it's a good idea), you will get an error saying you need an active key. You will have to provide your active or owner key to make the witness approval.

Command line

If using the command line cli_wallet, you vote for accounts using the vote_for_witness command. If for instance you wanted to vote to approve me, you would use this syntax: vote_for_witness youraccount pfunk true true. The syntax for unapproval is vote_for_witness youraccount someotherguy false true.

Proxied voting

For now, this is command line only. I am not sure if it's planned to eventually control this function on Steemit.com. You can set your account to vote for whatever witnesses another account votes for by setting it as a proxy. This is useful for people who have multiple accounts with decent stakes (such as miners) and could also be used I suppose if you trust another person to vote responsibly. The command and syntax are set_voting_proxy childaccount proxyaccount true.

Ongoing curation of your approvals

Be sure to regularly check back on steemd.com's witness page to make sure the witnesses you vote for continue to meet your standards of witness approval. Unvote them if they don't.

Becoming a witness

If you think you've got what it takes, @steemed wrote an excellent guide here: Essential Guide to Becoming a Steem Witness.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  trending

Thanks, this post is very helpful.
HOWEVER, what I am missing here, is how transactions on the blockchain are handled, who handles them and how many nodes are involved in keeping the blockchain online in the world at any given time. (Node list online? I see Seed Nodes, but not sure if that's just the top few nodes)

I see articles that say 25,000 ETH nodes are active, compared to BTC 7000+ and I wonder, how does that compare with STEEM and how will that look in the future, assuming Fabric is launched, etc.

·

Transactions from Steemit are signed by the browser locally, sent to Steemit's servers, forwarded to their node, and then are broadcast to the peers their nodes are connected to. Each Steem node (seed nodes, witness nodes, API nodes, any node) is broadcasting the transactions it sees and also sharing node addresses with other nodes. The witness nodes get the transactions, verify they are legitimate (like other nodes have checked), and include them into a block when the account they are configured to generate from are scheduled to generate a block.

As for node count, I don't know. If I had to guess I'd say at least 100. More is obviously better and more robust.

·

Hi,
I'm really happy to get such a good guidline from your post.Thank you

'The Steem blockchain produces blocks in 63-second rounds: 21 blocks per round at a target of 3 seconds between blocks'

'and of course running their node by getting powered up by 1 STEEM for each block they produce.'

Does this mean the top 19 witnesses (and backup) get 1 STEEM a minute?

Thanks!

·

The witness pay was changed in December 2016 for full time witnesses to less than 20% of that. For a top-20 witness, it's currently something like 0.18 SP/block generated and falling. For a backup witness, it's something like 0.9 SP/block and falling.

·
·

Great. Thanks for the information. Just too late to make it to my blog on Witnesses, but good to know none the less. Being honest, i couldn't work out if (on the old pay scale), if the top 19 were being paid 1 Steem every minute, but the top 19 would change every minute, meaning the same 19 weren't being paid every minute? uhh, ya, think that makes sense?!

Added to Awesome Steem

Thanks pfunk, I feel like I understand the whole witness thing a lot better now, just a couple of clarification questions.

The Steem blockchain produces blocks in 63-second rounds: 21 blocks per round at a target of 3 seconds between blocks...
The top 19 witness accounts with the most witness votes are delegated to produce a block every round.

So is the Steem blockchain different from the Bitcoin blockchain; I thought a block took years to produce; or am I confusing terminology?

Is the entire blockchain spread over just 19 accounts; I thought it was meant to be hundreds? Will that be the case in the future?

They are also expected to provide an ongoing price feed of the value of STEEM tokens in U.S. dollars

Are they setting the price or just feeding back from other sources? If they are, how do they decide on price?

Just make sure whichever node version is reported is up to date with the current blockchain and isn't out-of-date past a hard fork.

How do you do that?


Thanks

CG

·

So is the Steem blockchain different from the Bitcoin blockchain; I thought a block took years to produce; or am I confusing terminology?

Bitcoin and Steem use different consensus mechanisms. Bitcoin uses proof-of-work only, and the network retargets difficulty once every two weeks to keep the time between blocks to 10 minutes, on average. A lot has changed since Bitcoin was released in 2009. Newer consensus methods have been developed that aren't so computationally expensive and allow very fast block times. DPOS is one of these. I don't come from the Bitshares sphere like many here, but Steem builds upon Dan's work on Bitshares to make it super fast, and that's how 3 second block times are possible. It also comes in handy making Steemit update in almost real time :)

Is the entire blockchain spread over just 19 accounts; I thought it was meant to be hundreds? Will that be the case in the future?

The primary block producers are the the top 19 approved accounts, but backup witnesses and miners also produce 1 block per round each. This allows some more diversity in block producers and rewards good witnesses that just don't have enough votes who would otherwise shut down their node for lack of any compensation. Keep in mind the top 19 witness list can and does change with people voting. Miners having a block per round gives another route of access to producing blocks, if you've got the CPU power to use.

Are they setting the price or just feeding back from other sources? If they are, how do they decide on price?

It's a feed from STEEM market price. STEEM tokens are currently traded on Bittrex and BitShares' OpenLedger. Multiply the market price in bitcoin by bitcoin USD value and you get Steem USD value. A command is then given to the Steem node and the witness' price feed is broadcast to the network.

Just make sure whichever node version is reported is up to date with the current blockchain and isn't out-of-date past a hard fork.

How do you do that?

This is a little tricky for a casual user I suppose. Keep up with Steem releases and know when a hard fork will occur. You can view the latest release and changelogs here, although presently 0.8.4 is only a contender for an upcoming hard fork and which curation strategy prevails is still not set in stone.

·
·

Why the price feed from each witness differ?
Can they tweak the price from what their algos are announcing them about the price feed?
What is the interval at which they can change what their price feed announce?
Is the algo which provides witnesses with price feed part of the steem witness client/software?

Really interesting!

·
·
·

Each witness generally will use different sources and settings and intervals to update their price feed. They can set any price they want, although now there will be more scrutiny on accurate reporting. Any automation of price feeds is done outside of the steemd software, although the command is fed to it. The command looks like this when using cli_wallet, if you are curious: publish_feed "pfunk" { "base":"0.225 SBD", "quote":"1.000 STEEM"} true

·
·
·
·

I really appreciated you answer. One day I plan on setting a witness up.

So why does everyone want to become one so badly?

Great !!!

I'm curious as to way 63 seconds. Does anyone know if it was based off of Blackcoin at any chance?

Anyways, this is great and really helps me out.

·

The code is not based off Blackcoin at all. 63 seconds comes from 21 witnesses each producing a block every 3 seconds.

Today morning, I found a bug in steemit.com Please check it and fix it soon: https://steemit.com/steem/@tadakaluri/share-button-is-not-working-under-each-article

Great information, a bit complicated, need to re-read it.

Thank you pfunk for this interesting post. I added this information to my useful information list.

Is there an API call to check witness uptime?

Yiur article is helpful ,I had upvotes for witnesses without knowing their past profile.I will not Not vote next time without seeing their profile

Thank you very much for shedding some light on what this "witness program" is all about. Much appreciated!

Thanks for clear and helpful explanation.

Hey @pfunk, you have my witness vote as I support your work.