How we can take what EOSIO has built and turn it into a real consumer platform.
EOS is an important improvement over all previous blockchains. Instead of waiting minutes for transactions, things generally happen in seconds. Instead of copying and pasting long hashes, there is the concept of “accounts” — albeit 12 character ones.
But EOS as a platform has some very significant flaws. It doesn’t look or feel like other mass market consumer platforms. These platforms are all (1) free (2) simple and (3) have a social identity layer (avatar, @name, display name). Deviating from this winning formula is insanity
Paid accounts don’t work. They kill the ROI on paid marketing campaigns, and massively discourage viral adoption. You will never get a mass market with paid accounts.
Simple is also critical. Users don’t want to think. They barely can comprehend the idea of a single token let alone concepts like “staking”, “RAM” or “resources”. There is no example of such a Rube Goldberg contraption hitting mass market. What works is ultra simple: Google, Twitter, Instagram etc..
Social identity is a requirement. Every single app today with over 50 million users has the same concept of identity: @username, display name and avatar. This is what users expect, whether they are on Facebook, Instagram, WhatsApp, Telegram, or LinkedIn.
EOS violates all of the above. While Lynx, Token Pocket, Meet.one and other wallets have tried to humanize the UX around these fundamental shortcomings, the result is not enough to hit escape velocity. As an ecosystem, EOS is registering under 10,000 new accounts per week, and we are in churn mode. Overall daily active users has flatlined, and as many apps are exiting the ecosystem as new ones are entering.
We need to do something different. We need to start from the top down and not the bottom up, and imagine a product user experience that makes sense to a 2019 average user. We need less features. Things have to just work.
But First, Users.
Ecosystems grow when there is a virtuous cycle of new users coming, new apps rising to meet these new users, and increased value driving still more users.
The initial problem is getting adoption. We need to remove all barriers (within reason) for users to join the platform and for apps to build on the platform. This is phase one. Once phase one is accomplished, scaling with virtual memory and app micro-payments can be considered.
If EOS continues to plateau at under 100,000 Daily Active Users (of which perhaps half are bots), there is no long term ecosystem. It doesn’t matter what the price of RAM is, or what features Lynx or other wallets have. It’s academic. There is insufficient usage to really create a vibrant app ecosystem.
Multiply these numbers by 10 and things start to become interesting. All of a sudden, apps and wallets start to get profitable. Paid marketing starts to work. Users start to have real things they can do with their crypto that they simply can’t do today.
But how can we get more usage? Our view is to simplify things dramatically:
- offer free accounts to anyone with a valid telephone number
- simplify the UX so that they never need to understand the concepts of “RAM”, “CPU”, “Network” or “Staking”
- add avatars and a social layer directly at the blockchain level
Can this be done at an interesting scale? How do you pay for these free accounts? Is this, another “free college tuition schemes” like Bernie Sanders is pushing that is just a pipe dream?
We don’t think so. We believe that we can get roughly the same number and the same kind of apps running on LynxChain that are are running on EOS today, but with completely free accounts. The RAM costs and bandwidth costs can be managed. And once we hit this initial scale point, virtual memory and other optimizations can take us far beyond.
How EOS Works today
There is a lot of misconception on how the resource model of EOSIO works. The ETH camp, led by consensus has commissioned studies to “prove” that EOS is not even a blockchain. On the other hand, hard core EOS followers hail it as a “technical breakthrough” that provides “free resources” and “free transactions” forever.
The truth is somewhere in between.
EOS is indeed based on a Blockchain, with actual blocks being written and cryptographically linked to each other, providing an immutable record of transaction history. As long as one “full node” keeps this history, the state of token transfers and token ownership is un-alterable, and can be verified. In order to achieve speed the creation of these blocks is delegated to a set of trusted “block producers” or “BPs” that can be voted out at any time if there is foul play.
But not everything happens in blocks.
In order for maximum speed, each BP keeps a database of account and token information in RAM memory. This includes the 12 character account name, as well as any data that is used by token contracts, such as non fungible token balances.
Now RAM memory is in fixed supply. Specifically, EOSIO works today with 133 GB of RAM memory total, and 71 GB reserved by actual contracts and accounts. Let’s now dive deeper into how this scarce resource is used and allocated.
EOS’s model: users and apps “buy” RAM, and “sell it” when no longer needed.
RAM is needed in EOSIO in a number of places
- roughly 2K of RAM is needed for each new account (to store the account name in particular)
- RAM is needed to store any app contract. This depends on the app.
- RAM is needed to partially transfer a token from user A to user B when B does not have the token (token needs to be added to user B’s table)
EOSIO’s solution to this is to have an automated “RAM marketplace” based on the BANCOR algorithm for pricing RAM buys and sells. Starting with an initial sale at very low prices in June 2018, the prices go up until sellers materialize and push it down.
During the launch of EOSIO RAM prices spiked 100x from this initial price as buyers correctly identified the model as highly favoring speculation. The current price is $0.30 per kb, or $317,000 per GB. Meanwhile, Server RAM prices for hardware chips are as low as $5 per GB. This is hard to believe, but true. A 64Gb chip is about $300.
The crazy, crazy state of RAM pricing
As the previous example shows, RAM pricing on EOS is roughly 60,000 times more expensive than if it was running on a single EOS server.
EOS of course does not run on a single server. Assuming RAM was being priced “at cost”, you would have to multiply that by 100 to account for the redundancy of all block producers and standby block producers. So lets say $500 / GB would be a fully replicated system price. We are still at 600x that.
Why is this?
Take the analogy of selling all the water in San Francisco to a group of speculators, with no possibility of imports. And then add a Bancor algorithm that prices water for the rest of us, depending on what these speculators decide to do. With fairly inelastic demand, the price could easily hit $200 a bottle.
That’s exactly what happened.
The impact on accounts.
At Lynx Wallet , we provision every account with 3K of RAM. This is in our experience the bare minimum needed for the account to function. At 30 cents per kb, this is about one USD in RAM alone. Another two dollars of “staking costs” are needed as well, but we will get into that later.
Now, if we gave these away, we would be losing $3 per account. Even worse, the new owner of that account could start selling the RAM to the marketplace and start collecting EOS. This is a recipe for fraud: we and other apps and wallets have witnessed it first hand. User comes in, creates a large number of fraudulent accounts, liquidates RAM, leaves.
So free accounts in EOSIO doesn’t work. It doesn’t work for Lynx, Token Pocket or any other app. We are all forced to charge for accounts. And if we charge too little the RAM “harvesting” problem occurs.
Now the effect on user growth is substantial. As the VC Josh Kopelman noted in “the penny gap”, there is a huge difference between even one penny and free. One penny requires effort — a consideration of whether the spend has merit, pulling out a credit card, or clicking a series of “in-app purchase” buttons.
On mobile we estimate this to have at least a 10x difference. Spend $2 for an account for an unknown service. 9 people out of ten will say no. On desktop, it’s far worse. Credit card companies will not even allow you to charge for things crypto-related. Apps like Scatter charge as much as $8, in crypto, for a crypto account. I would estimate a 100x difference versus free.
The immediate solution: free accounts with no notion of RAM
Free accounts trumps everything else. If we don’t have free accounts, we don’t have users, and if we don’t have users everything else is conversation. So what would it cost for 1 million accounts?
Well at 2k per account, 1 million accounts would cost about 2GB of RAM, or $10 per block producer. Split amongst 50 producing and standby block producers, that’s $500 in RAM cost. Not worth even debating. As NIKE would say, “Just do it”.
Eliminating any ability to sell the RAM in these accounts will eliminate any economic motive for the accounts. Preventing command line access and rate-limiting and whitelisting wallets is part of the LynxChain solution. But the bottom line: this is not voodoo economics, or Bernie Sanders promising free college education for everybody. This is just basic Internet 101.
The cost of RAM outside of account creation
Over and above the pure creation of accounts, RAM is used in EOSIO for two key things: creating smart contracts and storing tokens.
Let’s talk about storing tokens first.
In order to access tokens quickly, EOSIO stores each token in a user/token table. A row in that table roughly looks like
user A has token t
Every time token t is partially transmitted from A to B, and B does not have t, room needs to be created in the table to record that B owns t. Now the record of this is in the blockchain, but the RAM record is needed for quick lookup. In this case, user A pays in RAM to transmit the token to B.
This is why just sending a token can fail on EOSIO. I witnessed this myself just a few days ago when sending LYNX tokens to a few people. After 5 sends, I “ran out of RAM” — a highly questionable UX experience. I was able to solve this by going to the resources tab on my wallet and adding more RAM, but the average user will not find this.
Now initially, we will allow free transfers of token t from user A to user B for a small number of tokens on LynxChain. As these tokens proliferate, however, we need a system to prevent rampant RAM usage that is caused by tokens proliferating throughout the Lynx Ecosystem.
That system is likely to be a simple charge denominated in the native LNX token to transfer tokens. Again, this won’t happen immediately, and won’t need to be addressed until and if we hit scale (> 1 million users).
Now lets talk about the RAM and other costs of the apps themselves.
At the present time, there are really just a handful of apps that represent most of the EOS activity. We are talking about 20 apps with a mere 1,000 daily active users or more.
We estimate that we could run all these apps on LynxChain with 1 million user accounts, and 100,000 of these accounts active per day, with very modest bandwidth and RAM costs.
Phase 2: Virtual Memory / Charging Apps
Once we have passed 1 million registered users, we believe the next phase of growth will involve virtual RAM — storing token and contract data on disk instead of RAM.
Liquid has already proven this on MainNet with their dapp token / virtual RAM model. Their approach is one model — there are others. A hybrid model of allowing apps to pay for actual RAM while by default getting ultra cheap virtual RAM is possible.
This does not have to be in way a “staking” thing. By charging apps a monthly fee, exactly like Amazon charges them for hosting their websites, we can eliminate the concept of “buying ram” which has caused so much problems and so much speculation on MainNet.
If we never get past Phase 1, then Phase 2 is academic.
We need to focus exclusively right now on getting user adoption and building a simple product that users can understand. The first version of Lynx IOS running on LynxChain will be live tomorrow that demonstrates this. It will be integrated into android and desktop wallets in September, and is expected to go live on MainNet in November.