In defence of RAM rental markets

RAM is a scarce resource. We can have only a limited amount of it. It’s also essential, dapps built on EOS need it. The most important question is: How to allocate RAM efficiently, so that those who use it for something productive will have the most of it?

Our current model for RAM market is very inefficient. By inefficiency I mean that most of the RAM is held by speculators, not by users and dapp devs who actually need it. Only something like 1-2% of owned RAM is in use. Some of the free RAM is held by developers who know that they will need it in the future, but I think we can say that more than 90% is now in the hands of speculators and hoarders.

This is pretty big failure. We need better model for RAM markets that will incentivize getting RAM only when you need it. That’s why rental market would be much better option.

When you need to pay rent, you don’t acquire the resource just for the sake of having it. You will just lose your money over time and get nothing in return. That would be good in this case, because it would create an incentive not to hoard RAM but to get it only when you actually need it. And when you don’t need it anymore, you will get rid of it so others can use it.

But rental markets have one big problem: what happens when you don’t pay your rent? Usually, like in the real estate, when somebody doesn’t pay their rent they are kicked out. But that’s not a good idea in EOS because there might be something important data stored on the RAM that an account is using. Destroying the data might have big consequences.

So we need a big incentive to pay the rent. There are a couple of ways that I’ve been thinking.

  1. Require a bond: Users lock up tokens that will be used to pay the rent if it’s not done voluntarily. To create a better incentive to lock enough tokens, the rent could be based on the size of the bond. The more tokens are locked, the cheaper is the rent.
  2. Freeze the account: If the rent is not paid, the account will be frozen.

These can be combined. When somebody gets RAM, they are required to set a bond for rent of one year. If they don’t pay the rent, it will be deducted from the bond. When there is six months worth of rent left in the bond, the account will be frozen and it can’t be used until the bond is supplied with tokens that make its worth of one year rent again.

This will create pretty good incentive for account holders to make sure the rent is paid on time, or at least only a few months late. There can be cases where somebody just forgets that they have an account, find it later and notice the whole bond has been used for rent. In this case, the account could go into debt. The debt needs to be paid if the owner wants to unfreeze the account.

How to implement this model? We could combine it with the current model quite easily. Just keep the original Bancor algorithm that is used to buy and and sell RAM, and add paying rent on top of it. If an account has, let’s say, more than 10kb of RAM, it needs to pay rent. This makes basic accounts cheap. Normal users don’t need to care about paying rent.

I don’t think the rent need to be even very high in order to make buying RAM a lot more cheaper than it’s now. Even a small rent would force RAM speculators to think how much it makes sense to hoard RAM and for how long.

The goal should be to make the RAM market more efficient. It would be great to reverse the current allocation so that users and developers would have 90% and speculators 10% of the RAM.

Any comments? I’ve been trying to think think about this from all perspectives and it seems to me this should work. Incentives are pretty well aligned and they can be adjusted by changing rent and trading fees. Can anybody come up with a scenario that would create unwanted results?

I think this could be good short term solution that can be quickly implemented. For the long term, Greymass has proposed a solution that might be even better. But it requires complete redesign of the system so I don’t see it happening anytime soon.

