Polkadot AssetHub - high NFT collection deposit

Hey guys, my name is Linda, and I’m Head of Artists Relations at KodaDot.

I would like to discuss the topic that has been bothering me (us) for some time now. We recently implemented Asset Hub to KodaDot - both Kusama and Polkadot. But in this post, I would like to focus on Asset Hub Polkadot - specifically on deposits one has to place if he wants to create a collection.

At the moment, we have deposits (locking your DOT) on the Asset Hub Polkadot chain for creating collections and adding NFTs into it. This deposit needs to be made when you create a new collection. Your (deposited) DOTs will be unlocked as soon as you burn NFT/collection). Any collection/nft added on the Asset Hub is saved into the blockchain storage. This storage is replicated, and every change is tracked (by transactions). To prevent spam, Parity proposed a returnable fixed deposit. Find more info about deposits in the Polkadot wiki.

For artists who want to mint on Polkadot Asset Hub, this means:
- Collection deposit - 10 DOT
- NFT deposit - 0.01 DOT

My concern is the Collection deposit: 10 DOT (when 1 DOT is around 4 USD, this means 40 USD for collection creation). As a person who is in daily touch with artists, I had to explain this numerous times to many artists, but still, I don’t find this deposit in accordance with the idea of Polkadot being a cheaper alternative for Ethereum, for example. It’s a topic I have to discuss weekly.

Many artists raised questions like - what will happen if the price of DOT goes higher, maybe 100 USD? Will it mean they will pay 1000 USD for collection creation? Well, theoretically, yes, if no one does anything about this deposit because it’s fixed.

Migrating Kusama NFTs:
Soon Kusama NFTs will be able to migrate to AssetHub - migrating NFTs to Polkadot Asset Hub will also cost 10 Dot to the person who will migrate (if they decide to go on AssetHub Polkadot). This can be demotivating for artists to migrate their precious collections. To some point, KodaDot can support some artists by covering this deposit, but this is not a solution.

Cheaper option:
Ofc we have a cheaper option: Asset Hub Kusama - where:
Collection deposit is 0.1 KSM (to create your collection)
NFT deposit is 0.001 KSM (adding NFTs)
But the goal is to have more Polkadot NFTs. We want to attract more users not demotivate them. We are not yet there to set deposits high like this.

I would still love to see more artists coming to the Polkadot ecosystem and being able to mint freely where they want without any obstacles. That is why I would love to hear more opinions on this topic and maybe any ideas for a solution (referendum to lower the deposits?). I got plenty of opinions from artists who were a bit disappointed by this fact. I would love to make it easier for them and see more Polkadot collections.

Let’s help make Polkadot NFTs more competitive and open doors for artists coming from outside of the ecosystem.

What do you think about this deposit? What can we change? Do we really need this deposit?

Thank you for your time (and opinion):fire:

8 Likes

Ethereum is finally moved to pos to reduce pow gas fees but i think polkadot wants people to experience ethereum again we need to follow the concept of accessibility for everyone by reducing cost of using Asset Hub

Some points and questions for parity

1 so Polkadot developers thought to reduce the existential deposit to 0.1 on Asset Hub as compared to polkadot which is 1 Dot so this means parity wants to encourage artists and developer but by which means at some place the cost is less but at some places like nfts it is very high i just want to reduce the cost collection creation which is very high imagine in next bull run if polkadot hits $50 then no body would create a collection at $500 fee and the when it comes to the comparison with ethereum it’s too high the current kusama nft community will never join Asset Hub because of this

To add to this: we are talking about those values in Polkadot Asset Hub:

nft deposits for chain statemint with 10 decimals:
collectionDeposit: 10 DOT
itemDeposit: 0.01 DOT
metadataDepositBase: 0.20129 DOT
attributeDepositBase: 0.2 DOT

And those for Kusama Asset Hub:

nft deposits for chain statemine with 12 decimals:
collectionDeposit: 0.1 KSM
itemDeposit: 0.001 KSM
metadataDepositBase: 0.006709666617 KSM
attributeDepositBase: 0.00666666666 KSM
Code to Run in Substrate Portal JS
const formatBalance = (balance, decimals, symbol) => `${balance / 10 ** decimals} ${symbol}`;

const [chainName, chainDecimals, chainToken, collectionDeposit, itemDeposit, metadataDepositBase, attributeDepositBase] = await Promise.all([
api.runtimeVersion.specName.toString(),
  api.registry.chainDecimals[0],
  api.registry.chainTokens[0],
  api.consts.nfts.collectionDeposit,
  api.consts.nfts.itemDeposit,
  api.consts.nfts.metadataDepositBase,
  api.consts.nfts.attributeDepositBase,
]);

console.log(`nft deposits for chain ${chainName} with ${chainDecimals} decimals:`)
console.log(`collectionDeposit: ${formatBalance(collectionDeposit, chainDecimals, chainToken)}`);
console.log(`itemDeposit: ${formatBalance(itemDeposit, chainDecimals, chainToken)}`);
console.log(`metadataDepositBase: ${formatBalance(metadataDepositBase, chainDecimals, chainToken)}`);
console.log(`attributeDepositBase: ${formatBalance(attributeDepositBase, chainDecimals, chainToken)}`);

