[Proposal] Fixed transaction price: USD 0.01

Thanks for the answers !
Beginner questions.
1.
Currently it is set that the transaction cost is 0.0001, that is not verified anywhere? why if you set a different value (daily or weekly) it would imply an increase in latency ? if currently it also comes out somewhere that you have to burn 0.0001 per transaction.

2.When you talk about adoption, do you mean adoption for dfinity programmers to adapt the proposal or mass adoption of application developers? If what I told you about point 1 (an update every day/week) is applied, wouldn’t it be transparent or more predictable than the current price that changes enormously every day?

  1. The truth is that I don’t have technical knowledge to ask you any questions on this point, I just wonder what happens in other blockchains where you have a dynamic burn for each transaction…

Thanks for responding ! Do you think the price of ICP is more predictable than the price of the dollar or the equivalent in SDR?
If I ask you in the long term, how much are you going to spend to make 1 million transactions and you have on the one hand a cost of 0.0001 ICP, vs a cost of USD 0.01. What would be an easier answer?

Let’s take a simple hypothetical - a canister that holds an ICP balance. Every time its method disburse is called, it sends its balance to a specific AccountId.

Today, that process is as simple as calling the ICP Ledger canister’s transfer method with the following info:

  public type TransferArgs = {
    memo : Memo;
    amount : Tokens;
    fee : Tokens;
    from_subaccount : ?SubAccount;
    to : AccountIdentifier;
    created_at_time : ?TimeStamp;
  };

Today, that flow would look like this: the canister calls the ICP ledger and checks its balance. 1 async call.

Then, the canister knows everything it needs. The memo, fee, from_subaccount and to can all be hardcoded, and created_at_time is optional. The amount is whatever it has in its balance, minus 0.0001 ICP as the fee. The transfer will run, totalling 2 async calls.


With this proposal, the fee becomes dynamic. We need to configure some sort of scheduled job to update the fee, and we also need logic for what to do in case the fee is wrong. The safest way to handle this would be to request the fee with each transfer, but that would make each update require 3 async calls instead of 2. Instead, the more rational choice would be to cut out the check, and to either have additional costs from using the canister heartbeat feature, or to use an off-chain scheduling service to update the conversion rate.

6 Likes

To answer your questions:

  1. Most canisters may have at best error handling for the price, but most will just have that number hardcoded today, because the number does not change in practice.

  2. I mean adoption of application developers

  3. I think that the mental model of “how much does this cost” to a layperson is different from an engineer. Simply put, a transaction costs 0.0001 ICP. The smart contract doesn’t need to care about fiat currency at all right now, because the units it transacts in are just tokens. 0.0001 ICP is 100% predictable. It only has the appearance of fluctuating when you are comparing it to your wallet balance in Coinbase or whatever

5 Likes

I love it. Thank you for your hard work on this proposal! I will vote for this proposal, whether the final form ends up being articulated in cycles or in $USD. It helps reduce the possibility of a downward spiral in price and also prevents the he transaction fee from getting out of control at hypothetical higher prices.

1 Like

Can’t canisters be updated via NNS votes? But I admit I am unfamiliar with the technical aspects.

1 Like

Safety comes first and when I think about ICP. Cheap alternatives tend to be more expensive in the long run…. FYI Usually I don’t respond more than twice without getting paid; to avoid going around in circles that’s just me.

To answer your question, in order to prevent a rug & pull, the dynamics of the network have to Match the market demand. If ICP is hot obviously more is at stake so it would be expensive to transact, simple market dynamics.

1 Like

I like your idea but instead to change the fees, it is better to increase the number of transaction.
Approximately 10k transactions are 1 icp.

1 Like

You are totally right ! And I am against this too ! :wink: Thank you for your interesting post !

1 Like

I agree with @skilesare that .001$ would be a better price for tx fees, it’d be way more expensive than the current one, while still being cheap and appealing, .01$ might not look like much but it quickly adds up when you’re doing thousands of tx.

I agree with all your points, but imo this scenario could happen regardless in the future. Even with a fixed fee if the price of ICP pumps or dumps by orders of magnitude the NNS might decide to change the tx fee cost, e.g with 1k$ ICP hypothetical price 1tx would cost 0.1$, that’s definitely way more than intended.
So it might be preferable to promote asap better practices when handling tx fees and break a few canisters now rather than many in a few years.

