Hi, while traveling here is my 2cents
It is clear that all solutions have certain advantages and disadvantages.
However in my opinion there are some fundamental principles
The chain should be used for calculations and only for the very necessary storage.
It is developers’ responsibility to take that into account when designing their smart contract both in case of user interaction and smart contract factories
Having said that with no IPFS native storage pallet and only other option of using XCM (and XCM to EVM) to access storage and smart front end design and as AlbertoV19 mentioned use of indexers, the developer can easily get carried away and switch to using the chain for storage.
Yet such storage usage puts strain on the chain for all of us. A common storage fee that increases from one block to another sounds like punishing the whole ecosystem for a developer’s project poor design and implementation.
Punishing the user by increasing the user’s fee across the chain is also hurting our ecosystem
In addition to the above with the chain been 2y old and having already 12Million smart contracts where does this lead to?
Is it unrealistic to say that in next 2years with the chain and Polkadot ecosystem much more mature, with halving around the corner, with new mature communication layers, a) horizontal (for XCM (and XCM to EVM)) and b) vertical (interconnected contracts) that the chain will hit 100mln or even 1billion smart contracts
Sure increasing blockspace 4x and asynchronous backing will facilitate all the above to a degree but I strongly believe that unused smart contracts that belong to a fictional decentralised desert should be buried to leave the vibrant ecosystem use its resources in the most efficient way
Based on the above and bearing in mind that all proposals have a high value I believe that the 2 proposals that describe most of my thesis above are
To enforce good and efficient usage of storage on the chain we can use the good actor / bad actor approach
The good actor
MBIP-1
An increased deposit when creating a smart contract
It is assumed that the developer has done tests ( off chain and on Moonbase Alpha ) and brings upgradable smart contracts on Moonbeam. He then deposits a very significant fee for the smart contracts deployed on Moonbeam.
The fee is partially refundable when he upgrades his smart contract and terminates older smart contracts
This mimics what we have in Supermarkets in Europe where you put a coin in the trolley to use it and you can get it back once you return the trolley (so a “good” player)
This means in our road to hitting 100million or 1 billion smart contacts, we as developers keep the healthy-modern ones
Note: It is important that we need a mechanism to terminate the smart contract (remove from chain) in modern solidity with funds being returned to smart contract deployer account
MBIP-2
The bad actor (not bad necessarily)
Sometimes people get lazy, fail to study and search for optimum solutions or are honestly unaware of better solutions but willing to learn. In all cases these developers have to be informed about better design alternatives and prompt them to study and look for better implementations
One way to enforce this is when a user of a specific project is forced to pay more fees because of the project inefficient implementation, without affecting the fees of users of other projects and the rest of the ecosystem.
It is my belief that if MBIP-1 was implemented it would contribute to the medium-long term ecosystem equilibrium. If MBIP-2 is also imposed then it responds to the short-medium term ecosystem equilibrium. Both are needed in my opinion