Why is my cycles wallet canister slowly losing cycles?

Looks like I failed to explain things well enough.

There’s two separate controllers:

  1. The controllers in the view of the IC (I’ll call those canister controllers): What you actually think about when you hear the term ‘controller’. A canister controller can request a canister’s status, start/stop/delete the canister, install new wasm modules, and so on. dfx canister info returns the list of canister controllers.
  2. The controllers in the _internal_view of the wallet (I’ll call those wallet controllers): Here is the definition of a wallet controller: [wallet code]. This is what the code running inside the wallet canister (what I called wallet wasm in my previous post) defines as its own notion of a controller. This is totally fine from a technical standpoint, but very confusing as shown by this thread. This wallet controller can NOT perform the tasks listed for the canister controller, but instead can transfer cycles, add/remove custodians, list the history of transactions in this wallet and so on. dfx wallet controllers returns the list of wallet controllers.

In the end, it’s just a name clash between two related, but distinct concepts, caused by an unfortunate name overlap. Does this clear up the confusion, @jzxchiang?

3 Likes