The Cycles Wallet has been sitting around mostly undisturbed since Genesis. In its current state, we use it as a place to hold cycles, and to enable dfx
to use it to make calls to the Management Canister when you want to create a new canister.
At the time we built it, the execution environment only allowed canisters to have a single controller. That led us to use a design where the Cycles Wallet would create a canister and assign itself as the controller. That is why calls to --network ic
are passed through the Cycles Wallet. The wallet is the controller, and dfx
itself is not.
This isn’t ideal, and it is no longer necessary. The current design adds cognitive load, adding the --no-wallet
option to calls, which is not intuitive. Now that multiple controllers are supported, this enables us to make both the wallet and dfx
controllers of the new canister. This would probably end up leading to a new minor version of dfx
, so I want to run the design by the community before proceeding.
Change #1 - Canister Creation
Canister creation still needs to be executed live canister holding cycles, so setting up a Cycles Wallet in dfx
will still be part of the onboarding process.
The Wallet will accept --controllers
, specifying a list of controllers from the dfx
command line, and by default it will use your dfx
principal and its own.
Change #2 - Canister management
All other dfx
commands will go directly to the canister, removing the call the ll-forwarding paradigm, and removing --no-wallet
options from all the commands that support them
Change #3 - Enhancements
You may not know this, but your Cycles Wallet has a UI! You can check it out at the raw.ic0.app
url for your wallet. It is limited in functionality for now, but it shows you your cycles balance, a not terribly accurate list of the canisters you’ve created, and a UI that lets you send cycles and create new canisters. There’s some basic cleanup we can prioritize, but the vision originally was to have it serve as a simple dashboard for your canisters, allowing you to check their balance, top them up with cycles, and so on. That’s still the direction we would like to take that feature.
That’s the gist! Is this a good direction for the Cycles Wallet? Is the Wallet still necessary, or should all of this functionality get rolled into the NNS dapp? Let me know what you think!
-Kyle