A full-scope article to Steem witnesses and voting to approve them.
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 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.
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.
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.
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 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)
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.
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.
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.
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.
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).
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.
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.
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.