What I notice is that besides the high costs of creating a collection (I agree, it should be down to 1 or 2 DOT, the metadataDepositBase that has to be paid for each item is 20x the cost for just creating an item.

2 Likes

I’d say figure out if you need to make an RFC for changes to Asset Hub, not really sure what the procedure is there.

I’m hoping there isn’t anyone that would be against this, so I encourage you to just move forward with getting a change actually implemented.

Those costs need to go even lower @Luuu

The cost of minting 1 MILLION NFTs on Solana is $113 with what they call state compression technology. Now i’m not a dev I dont know how what goes around to make it that cheap whether its a good thing or not but to a user/artist that’s great value.


2 Likes

I think there are a few assumptions here that should be cleared up before moving toward a resolution.

  1. That Polkadot’s goal is simply to be cheaper than Ethereum/Solana/etc.: It’s at least not my goal in working on Polkadot; I want to build a more scalable and performant system with the best architecture and abstractions, and that thus is able to provide a platform on which application developers can give their users the best UX. Ethereum and Solana may be cheap but they are also bloated and one is known for routine shut-downs. When people decide where to deploy something (like collections), of course cost is a factor, but hopefully people have other motivations to choose to deploy on Polkadot.
  2. That creating collections has no side-effects.: Deposit or not, state is not free. The deposit is there for a reason: more on-chain state results in more expensive weights for everyone because DB reads/writes take longer. So with zero deposit, the issuer is actually pushing the costs into every other user of the chain in the form of higher transaction fees and slower inclusion times. The deposit makes it explicit that there is a cost to storing information on-chain.

As @AshutoshSingh72 pointed out, the existential deposit is 0.1 DOT on Asset Hub to encourage its use over the Relay Chain. This is quite easy to reason about because it’s relative within the system.

But NFT deposits were chosen somewhat arbitrarily at genesis and it’s a good exercise to re-evaluate them and adapt if they are causing pain and if lowering them has little or no negative side effect (or if the trade-off is worth it).

I think this would be perfect for a Fellowship RFC. Any change to the value would require a PR to the Asset Hub runtime under the Fellowship, and although this change would be simple (just a few configuration values), an RFC with discussion on the creator experience, economic constraints, and technical considerations would be valuable and also inform the selection of other deposits in the system.

The procedure is to make an RFC :stuck_out_tongue:.

3 Likes

Ignoring that many semi-planned optimizations could reduce these existential deposits anyways…

As polkadot adds cores, this existential deposit of 0.1 DOT should decrease somewhat over time. It’s bounded below by (a) the parachain’s own costs plus maybe (b) the relay chains’ costs, including a factor of the log of the parachain state size. This holds even if the parachain is a system parachain. In fact, a system parachain should be worse since they need fairly good decentralized liveness.

A dedicated NFT chain with centralized liveness could reduce cost (a) and pocket some of the savings, leaving only costs (b) which declines with adding cores, and should be represented by the fees charged by polkadot. You’d maybe want more liveness properties for NFTs, but if we’re talking solana then…

It’s possible this does not work right now, due to nominators being paid so much, but we should impose a sizable minimum commission anyways, which makes this easier.

You can likely play other reduced security games with NFTs specifically too.

3 Likes

Thanks for the clarification and I do appreciate your endeavours.

I maybe wrong but I believe if Polkadot is to be the gateway of choice into Web3 products/services also need be economically competitive. This Forum post itself emanated from Luuu’s experience having to explain this to end users showing that it is a bottleneck.

Now I understand that these costs are NECESSARY for any blockchain that’s why we have NFT blockchains like LUKSO who have introduced flexible payment solution where companies or entities can cover gas expenses on behalf of their customers instead of the user/customer paying which also entices anyone to mint even if they don’t own crypto.

Looking at the where we are heading we are likely to have an increase in NFTs issued by companies rather than just crypto community. Factors influencing choice of blockchain have mainly been reported to be environmental sustainability however minting costs will start to be a concern for companies and individuals as well.

In this regard my comment may appear as implying we be cheaper than Ethereum, Polygon and Solana (they do happen to have more NFT activity and users than most) but rather a suggestion that we should STRIVE to be affordable and/or profitable depending on who the end user is because ultimately someone has to bear the costs associated with minting the NFT which is a fragment of the total cost of the NFT.

This will also make us more marketable. Hope the RFC takes this into consideration.

1 Like

It’s worth asking if infrequently traded NFTs should be handled partially in the UXTO model too. Also, if tools like Mike Hamberg’s CRL tricks could improve UTXO handling.

We’ve no plan to work on this at W3F research right now, but if someone else gets curious then we’re happy to give them advise.

I think this is a valid concern, but I don’t think it’s wise to make changes based solely on a hypothetical slippery-slope. After all, why stop at 100 USD? that’s also arbitrary. I think there are strong arguments to change it if and when it becomes a pain point, and I think there will be strong motivation to do so if/when that is the case.

I think there are strong arguments to change it if and when it becomes a pain point, and I think there will be strong motivation to do so if/when that is the case.

We won’t get to IF or WEN if there is a 10 DOT fee to create a collection.
Given Polkadot already has the worst UX holistically for NFTs (fragmented across many chains, many different formats), the last thing we need is a high fee as another barrier to entry for artists to create on Polkadot.

It would make more sense to double down for creators on Moonbeam - at least the NFTs are ETH compatible and the minting fees aren’t crazy. I understand Joe’s point that space isn’t free, but from a creators point of view, we have just priced them out of the market.

2 Likes

Then organize some people and make an RFC with suggested values and rationale.

Asset Hub is meant to provide a tool to fix this: one entry point with a format that can be sent to many other chains.

2 Likes

There is an argumentative premise in this framing which implies that Solana is cheap because they are pricing state wrong.

Issues with Solana downtime aside, Solana actually does have “state rent” which is effectively an existential deposit for each piece of storage. It’s just very cheap. They used to have an actual rent payments scheme but it is now required to have deposits. The main difference is just an eager pruning of state at pre-defined epochs - deposits are locked implicitly, not explicitly.

They use a simple argument, possibly oversimplified but directionally correct - it seems inspired by Arweave and goes like this: the deposit is 2x the cost of the disk space it takes to store the data for a year today on “enough” nodes. Because disk space decreases in cost by about half every year, when you integrate out to infinity the area under the curve is 2 times the area from 0 to 1. This also implies that properly calibrated deposits should decrease by half every year.

Estimating that cost is hard and can’t be done algorithmically - what’s important is the cost of estimation errors in either direction. Underestimates mean that state grows faster, although not unbounded - effectively an economic subsidy on activity. Overestimates mean that the state grows slower - effectively an economic depressant on activity. We should bear in mind these systems are reflexive and current activity seeds future activity.

2 Likes

Hi @rphmeier, I appreciate your answer and comparison of how it works in other ecosystems. Can you tell me more about how we have it Polkadot? This storage deposit for NFTs is fixed and set for 10DOTs, but what are the real costs of the storage, and how are they calculated? Also, I’m very curious: what do you think is the best solution? Do you think we should do an RFC?

Hello Joe, thx for your opinion :blush:. I am curious about the RFC option. Before considering this option, I would like to know more. We can suggest lower values, but if the price is fixed in DOT, then this will be a short-term solution because the price will still be dependent on the volatility of DOT. Do you think there is a way to do it via RFC and somehow automatize it to avoid this volatility? Or do it in a way that will reflect the real costs of the storage?

Just from a technical perspective; I think the best we can do is to use a weak governance origin that is controlled by some consortium (ie. System Collective).
This origin could then update the NFT deposits any time the market conditions warrant it - obviously while honoring the storage deposit requirements.
To implement this, we need RFC#12 and the Parameters pallet from @xlc.

2 Likes

I don’t think there’s a way to calculate the “real cost of storage”. If there were, I would have replied to the first post with a simple formula :). We come up with deposit rates based on a rough idea of “reasonable” and high enough to deter abuse.

