Hi Solana Community! It’s Matt here from the Kin Foundation.
The purpose of this thread is to propose a temporary one-off code change to be implemented immediately to reduce the skyrocketing costs of rent on the Solana blockchain, until a long term solution can be implemented. I have also provided a recommendation for a long term solution.
The Solana blockchain introduces the concept of “Rent” for new account creations. As the documentation states:
“Since validators on the network need to maintain a working copy of this state in memory, the network charges a time-and-space based fee for this resource consumption, also known as Rent.”
This Rent cost has two features: (1) it compensates validators for the hard cost of storage, and (2) it deters inefficient account creation - either malicious or non-malicious.
There are two ways that rent is administered:
- Pay per Byte: rent is collected in each epoch (~48 hours)
- Rent Exemption: if an account maintains >2 years of rent then that account is exempt from the rent charges
For the purpose of this analysis, we will be assuming most accounts meet the second criteria of being “rent exempt”.
The Solana documentation has indicated an intention to adjust the cost of rent over time:
“Currently, the rent cost is fixed at the genesis. However, it’s anticipated to be dynamic, reflecting the underlying hardware storage cost at the time. So the price is generally expected to decrease as the hardware cost declines as the technology advances.”
We have seen in the last year that SOL is susceptible to rapid price increases and at this point intervention is now required to:
implement an immediate code change which will provide temporary relief from skyrocketing rent costs until a long term solution is developed.
recommend a basic structure and long term plan to establish governance around rent fees which is to be subject to further analysis and proposals from the community (beyond the scope of this thread).
The challenge with the current structure is that rent is priced in SOL (19.05 lamports per byte-epoch which is equal to 0.00089 SOL for rent exemption of a minimum account size) and is not responsive to the price movements of SOL. At the current price of SOL the dollar cost of rent is ~$0.14, which can be anticipated to further increase if not changed. While this may not seem prohibitively expensive, it has a detrimental impact on developers building for the mainstream consumer, including large scale consumer apps interested in bringing their existing user bases to Solana.
Solana is built for high scale to support billions of consumers. To onboard these users into the crypto economy, many developers will choose to subsidize the account creation cost to make it simple for a new user to get on board. At $0.14 per user that starts to become a non-trivial expense (ie. 1 million users = $140k, or a medium size app with 10 million users = $1.4M). Anecdotally, here at the Kin Foundation we are in regular contact with apps of this size and larger interested to offer digital currencies to their users but the cost of rent to onboard large user bases to the Solana network is a material blocker. We do understand that many developers choose to push the cost to their users, which for some applications makes sense, but in these instances our view is that the cost to the consumer should always be as close to the breakeven hard cost to remain competitive in an emerging space. This leaves either the developer to fund the cost, which for example an app with 10M users, the thought of facing $1.4 million dollar in fees just to create the accounts for their existing user base is often a non-starter. For a Project Team administering an SPL project, this cost can only be funded by dumping millions of its own tokens into the open market in exchange for SOL. As you can see, the current cost of rent-exemption is the antithesis for consumer adoption and growth of Solana based projects.
The Solana ecosystem needs to be attune to the friction points for mainstream adoption, and this includes for new users to get on board. So our view is that we should make it feasible for a developer to subsidize this fee if they so choose.
Note: many accounts far exceed the minimum account size. Accounts in the Kin ecosystem, for example, require 0.002SOL for rent exemption which is presently equal to ~$0.32 per account. Earlier this year, Kin migrated to the Solana blockchain 55 million user wallets belonging to 32 applications in the Kin ecosystem. The cost exceeded $1.5 million USD in SOL to create these accounts - noting the market price of SOL at the time was significantly less than it is today. Only one year later, this same migration would now cost $18 million USD in SOL at the time of writing. Other consumer applications and services will face a similar barrier to on-board, which entails a significant cost in bringing large amounts of users to Solana.
As stated in the documentation, the primary function of rent is to compensate validators for their hard costs of storing account data (even in a rent exempt scenario that SOL is effectively staked so there is an indirect payoff for validators). The hard costs of validators are conceivably incurred in dollar terms, so we believe this warrants an immediate reduction in the rent fees while a long term solution is developed.
This proposal is that a temporary and immediate code change is necessary to reduce rent to recalibrate its cost to the equivalent USD prices rent originally was in Q1 of 2021. By way of an illustration only this could reduce rent at minimum 1000x times for example from 0.00089 SOL to ~0.00000089 SOL (equaling 0.00017 USD per account at the time of writing).
Note: An important consideration in implementing this fee structure is ensuring consistency for end-users in the event that the cost changes. With this proposal, rent exempt accounts will continue to be rent exempt at the reduced rent-exemption cost, and pay per byte accounts will adapt to the lower cost.
*Note 2: With the above temporary relief proposal, using the example above, the cost to onboard a medium size consumer app with 10M monthly active users, would be $63,200 USD in SOL at the time of writing. This is still a significant cost for a new-entrant to Solana but is much more manageable figure for developers and project teams alike.
We are also highlighting the need for a governance program to be set up which oversees the cost of rent on behalf of the entire Solana ecosystem. The governance program would control an account that holds data that has two values: rent exempt minimum (in lamports) per 1 byte of storage, and rent to charge per 1 byte of storage.
The governance program would be able to change these values at any time if a proposal to change these values is ratified by the validators via votes.
Our current thinking is periodically, some human managed governance body would make proposals to change rent. The proposal is then voted on by the validators, and if ratified, the values are changed and take effect.
Given there is a significant amount of decisions to be made here, in terms of program structure, how members are appointed to the governance body and other matters, this would require a much longer analysis in more depth. We are therefore recommending this discussion be the basis of separate community proposals in this area which are separate to this thread. The preferred governance structure and program can be subject to a vote separately when the full details have been developed and can be presented for the community’s vote and ratification. We hope to see further discussion in this area.
This proposal seeks to provide temporary relief from skyrocketing rent exemption costs, which simply requires an overall agreement of the validators via a vote and this one time change could be implemented immediately. This will enable Solana projects to thrive and buy more time for the community to develop the complete governance program set up that we described above.
In addition to the above pricing, we believe it will be a simpler user experience for SPL tokens to be able to pay rent in that SPL token rather than having to manage a two token system ie. when a user has to deposit SOL in a wallet to initialize the account to accept a transfer of OXY. The Solana team recommended a simple system to have SPL tokens deposited as rent into an account and at the end of a block the validators clear that account. We recommend that this is implemented to further simplify the process, but this does not remove the need for a dynamic system on the cost of rent.
While there has been some third party developments in this regard in relation to tx fees, this is generally supportive of the notion that such solutions are necessary and should actually be features of the Solana network in itself.
Thanks for reading and we appreciate if you could show your support.
Note: This thread was originally posted in May 2021 and proposed a fee structure that was dynamic to the price of validator storage. This thread was edited on 19 October 2021 to change the proposal to seek immediate temporary relief from rent costs until a long term solution can be developed.