Steem Basics: Resource Credit System for Beginners

in #steem6 years ago (edited)

Screen Shot 2018-10-23 at 5.34.28 PM.png

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.

Killing “Bloat”

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.

Retaining Decentralization

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.

Example

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.

Improved UX

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.

Curbing Abuse

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.

New Insights

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.

Faster Evolution

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

Sort:  

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.

@noisy actually just published a very detail post about this very topic:

Great explanation, even a non-technical person like myself can digest and understand this.

I fully support the RCs system and if anyone knows Quality End-users who are struggling with RC credits, myself and others have offered to help.

please have a look here. The redfish are struggling and without support for them RC's may turn into a huge deterrent for on-boarding new users. It is our job to make sure small accounts have enough RC to transact at least a few times per day.

Currently there are more redfish asking for delegations than we are able to fill because we are lacking support. If you would delegate or donate to my project that would be greatly appreciated.

no its @ned 's job

It is kind of disingenuous to say:

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.

Since the only stakeholders that can create an account currently need to have 4252SP per: Creation of new Steem accounts without waiting and paying anything (with new Resource Credits system)

With current cost of claiming an account, you would need to have at least ~4252 SP and 100% of RC to be able to claim 1 account.

From @noisy's post.

Oof...need like 3.5k more SP for me then.

Loading...

Good job, guys.

Now can we go gack to the elephant in the room, or are y'all gonna continue backing the abuse?

Which elephant?

Honestly: if this text is for Newbies I fear what a post for normal Steemians might look like ;)

I have not posted anything for months... How long do I have to wait before I can make another post? It seems this 'Resource Credit' is going to push out all the free users of Steemit. In other words, Steemit will soon be only for those who can afford to buy steam power... This concept is a direct contradiction to the Steemit white paper.

@deimos182, are you sure? I understood Resource Credits when I wrote this post. You may want to take a look. https://steemit.com/howto/@anjadani/we-ran-out-of-rc-resource-credits-101

You'll find plenty of volks who may help you out, i.e. via one of these discord servers or even via https://steem.chat

And if you then still don't see the sun, please ask for it again. Cheers!

thanks for the information ! :)

Posted using Partiko Android

I have already voted for you.
Can I invite you to pay attention to my new project? Resteem and upvote my first post can participate in a 100 STEEM lottery.
Steem Express online | Resteem and upvote can participate in a 100 STEEM lottery

Great explanation...even though I'm an 'oldie' around here, I'm a tech 'newbie'. Thank you Steemit Team/@steemitblog for the explanation of RC!!

Thank you for the explanation, makes understanding the new features of HF20 much more clear. Great info!

It was a disaster during the HF20 implementation time but now things have become very stable. RC is working nicely. One more thing is needed here. Stinc should develop some applications which may find the great contents and reward them with some upvotes, depending on the quality of posts. It will help undervalued but great writers and make this platform a real proof of brain social media platform. It will also help in user retention. Will it happen in near future?

When will Steemit.com display Resource Credits and Voting Mana? I think this info is very important and had to be visible somewhere so that users can track their activity and credits.

I believe the Steemit front end will become less and less important as other ones become developed. Steempeak.com has the information you require to see as default. It is also a nicer interface in general.

You can already get this information on steemit.com by installing the SteemPlus plugin.

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.

Maybe you could explain if say a company like Amway told new distributors that most of the resources available would first go to those with the most skin in the game and how long you think most those new distributors would stick around against those odds?

Furthermore with the RC going to those with most the skin in the game this has essentially become a "centralized" not decentralized platform, though it never was decentralized to begin with because its the power players at the top making all the decisions.

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.

Too bad we have to understand programming to create accounts. This is not really available to "any Stake holder". Get it?

There was a simpler solution to this.

If Steemit fixed the "preview" function, so that it was a case of "What You See Is What You Get", then we wouldn't be having to edit our posts five or six times after publishing them, and the number of 'bloat' transactions would drop by a zillion percent.

Right now, you're asking people to pay for the front-end privilege of personally fixing a back-end problem that Steemit could fix globally over a weekend.

You're effectively penalising the less wealthy and those who care about page layout and design. And that's absolutely nuts.

The current "preview" function is like trying to find the soap in the bath, while wearing boxing gloves, with the lights out. And then I'm expected to pay to fix the resulting mess when my posts appear with randomly-disrupted layouts, that were inflicted on me despite my best efforts to avoid them?

Forgive me if I don't quite (!) manage three cheers for "resource credits." It's a Rube Goldberg solution for a Dick And Jane problem.

Serious amount of info woah! Thanks I think....

I did not find a translation to this blog post into German language, so I have done a translation.

Please notice: This translation is done by an ambitious newbie. Please esteem this by leaving an individual comment and upvote and don't forget to esteem the English original posting as well.

Screenshot at 2019-03-17 16:06:53 steemit post title german.png

https://steemit.com/steem/@anjanida/steem-grundlagen-ressource-credit-system-fuer-einsteiger

I have addressed it, I upvoted his witness and support his decision. If this were my post, I would flag your bs.

Isn't your attny handling this yet?

Law enforcement? You're kidding right?

] "Hello, is this Law Enforcement?"
[ "Yes. Do you have an emergency?"
] "There entirely too many shady things are happening here regarding all kind of steemit 'cleaners.'"
[ "I'm sorry sir, I didn't catch that last part. What kind of cleaners?"
] "The steemit 'cleaners.' There's too many shady things."
[ "Did you say steam cleaners?"
] "Yes".
[ "Are the steam cleaners at your location right now?"
] "No, what do you mean? They're on the blockchain."
[ "Did you say block chain?"
] "Yes."
[ "Umm. I'm sorry, I don't understand what you're reporting."
] "They did it again! I got another downvote. Do something!"
[ "Sir, I'm still not seeing the problem. Is someone being loud? Is the noise of the steam cleaner disturbing your peace?"
** click **

Oh, you're serious.

Ok, so you believe the FBI would agree that an injury occurred because a) steemit represented censorship resistance and b) steemit allowed cleaners to censor content.

Not only that, but it steemit represented that buying tokens are required to become even more censorship resistant while at the same time, failed to post rules on how to avoid censorship.

Here's where that fails to meet the criteria of injury: your definition of censorship.