The Cost of the Blockchain
Steem is an amazing blockchain, in that it allows near-instant (three second) confirmations and charges zero fees for transactions. Anyone can sign up for an account, and use the blockchain to post their content, vote on stuff they like, and earn rewards - all for free!
There is a cost for all of this however. Witnesses, exchanges, and developers must pay to run the computers that power the blockchain and the applications that run on top of it. As the blockchain grows in size, the cost for running these servers increases.
Witnesses are paid by the blockchain to run their servers - so they can afford the increased costs. Developers and exchanges are not paid however, so they must cover these expenses out of pocket. If the price to run a Steem blockchain node becomes too high, exchanges and third-party developers are less likely to participate.
Bandwidth Prevents Unlimited Growth
Luckily, the Steem blockchain has a way to keep these costs under control. That control mechanism is bandwidth.
[Source: Steem bluepaper]
How Bandwidth Works
Everything you do (posting, voting, commenting, etc.) will consume a small amount of bandwidth. Every user has a limited amount of bandwidth to use each week. Users with more Steem Power will have a higher bandwidth allowance.
You can check how much bandwidth you currently have based on the current limit at:
Normally everyone's bandwidth allowance is quite high, and users are able to use the network freely without any interruptions. Sometimes when the blockchain becomes busy however (due to heavy use), everyone's individual allowances may go down until the network becomes less busy.
The Steem network has gotten very busy recently with all the increased use, so some users are occasionally bumping into these limits.
The more transactions a user does, the less bandwidth they will have left (until it recharges). If they pass their limit, or the network gets busy and their limit is reduced - they may be unable to transact until the limit is raised, or their bandwidth recharges.
^ This will primarly affect users with a small amount of Steem Power.
If you get an error that you have exceeded your bandwidth allowance, it is normally best to just wait (an hour or two) and try again when it is less busy. Usually if you wait and try again later, the transaction should go through.
If you want to increase your bandwidth allowance, you also have the option to purchase more Steem Power for your account through an exchange such as BlockTrades.us.
Potential Changes Being Discussed
Increasing Everyone's Bandwidth Limits
Witnesses have the option increase their maximum block size, which will give everyone in the network more bandwidth. There are a lot of people (myself included) who have proposed doing this, but there is some concern that doing so will allow a large increase in spam, as well as raise the costs of running servers for exchanges and third-party developers.
^ Because of this, there is not yet consensus on raising the bandwidth allowances
The Steemit dev team has been working on AppBase as well as several other performance enhancements, which should help reduce the requirements for third-party developers and exchanges.
^ Once these changes are done, we will likely be in a lot better position to start raising the bandwidth allowances.
Update to the Bandwidth Algorithm
There is GitHub issue 1800 open to optimize the bandwidth algorithm. This is one update that I think will do a lot of good. If we can come up with a more optimal way to divvy up our limited resource (bandwidth) so that regular users can more freely transact - this would be the best way to improve the situation.
I also think that as part of this change, it will be important to provide a clear definition for all users about what the bandwidth limits and rules are, so users can know how many transactions (of each type - sending coins, posting, voting, etc.) are allowed based on the amount of Steem Power they hold.
No matter how much tweaking we do to the system - there is going to be a limit somewhere, and some users will likely run into it at some point. Based on this, of the key things we can do is educate users about how bandwidth works, so that they are not surprised if they run into limitations.
The keys right now are to know that:
- Every user has a limited amount of bandwidth.
- Most of the time this should not affect users.
- Sometimes (usually during busy times), users may run into limits if they have been transacting a lot.
- If users wait for a little while, their bandwidth should recharge, or their limit will go back up.
- Users also have the option to buy more SP if they want increased limits.
There is a lot of discussion among the witnesses and Steemit dev team about how to best handle bandwidth. Input from the community and stakeholders is important. Please share your thoughts in the comments below.
Some points of discussion:
- Do you think new users should have as much bandwidth as they want?
- Do you think that having users pay to have additional bandwidth (by powering up more SP) after they pass a certain point is reasonable?
- Do you think witnesses should increase their block size now, or wait for AppBase and other optimizations first?
- At what point do you think a reasonable limit for new users to be limited?
- What changes could be made to the bandwidth formula to better allocate bandwidth across the users?