How does cycles in `CyclesLedger.create_canister` work?

Please, explain (it also should be in docs), how cycles in CyclesLedger.create_canister work.

Does it always take cycles from caller canister?

If yes, it is a design error. Cycles are better managed with ExperimentalCycles module of the standard library: It allows to take cycles not only from the caller canister, but from caller of caller canister, if it add<system>() cycles, etc. This one seems to support taking cycles only from the direct caller.

Also, it is unclear how this is implemented: Does CyclesLedger have special rights to take cycles from a canister that didn’t allow this explicitly?

It take cycles out of the caller’s balance on the cycles ledger

1 Like