A Full Steemit User's Guide to Steem Witnesses

in #steemit-guides8 years ago (edited)

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.

Sort:  

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.

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

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.

So in a nutshell, Witnesses are like Bitcoin miners but are elected and seem to have more responsibility.

Did I get this right? :)

'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?!

Hey @pfunk I am new user of Steemit how can I set my linux server for steem witness to claim steem on every block, sir if possible send me the link and the complete infotmation of the setup .
Thank you
@oodeyaa

I have a question about witness voting.

  1. Is there a difference between voting for 30 people and voting for 1 person?
    For example, I have 30 SPs. If I vote for 1 person, will it send 30sp power to 1 person? If I vote for 30 people, will the power delivered to 1 witness be 1sp? Or does 30 people have all 30sp of power delivered?

  2. Is there a relationship between witness voting and personal voting power?
    In other words, when witness voting, does the person's voting power be consumed like a regular voting?

  3. Is there a limit to the duration of witness voting?
    Will it remain indefinitely until I make a change?

Thanks for your questions!

There is no difference in the witness voting strength between voting for one person vs 30. Each account that receives a witness vote from you will receive your full SP on their vote tally.

There is no cost to voting power.

Votes remain until they are changed by the user.

Hi, there is one thing missing - hardforks. Do you know how exactly it works on Steem? Plus do you still update document with witnesses and their opinions of hardforks? If so, could you share a link to that?

Thanks, and you're right. Back when this post was originally written, hard forks were less of an issue as the features being added or changed were less consequential.

It takes a supermajority consensus of witnesses for a successful, smooth fork of Steem. Usually the new hard forks are set to activate when 17/21 witnesses in a round are running its version.

I only documented witness opinions regarding hard forks a couple times when there was a final set of consensus changes presented.

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.

I have plenty of Linux server and mining experience (mostly alt coin ASIC mining). Is there still a need for new witnesses?

The door's open if you'd like to do it. Visit the #witness channel on steem.chat

Thanks @pfunk I am on it. BTW I built a 12 core/24GB server running Ubuntu 16.04 LTS to play with. From what I am seeing I would need to rent a VPS. I will take it to steem.chat #witness. -- Thanks again.

The CPU cores aren't all that important but RAM is. You can get it to work well enough if you use an SSD as swap (240GB+ disk space recommended).

all cool but i still dnt understand it ..is there anyone who could explain it to in a simple words :),please

This has been the most comprehensive yet simple take on witnesses... You got a complete newbie like me onboard.

I still don’t get it, can you make it simple?

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.

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

Great !!!

So why does everyone want to become one so badly?

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

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.

Really good explanation of witness. Thanks

This sounds really helpful, however, I don't understand much of it. What would be extremely helpful is if someone could guide me to a navigation post. A - Z steemit for idiots. A series in steps for beginners. I could easily fit the role of being your 'idiot' feedback, so u'd know how each step was comprehended.
Thank-you.

There are lots of answers in the FAQ, some of which I helped write :) https://steemit.com/faq.html

I have read much of FAQ. It says slot, however, it says little of 'how to'.
Thank-you

Ok, pfunk, got that, little green button. Now, is there some means to search out particular bloggers? Follow, is mentioned, but do I have to scroll for ages to find them, and is anyone actually explaining the 'how to' of all that info in FAQ that's just that, info, with little 'how to'.
My most frequently asked questions are not answered there at all, and I've had to ask in replies.
Thank-you.

Do you mean particular user accounts you know? To view their posts (lumped in with their resteems, with no way to filter them unfortunately) on Steemit, you would visit https://steemit.com/@theirname

For finding people posting about certain topics, try the search function at the left-middle of the top of the page on steemit.com.

Cheers pfunk, but the only search function I've found so far takes me out, to google. So I'm dumb, that's good! It gives a knowledgeable one the opportunity to write a series of blogs for the absolute newbie. No where have I found anyone explaining 'to a simpleton' HOW to use the site best. Not How the mechanics of site work, but how to navigate, to follow, curate, witness. They are all words that seem to have meaning, but no indication towards their substance, no, 'how to'.
Thank-you.