Comments

  • dwschumadwschuma Posts: 21 Jr. Member - 1/5 EOS Tokens

    the whole freezing of unpaid accounts could easily cause undesirable side effects. First of all, the rent model would require the perpetual upkeep of all DAPPS and this could cause some developers to think twice before building on EOS. RAM prices, high as they may be, are still more or less a one time fee and this is what all developers were led to believe would be the case. What about those who have already bought the RAM they need? are we to tell them that on top of the crazy high fee they have already paid, they will now need to pay rent? To make one major surprise change like this will cause developers to reasonably wonder what surprise changes will be made to EOS ecosystem next? Even if this does not happen to negatively impact their business model this time, they will wonder about what changes are next and would those effect potential bottom line?

    And what happens if a DAPP forgets to pay the bill or decides not to? does it just stop working for every user? what about users who invest a good deal of time and/or resources building user accounts on the new DAPP under the assumption that it would not just go belly up when the contract account misses a RAM rent payment? For example, a facebook or steemit built on EOS would see a number of EOS users building reputation and content on said platform. This could be considered an investment on the part of the DAPP users. If the DAPP, for whatever reason does not pay the RAM rent, all users will be indirectly penalized for no fault of their own. We want users to be able to confidently invest time and energy, maybe even their own EOS on top of DAPPs. This idea of RAM renting, namely the potential for frozen DAPP contracts, would serve to deter would-be users from getting too involved because everyone will know, if the developers decide to call it quits for any reason, they will most certainly lose all relevant account info for that DAPP. This effect is amplified for any DAPP incorporating in-app-purchases.

    If the rent price is not high enough, charging rent will not cause speculators any hesitation. They are more than happy pay the 1% fee to buy and sell RAM as it is now, even though some speculators only hold it for a short period of time. perhaps the rent model would actually make it cheaper, thus more profitable for some speculators. We would likely see an increase of short-term speculation even if it did decrease long-term speculation.

  • dwschumadwschuma Posts: 21 Jr. Member - 1/5 EOS Tokens

    no conclusion...

  • SamupahaSamupaha Posts: 52 Jr. Member - 1/5 EOS Tokens

    @dwschuma said:
    the whole freezing of unpaid accounts could easily cause undesirable side effects. First of all, the rent model would require the perpetual upkeep of all DAPPS and this could cause some developers to think twice before building on EOS. RAM prices, high as they may be, are still more or less a one time fee and this is what all developers were led to believe would be the case.

    I think most devs would like this because it lowers the cost of deploying an app. A lot of them are already "thinking twice" whether or not they should build on EOS because the RAM is so expensive. Rental model would guarantee they will get it much cheaper, only the timing of payment is changed.

    What about those who have already bought the RAM they need? are we to tell them that on top of the crazy high fee they have already paid, they will now need to pay rent? To make one major surprise change like this will cause developers to reasonably wonder what surprise changes will be made to EOS ecosystem next? Even if this does not happen to negatively impact their business model this time, they will wonder about what changes are next and would those effect potential bottom line?

    This is so young and incomplete platform that everybody should know that the rules and models how it's run will change in the future. EOS is far from perfect and we will make a lot of changes to make it better.

    There are not many devs who have bought expensive RAM. Only a small percentage is used, most of it is held by speculators.

    And what happens if a DAPP forgets to pay the bill or decides not to? does it just stop working for every user?

    It's basically the same thing as rate-limiting for CPU and net. If the account uses too much of the resources, it can't make any transactions. The RAM would work a little bit differently, because time wouldn't make it usable again, only paying the rent.

    what about users who invest a good deal of time and/or resources building user accounts on the new DAPP under the assumption that it would not just go belly up when the contract account misses a RAM rent payment?

    Paying the rent should be automatic. Payments are taken first from the liquid EOS the account has, then from staked tokens for CPU and net (leaving a small amount to both so that the account won't become completely unusable) and then from the bond that's set up when the RAM is acquired for the account.

    If the account doesn't pay voluntarily it's rent, it will lose all EOS that is has.

    For example, a facebook or steemit built on EOS would see a number of EOS users building reputation and content on said platform. This could be considered an investment on the part of the DAPP users. If the DAPP, for whatever reason does not pay the RAM rent, all users will be indirectly penalized for no fault of their own. We want users to be able to confidently invest time and energy, maybe even their own EOS on top of DAPPs. This idea of RAM renting, namely the potential for frozen DAPP contracts, would serve to deter would-be users from getting too involved because everyone will know, if the developers decide to call it quits for any reason, they will most certainly lose all relevant account info for that DAPP. This effect is amplified for any DAPP incorporating in-app-purchases.

    If users really want to continue using abandoned smartcontract, they can pay the RAM rent themselves. Somebody just needs to sent EOS to the app account every now and then. Because everything is transparent, users can see when the account is running low on funds and add more before freezing happens.

    If the rent price is not high enough, charging rent will not cause speculators any hesitation. They are more than happy pay the 1% fee to buy and sell RAM as it is now, even though some speculators only hold it for a short period of time. perhaps the rent model would actually make it cheaper, thus more profitable for some speculators. We would likely see an increase of short-term speculation even if it did decrease long-term speculation.

    Yeah, it's true that there will be always speculators. But the point is to create such an environment that discourages speculation as much as possible. The way is to create a negative incentive for holding RAM. Obvious solution is rental market, but there might be others, too.

    It doesn't matter much how "cheap" or "expensive" a traded resource is, what matters is how big profits can be made. This model would make it much harder to get huge profits so the amount of RAM held by speculators would decrease greatly. That's the most important thing, not volatility/stability or amount of trades.

    What I'm trying to do here is to find a game-theoretic framework to create the best incentives for the most efficient allocation of a scarce resource.

Sign In or Register to comment.