Evaluating Compute Pricing in Response to Increased Demand on the Internet Computer Protocol

Most of these proposed changes make sense, especially considering that these cost increases are targeted towards actions that cause the largest latency & scalability hurdles on a per subnet basis.

Here’s my impressions of the side-effects (intended or not) from of each of the proposed increases, as well as a additional few suggestions/areas targeted at subnet scalability.

Increase the message base fee from 590K to 5M cycles.

Side effects:

  • Makes event-based inter-canister messaging systems more expensive
  • Incentivizes sending fewer, larger payloads
  • Pushes developers to centralize logic into a single canister (fewer microservices/less parent ↔ child communication)
  • Canisters will move to debounce/batch calls more (batch ICRC-1 & 2 endpoints would be nice to haves)

Edit: I see now that in inter-canister calls the calling canister pays the fees

Increase the instruction fee from 0.4 to 1 cycle.

Side effects:

  • Makes computationally heavy apps (AI initiatives, etc.) ~2X more expensive to run.
  • Makes heartbeat significantly more expensive & incentivizes timer usage

Increase the canister installation fee from 0.1 to 0.5 trillion cycles.

Side effects:

  • Developers build more single/few-canister architectures instead of MMC architectures that dynamically spawn tens of thousands of canisters.

Additional ideas to consider:

  • Sandbox usage fee - In last week’s performance & scalability session, the team went over the improvements to the scheduler, as well as associated sandbox memory limits with plans to support 10-15k canisters in sandboxes at a time. It might sense to design a fee for operations that incur a sandbox overhead (activation and/or eviction). These types of fees would encourage usage of a smaller number of canisters, rather than frequent activation & eviction of tens of thousands of canisters. Then you already have message & instruction fee increases that ensures a canister is paying a fair amount for compute while it is activated and occupies sandbox space.

  • Raising the idle canister fee - as Bjorn mentioned above, subnets with 90k+ canisters have a significantly lower finalization rate than other subnets. However, with performance cliffs at around 100k, even with the canister increase bump it takes ~50k USD for an attacker to fill up a new subnet an important canister is on (ICPSwap, etc.) with fresh canisters that do essentially nothing. Many large project teams have valuations in the millions, whereas these spin-up costs are just a one time fee. Most subnets have at least 20k canisters since September, so this one-time payment number to get to 100k canisters per subnet is reduced to ~40k USD. Raising the idle canister fee means the attacker would need to continue paying the protocol to keep up all canisters in operation.

3 Likes