I think that current reverse gas model isn’t the greatest and we need to improve it. Many tokens on ICPSwap get stuck due to “out of cycles” situation and I recently experienced this even with an SNS project - Ghost on the NNS.
How to fix this? Solution:
Keep the current model as it, but let the user pay for gas if necessary.
This would prevent tokens be stack and help ICP overall.
I think the reverse gas model is great but not for defi related projects / canisters. I also brought this issue up numerous of times where you want to create actual self sustaining systems that don’t rely on parties to top up canisters.
There are solutions like @cycle by @icme, but who is going to take responsibility of providing the ICP for the canister topups, the ICPSwap DAO? @ICPSwap
I guess a solution could be that projects like ICPSwap also use the fee it takes during a trade and build a buffer of tokens that it can swap to ICP to pay for cycles.
The suggestion in your video to let the user pay for cycles isn’t that straight forward because token transactions don’t require ICP, which is the only way to mint cycles.
Thanks to Peter @petercryptoguy for raising this issue and to Baolongt @baolongt for the support!
With the rapid growth of the IC ecosystem, an increasing number of token projects have started enabling swap trading. Recently, we’ve encountered multiple cases where token canisters run out of cycles, causing disruptions in transactions. Users often ask us for support, and we need to resolve manually through proposals, which negatively impacts their experience.
Regarding Peter’s proposal, I think it’s a great idea, but it might require development and changes from the DFINITY team.
For example, combining the reverse gas model with a forward gas model could be a potential solution. When a token’s ledger canister has enough cycles, the reverse gas model would apply. However, if the cycles are depleted, any user interactions with the token (e.g., swap or transfer) would require a small ICP fee (e.g., 0.001 ICP) to temporarily provide cycles until the project team recharges the canister. This approach could prevent disruptions in the user experience.
When a token is traded via swap, ICPSwap is responsible for monitoring and recharging the cycles of the liquidity pool canisters. However, we are not responsible for monitoring or recharging the cycles of the token’s own ledger or index canisters.
As far as I understand, the cycle balance of a canister is only visible to its controller(s) and is not publicly accessible. We once considered monitoring tokens listed on ICPSwap and reminding the project teams to recharge when the cycles were low. However, since we are not the controllers of these tokens, we lack the authority to monitor their cycles. The issue only becomes apparent when a transaction fails due to the canister running out of cycles.
Sorry, yes you are right, next to the fact that cycles are not publicly available it would also be weird for ICPSwap to be responsible for user created token ledgers.
I also mentioned the “fee for cycles” solution in the NFID discord, and @dostro mentioned we might need a standard to handle this
The ICS team is the hardest working team, and it’s hard to imagine how other startup teams can enjoy a weekend with peace of mind 10,000 light-years away from success.
Thank you very much for sharing this information. At present, it’s indeed convenient to check the cycles balance of SNS project canisters via dashboards(such as https://dashboard.internetcomputer.org/sns/zxeu2-7aaaa-aaaaq-aaafa-cai). Additionally, SNS projects rarely encounter canister down due to depleted cycles.
Our main concern, however, lies with non-SNS project tokens experiencing out-of-ccycle issues. Could you advise on how to effectively monitor the cycles balance for these tokens? Is it solely reliant on the project teams voluntarily choosing to disclose this status, or are there alternative solutions we might explore?
great summary and I absolutely understand the struggles you have. you mentioned a lot of things which are important to address.
I do not have a concrete answer yet how to overcome all of the mentioned issues, but we are currently looking into all the aspects which are relevant to improve the situation with ICP tokens and DeFi on ICP.
@petercryptoguy thanks for kicking off the discussion however, I cannot access the link to your video, were you not allowed to post a link? can you update your initial post and add the link?
please note that the reverse gas model is a fundamental aspect of ICP and cannot easily be changed. also, I think that this is “in general” a very good and beneficial feature. even though I absolutely agree that it is a serious issue in regards to ICP tokens / DeFi.
Almost all WEB2 services that require some sort of balans or topup service have the ability to insert a CC or a default payment, you can than set a limit on your balance and it tops it up for you when you go below it.
Why is this so hard in ICP Defi? Defi projects are handling millions of dollars but can’t keep their cycles topped up?
Why go back to the user paying for gas while other chains are starting to adopt gasless interactions as well.
No need to pay gas fees is a great user experience and should remain that way.
That will be possible in the nearest future, when the cycles balance becomes public. You can request this small payment from the user (the amount would likely need to be dynamic and dependent on how far from the "freezing threshold a canister is), convert the payment to cycles, and top up the canister. And there you go – you have a conventional user-pays-for-fees model. Right?
fully agree on this. the problem that other chains do not face is that their tokens and state get deleted, so dapps can typically (there are exceptions if contracts are upgradeable) always be sure that a token continues to operate. this also applies even if nobody cares about the token anymore.
however, in our case canisters run out of cycles and this will cause those to be deleted. so dapps on ICP need to be aware of this scenario and think about ways to address this “issue”.
I get it that canister maintainer should take care of cycles etc. but I still think that the blockchain itself should take responsibility and not let this happen at at.
From the user point of view its a horrible experience where I literally couldn’t sell a token I could’ve and I lost my money.
I could simply top up the canister myself if the blockchain allowed me to for some 0.001 and make the transaction happen.
We are talking possible hundred of milions of website and dapps. Its literally impossible and not good practice for the blockchain to responsibility of someone else creation. Owner should take care for its creation. Its same as today in Web2 - can you pay someone else pay for others domain or hosting ? No. You can donate if he asks/wants to. What if the user wants to shutdown its service?
Theoretically even today you can send cycles to any canister lacking any, so this is kind of possible if you know the canister - which is owner job to publish them public or not
Thats my opinion on this