Good stuff, thank-you, not exactly what I asked for however. I mean it sounds great, it even sounds like it makes a lot of sense, just not to me. It is an explanation of a long time user of steemit to another long time user. Absolutely useless to such as I. You seriously need to explain what it is you are saying. Right now, I'm not interested in the mechanics you seem to be explaining. First, I need to learn what I can do, not how it's done. It may totally surprise you, but although money is useful, it is not the sole motivation in learning. It doesn't interest me greatly. It's only the byproduct, the navigation starts at a primary level. The how to, for the blogger, Not the engineering how to of the blockchain and a schematic of the pages would be a good beginning. Not how the technology works, but how do I manipulate my blog through which icons, when etc.
Above this reply box is the word Reply, which sort of speaks for itself; next to that is a comic-word box, which I would guess is something to do with comments; then 33 numeral, which, again a guess, would be number of comments; then an eye icon, which so far I've not discovered a use; then 5,300,a numeral I've no idea of, perhaps the bloggers'steem; then an icon fb; then an icon I guess is twitter¿; then an icon 'in', for which I've no idea; then an icon of a two-link chain, which again I've no idea.
Is that dumb enough for you?
Now, do you understand my meaning of 'how to'?
Thank-you.

Good stuff, however it all went straight over my head. You started out explaining basics and lost me right there. I have been posting for a couple of weeks and still cannot find how to navigate around this site, nor,even with your wonderful explanation, do I have the faintest idea what anything you said actually means. Sorry, but we are not all trained in computers. I read a post that said the answers I need were in the FAQs, but reading the FAQs was no answer to even one of my queries. Most of the language used is to ppl who already know what it means and where 'it's is and 'how to', do it or even to get there. I keep querying, but no-one replies.
Thank-you.

Thanks, I really needed this. I was very lost on choosing witnesses.

i have searched for steemit witness and found your post at the first :-D
Very useful, sir.
Thank you

its usefull ..bt i cant dicided whome i vote ....
which one is best ...? any idea .... plz. @pfunk

very nice explanatory narration my dear friend. thank you for this nice sharing :)

old but still worthy to understand the logics. great work

I’m currently voting for witness via proxy to @jerrybanfield because I’m still not fully understanding the system and prefer to let someone who knows the stuff help me vote. As I learn more, I will stop proxying and make my own votes. Thanks for this article.

I have a question regarding votes. If I vote for witnesses, I initially thought the vote had to be done on a daily basis which I thought was tedious, but it seems like that my vote remains indefinitely until I decide to unvote and vote for someone else, if this is the case then it’s much better. Is that right?

Yes, witness votes from Steem accounts remain indefinitely, until modified by the account owner. This may change some time in the future as there have been proposed expiration times for witness votes. I don't support such a change because I see potential issues with Steem network health if it were to be implemented.

What type of issues do you think an expiration date will bring to the Network?

I noticed from another post that some people voted and forget or vote and then stop using Steemit. Then one day the witnesses stop being active but they still have all their votes and are still ranked high while newer but active witnesses will be behind them at the bottom. An expiration date would allow votes to always be up to date, there could be a system that allows you to select to keep the same vote in a single click.

But at the same time, maybe if it clears the vote of someone still active, we might loose their votes if they forget to vote again or are can’t be bothered anymore. Currently the vote ratio amongst the users is pretty low, clearing vote might make it even lower.

If implemented, the expiration needs to come with a system that makes it easy for the user to make a choice.

The largest issue with witness vote expiration dates is that it reduces the amount of stake in STEEM Power needed to successfully attack the network's block producer list. Making the network less secure is not a good "feature" to add.

helpful

Great article @pfunk! Hopefully my question doesn't make me look lame. I was approached by a few witnesses that noticed that I'd only voted for one witness and they asked for my vote. They offered what seems to be the normal amount of steem for my vote. Is it improper etiquette to request that they upvote my latest post, or is that considered a 'no no'? Additionally, would voting for them lower your ranking?

In DPOS, the best way to vote is to vote for witnesses that you believe are trustworthy to run a reliable node and will make the network more solid and valuable. I'm curious to know who is offering STEEM for your witness vote. That's not disallowed (the network is permissionless) but is fairly lame. Voting for witnesses does not have any negative impact on your account.

Thanks. I finally understood how it works and what it means.

Thanks very helpful, I have just begun and need to vote now.

Although this post was written 3 years ago, it's still the best guide about the witness system. Thank you for sharing this!

Thanks, this post is very helpful.
HOWEVER, what I am missing here,,,please follow and votes me