Steem Basics: Resource Credit System for Beginners
Today we’d like to talk about Steem’s Resource Credit system which helps make it the most advanced, sustainable, and scalable freemium blockchain in the world. In short, every action that occurs on a blockchain consumes resources which means that it has a cost. Steem’s Resource Credit system is a state-of-the-art, market-based system, which ensures that the amount of resources consumed by users is sustainable and scalable by requiring that those who consume the most resources have the most skin-in-the-game. While these capabilities make Steem even more advanced, this new system also enables a revolutionary blockchain feature that no other chain has managed to accomplish: the ability for any stake holder to create free accounts that are still capable of transacting.
A Freemium Blockchain
The reason we call Steem a freemium blockchain is because users are not charged for the transactions they perform. Ever. Instead, holding Steem (in the form of Steem Power) gives users the ability to perform a certain number of actions like posts, comments, votes, and token transfers. They have acquired a “stake” in the technology, and with that stake comes the privilege of performing some activities “for free.” That means developers who build applications on the Steem blockchain don’t have to pay fees, or force their users to pay fees, every time their application gets used. When combined with Steem’s 3-second block times, the result is the type of user experience internet users have become accustomed to, but with the benefits of a blockchain and cryptocurrency-powered platform.
The Resource Credit system is what works behind the scenes to determine how many user actions can be performed while ensuring the determination is made in a decentralized and sustainable manner. Because this system is designed to regulate resource consumption in the background, users don’t need to have any understanding of how it works in order to enjoy Steem-powered applications. That means users can have a frictionless experience, while still ensuring that they cannot consume more resources than the network can support. In the blockchain space we refer to the overconsumption of network resources as “bloat,” and this is a problem that few, if any, other protocols have effectively addressed. The RC system negates the very possibility of bloat on Steem, which is only one of the reasons it qualifies as “state-of-the-art.”
Steem: The Onramp to Cryptocurrency
In order to understand the Resource Credit system it is important to first understand that Steem is the world’s first, and most advanced, decentralized freemium software. When architecting Steem, our primary motivation was to create a protocol that would introduce as many people as possible to blockchain and cryptocurrency technology. In order to accomplish this we drew from the new business models that had emerged from the internet revolution and enabled small start ups to disrupt massive incumbents. Google, Facebook, Twitter, and Reddit all achieved rapid growth and adoption by offering some services for free that enabled them to bootstrap a valuable community of users.
This dynamic was one we sought to exploit when architecting Steem with the goal of exposing as many people as possible to these revolutionary technologies. At the same time we understood that the real value of these technologies is based on decentralization which had the power to give those users back control over their information and their online communities. The whole point was to offer internet-based experiences that no single organization controlled and maintained ownership over.
But every prior freemium model is governed by a centralized organization that can arbitrarily decide what should be free and what should cost money. Their process isn’t open, transparent, or provably fair, but it is efficient because the equation was simple: give away the cheap services for free and charge for more expensive ones. In a decentralized system like Steem, that is neither possible or desirable.
Bandwidth: A Blockchain First
Steem had to be different than its centralized predecessors, so with that in mind we engineered a first-of-its-kind “bandwidth” model for governing blockchain resource consumption. This system worked by giving every Steem holder “bandwidth” based on how much Steem Power they had. This bandwidth was what people used, without even knowing it, when they transacted on Steem.
The amount of bandwidth associated with an account would change based on how much the network was being used. The blockchain would look at the amount of traffic occurring on the network and would adjust in real-time how much bandwidth users and, as a consequence, whether they could or could not transact. The goal of this algorithm was to ensure that there was always plenty of room inside blocks (the basic “storage unit” of a blockchain) to account for any surges in demand. This would guarantee that every transaction that is submitted can be included within the current block. But it would also mean that from one moment to the next a small stake holder might not know whether they would be able to post.
Decentralized Regulation of Over-Use
During times when traffic was especially high, the number of transactions being submitted to the blockchain would also become high and the degree to which each block was filled would go up. Once a block is filled it becomes impossible for more transactions to be added to it. Were this to happen, users would begin seeing their attempts to post, vote, or transfer get delayed until a block with enough room was made. We saw this occur on Ethereum when Cryptokitties launched.
The Lesson of CryptoKitties
While the increased use of Ethereum would have been trivial for Steem to handle, it was such a dramatic increase for Ethereum that all of its blocks remained filled for hours, meaning that no one could use their blockchain during that time. Despite its initial success, this unpleasant user experience resulted in a rapid decline in the use of Cryptokitties which now has only around 300 users a day.
For a protocol built from the ground up to power web applications that ordinary people use every day, such a user experience would be unacceptable. The bandwidth algorithm was designed to place a decentralized limitation on the crowd’s ability to fill blocks by preventing users from submitting excessive transactions, while still giving them the opportunity to transact if they were willing to acquire more stake (put more skin-in-the-game).
The most important, and revolutionary, aspect of that system was that it remained decentralized and ensured that a certain level of activity was free. This is in stark contrast to protocols like Ethereum which require that all users pay for every single thing they do on the blockchain. It doesn’t matter whether you have $1,000,000 in ETH, or the computational load of the transaction is miniscule; you have to pay. That system can be conceptualized as “Pay-to-Play” whereas Steem is “Stake-to-Play.”
Upsides & Downsides to Bandwidth
The benefit of that system was that it was not expensive for the blockchain to compute. One of the critical considerations when designing such systems is ensuring that the system itself does not consume too much of the network’s resources. That would only increase the costs of maintaining the network even more. With respect to this criteria, transaction size is great. Unfortunately, it is not especially accurate, which meant that the users who were performing low cost operations were effectively subsidizing all the users who were performing high cost operations. This imbalance was hidden by the fact that the transaction sizes were the same.
One example of this imbalance, and its potential magnitude, can be found by comparing how the blockchain treated “Follows” in relation to “Transfers.” Under the bandwidth model, a follow was underpriced due to the fact that its computational cost to the blockchain was born over time. A transfer, on the other hand, was dramatically overpriced since it required a lot of resources at the time of the transfer, but virtually none over time. Yet, under the bandwidth model, token transfers were 24 times more expensive than a follow because the transaction size was that much larger. If we wanted to make Steem as accessible and low-cost as possible, such mispricing would dramatically impact our ability to execute on that mission.
Introducing Resource Credits
While that system functioned well for the first 2 years of Steem’s existence, helping it to grow to 1 million plus accounts and 60,000 accounts transacting daily, it wasn’t sufficiently sophisticated to support the scaling required for mass-adoption due to the aforementioned inefficiencies and the unpredictable user experiences that resulted from design choices that were built into that system.
One problem with the bandwidth system that seriously hampered user experience was that one’s bandwidth would change in response to network traffic. When network traffic and resource consumption was high those with little bandwidth would simply be unable to transact. When traffic was low they would spontaneously regain the ability to transact. The problem is that traffic is inherently unpredictable, so what you would be able to do would be equally as unpredictable.
The RC system completely reverses that dynamic. A user's RCs do not adjust dynamically based on traffic. If you have 10 RCs one minute, you will still have 10 RCs the next minute. Thanks to these changes, users can now be shown exactly how much they can do on the blockchain from one moment to the next despite the inherent unpredictability of traffic. The algorithm governing the system is designed to ensure that adjustments are made smoothly so that user experience doesn’t change dramatically over time.
Furthermore, since the RC system provides developers with more granular data on how much resources each transaction will consume, they can create more predictable user experiences. This can be accomplished by building interfaces that allow users to see exactly how many transactions, and what kind of transactions, they can perform given their current Steem Power, assuming they want that additional information.
Efficient Resource Pricing
The second major benefit of the RC system is that it makes Steem more scalable by resolving the inefficient resource pricing that emerged from the bandwidth system. The RC system fixes that problem simply by taking into account more measurements of resource consumption. More measurements, which are more closely correlated to real resource consumption, means that more accurate pricing can be achieved.
3 New Measurements
Instead of just looking at transaction size, the RC system looks at blockchain size (how much bigger the transaction will make the blockchain), state size (how much more information will have to be kept in memory), and compute time (how much computational load the transaction will place on the network) into its calculations. The protocol then fills resource “pools” based on these three measurements and it is from these pools that Resource Credits (or “resource_mana”) are distributed to Steem users. During times when the network usage is especially high, the resource pools will be relatively empty, and so fewer RCs will be distributed to users. During the times when network usage is especially low, the resource pools will be relatively full, which means more RCs will be distributed to users.
The blockchain is constantly creating Resource Credits and distributing them to Steem users based on how much Steem Power they have and how much the blockchain is being used. These Resource Credits are basically a very limited kind of currency; they enable your account, and only your account, to purchase resources. When few people are using Steem, the blockchain gives out more RCs so that everyone can do more for free. But when people begin using the blockchain too much, it reduces the amount of RCs in a gradual and predictable manner so that the network usage is reduced to sustainable levels.
This also means that, as was the case for bandwidth, a user who is trying to perform too many transactions that consume too many resources, will be prevented from transacting unless they acquire more Steem Power. In the end, the outcome is effectively the same: a decentralized system that enables users to perform a certain number of transactions for free, but requires that they either wait or acquire more Steem Power if they want to consume additional network resources.
Like the bandwidth system, the Resource Credit system functions entirely behind the scenes. It does not require any conscious attention on the part of the users, which is in line with our guiding principles of minimizing friction and cognitive load for users. The primary goals were an improved user experience for the average user and more accurate pricing, but an additional benefit of this superior system is that it creates totally new capabilities for power users who desire additional information on how they can maximize their usage.
Free Account Creation
Perhaps one of the most underrated benefits of the RC system is that for the first time in history it enables truly free account creation by any Stake holder. For the first time ever, people can receive a totally new account, and begin transacting, without performing work or acquiring stake. Numerous applications like steemmonsters.com have already begun leveraging this capability to onboard new users to their dApp at no cost. This is a major leap forward with respect to building blockchain-powered applications that have the lowest possible barriers to entry, and it is something only Steem can do.
Now that the Resource Credit system is operating in the wild, it is already providing every Steem developer with totally new and valuable information about how resources are being consumed by the Steem network. Because it uses more measurements, and more accurate measurements, to power a market-based system, we have a highly intelligent mechanism for governing Steem’s freemium model that is every bit as decentralized as the system it is replacing.
Finally, this system is designed to enable Steem blockchain to developers to add new resource metrics to the calculations without necessitating a full system upgrade (i.e. “hardfork”) so that pricing inaccuracies like those that resulted from the bandwidth system can be addressed far more quickly. While Steem is arguably the fastest evolving blockchain—with 20 hardforks completed in 2 years—the RC system will enable us to improve it even faster.
This is why we call this the “most advanced” freemium blockchain in existence and why we believe it is now positioned to scale to the next level.
The Steemit Team