3 Likes

I‘m building something requiring micro payments. Or at least rather small payments.

Don’t underestimate the use cases that we could see related to small payments, I think it’s still unexplored territory. At least if I understand correctly a part of the intention behind this proposal is to make ICP payments more expensive simply to burn more, correct?

I think it would send a bad signal. A mass coordinated effort to approach VCs would probably do more for the price than that.

I‘m also wondering how price increases will impact the transaction costs, like how scalable are ledger transactions exactly? I did not properly think about it running on a single subnet. I was assuming the fees would go up by less than on other chains due to horizontal scaling. Am I completely wrong about this?

3 Likes

I believe $.001 per transaction is the same as the current burn at $10

2 Likes

Thank you very much everyone for the answers! Apparently there are technical issues that are impossible to apply this idea/proposal ([Proposal] Fixed transaction price: USD 0.01 - #19 by kpeacock). We will continue to think about proposals on other topics. Thanks again everyone!

It is also good that this topic remains open to give related ideas (perhaps some do not have technical impediments)

Thx ! :smiling_face_with_three_hearts:

2 Likes

If all devs needed to burn at least one ICP to get started we would already have had a large burn rate. Making a minimal burn rate for ICP should be much more feasible than a minimum transaction fee.

extra perk: This ensures that the people making the canisters have at least 1ICP of vested interest in the site (no bots, mass-made phishing sites etc).

Stuff like that just slows down or downright kills adoption.

1 Like

No it does not… That is a common false assumption with 0 empirical evidence. Apple charges $99/yr to developers and they are doing fine. So do AWS, Heroku, any platform for devs… moreover they are normally a lot more than $5 to deploy.

Actually with a ‘cheap’ price it can be viewed as an ‘inferior good’ which would dissuade the exact type of developers we would want to onboard.

Those platforms are established already, the IC isn’t. Besides AWS and Heroku charge based on usage just like IC, don’t they? Apple is the exception, but hey it’s freaking Apple.

Plus you can’t simply replicate their model, on the IC a single dApp can have hundreds/thousands of canister, whose creation already has a relatively high fee (0.1 XDR iirc), charging 1 ICP to create a canister will make TONS of use cases financially unfeasible. If you were to charge 1 ICP for the ability to create canisters, someone would create service to create canister and switch their ownership to bypass paying the 1 ICP fee. You can’t do that on the Apple store or better yet I doubt many would do it cause as an account owner it’d mean a malicious app could get your account terminated and as developer it means fully entrusting your software in the hands of a 3rd party.

Our goal should be to make DX better and lower operational costs as much as possible, not do the opposite.

1 Like

You misread - the minimal amount to make Cycles should be 1 ICP. Not to deploy, etc.
As a developer you need at-least $5 vested interest.

AWS and Heroku charge monthly and for usage… there is a sunk cost to develop using them. Same with Apple but Apple is worse because they do not let you deploy apps without paying it.

hundreds/thousands of canister - what kind of service? It sounds fun :star_struck:

→ If you were to charge 1 ICP for the ability to create canisters, someone would create service to create canister

That person would still need to burn a minimal 1 ICP to get Cycles.

→ Our goal should be to make DX better and lower operational costs as much as possible, not do the opposite.

Inferior goods demand decrease as income increase… so high skill devs all around the world want to work with really cool new shit, that normally has a premium (Apple, AWS, Heroku, ETH, whatever).

The perception of an instant ramen ‘crypto’ is the opposite of what we would like. This sounds contradictory but is based in solid economic theory which are also proven by the models of any other developer platform.

  1. Cycle trading is a thing.

  2. I don’t see how that would be an improvement, even if it were enforceable. It’s bad for DX, it doesn’t stop bad actors from creating canisters and if ICP token increases in price it will only become a pointless barrier to entry, which is against the whole point of the IC.

1 Like

You are inadvertently calling the economic models of AWS, Heroku, Apple, ETH, and other successful developer platforms wrong.

There needs to be a minimal cost to reflect its status as a Veblen good. This attracts capable devs rather than dissuading them.

  1. Cool if they need to trade Cycles great. It shows that they have an active interest in developing. Or they could just burn one ICP or whatever the ‘minimal rate’ is determined to be.

  2. It does stop bad actors as they need to do extra steps or pay a minimum to do ‘bad things’.