If you have participated in Project Catalyst voting in any of the first 9 funds, you may well have suffered the pain of creating multiple voting keys/QR codes to ensure you can vote with all the ADA you hold across multiple wallets. We are moving away from this being a problem, and if you are command-line capable, you can solve this yourself for Fund 10 voting.
Martin Lang from ATADA has a set of excellent CLI tools to manage the voting registration process. Essentially you create a single Voting Key that you will use to register with the Catalyst Voting app, then create “vote power assignment” transactions from each of your other wallets that assign the voting power of those wallets to the single Voting Key. You can do this for CLI “key pair” wallets, Hot “seed phrase” wallets and hardware wallets.
You are best completing these steps from an air-gapped computer. I use a laptop with no network connection, disabled Bluetooth and disabled WiFi.
I keep a very small CLI wallet on a node-connected machine to let me pay for transactions quickly and easily (see <paymentwallet> ahead).
In the code sections ahead, change the variables to suit your preferred naming conventions
<votingkey>, <paymentwallet>, <votingwallet>, <4digitpin>
Gather the seed phrase mnemonics from your hot wallets onto your air-gapped machine using a USB stick or somesuch
Grab cardano-signer and add it to your executable path
Clone the Stake Pool management scripts and place them in your path. Complete the setup steps for the scripts by creating a $HOME/.common.inc file
Create the Voting Key that will control all your Voting Power
09a_catalystVoteF10.sh new cli <votingkey>
Repeat the next two steps for each of the hot wallets you want to vote with
Extract the Staking signing key from each of your seed phrases
cardano-signer keygen --mnemonics "<seed phrase>" --path stake --out-skey <votingwallet>.staking.skey
Create the cbor transaction for assigning the vote power for each of your wallets
09a_catalystVote.sh genmeta <votingkey> <votingwallet> <paymentwallet>
Gather the cbor files onto your USB stick and transfer them to your node-connected machine which also has the Stake Pool management scripts installed. You can then issue the transaction described in the cbor files by sending the minimum required ADA from and to your <paymentwallet> as follows.
01_sendLovelaces.sh <paymentwallet> <paymentwallet> min <votingwallet>_<timestamp>.vote-registration.cbor
Do this for each cbor file and your Vote power aggregation will be complete.
Once you have done this and waited a couple of hours for the latest Voting Snapshot to have been updated, use this other post to check your voting power is as you expect.
The last step is to register your Voting Key with the Catalyst Voting app. Generate your qrcode using the following from your air-gapped machine, then scan it from the Catalyst Voting App.
09a_catalystVoteF10.sh qrcode <votingkey> <4digitpin>
I hope you find this as helpful as I did .. Thank you Martin and HeptaSean!