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.
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.
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
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!