Hey James,
The Internet Computer uses prepayment model, which I agree, sometimes might create challenges. I’m not a Motoko expert, so I’m assuming the Cycles.add<system>(50_000_000_000_000);
means that we’e trying to create a new canister with ~50T cycles on its balance. Please correct me if I’m mistaken.
The IC prepayment model requires that any operation must leave canister in a state with sufficient cycles to maintain its existence for at least freezing_threshold
seconds (~2.6M seconds or 30 days by default).
Given a 1% compute allocation, this means that any operation should leave the canister with at least 10M cycles * freezing_threshold seconds
, or ~26T cycles on its balance.
Therefore, having 74T cycles on a balance and creating a canister with 50T cycles would leave the canister with just 74 - 50 = 24T
cycles, which is less than the required freezing limit of 26T cycles.
I’ve submitted two PRs to make it more clear in the documentation, and simplify calculation.