Rob makes a good point: Lower deposits in the beginning are essentially a subsidy for early adopters. If the state grows too fast and requires an increase, it’s the late comers who pay the higher price.

I don’t think deposit updates need to be so frequent that they can’t be done via runtime upgrade. I would not try to constantly react to changing market conditions.

Now, the reason I think that an RFC would be useful here is to put all the arguments in one place. We can say here there are arguments under:

  • Technical: We want to prevent state bloat, therefore using state should have a cost associated with it.
  • Business: People want low costs associated with deploying their collections.
  • Economic: We want lower barriers to entry, but also an incentive to “think twice” before deploying. As in, don’t bloat state for testing, use a testnet.

Of course any group will have different answers. An engineer/auditor will say, “make the deposit 1 million DOT”. An NFT creator will say, “make it 0”. (In a similar example, I’ve had validator providers ask me if we could “just remove slashing” from Polkadot because they don’t like the risk).

My guess is that in an RFC we would come to the conclusion to dramatically reduce these deposits because subsidizing growth now is worth it. We also have the advantage that if this becomes so popular, we can just shard the chain and make a new NFT chain to run in parallel. It’s worth an RFC because the discussion would serve as precedent when choosing other deposits and choosing when to change this deposit due to popularity (too much NFT state) or due to market conditions (the current deposit becomes unaffordable).

3 Likes

I appreciate all input and thought work and agree with @rphmeier that estimating cost is hard here.

I’m not sure when RFC will be up, but it will still block brands across different industries from using NFTs on Polkadot Asset Hub to create engaging customer experiences if their users need to deposit X DOT or pay X DOT to get something.

Thus before not sure what the estimated timeline for any of those implementations is, we will give a shot at gasless minting on KodaDot - Gasless minting on Polkadot Asset Hub · Issue #7825 · kodadot/nft-gallery · GitHub

The best way to be sure is to write it :slight_smile:

Hei guys we created a RFC proposal based on this discussion.

5 Likes