Securing Your Stake Pool Using a Hardware Wallet

You can secure your pool pledge account and pool reward account using a Trezor or Ledger Nano S/X hardware wallet. Credits to angelstakepool for documenting the procedure.

First, delegate your 2nd pool owner to your stake pool with Daedalus or Yoroi or Adalite.io

Install cardano-hw-cli to interact with your hardware wallet.

# Hardware Wallet works with Trezor and Ledger Nano S/X
# Reference https://github.com/vacuumlabs/cardano-hw-cli/blob/develop/docs/installation.md

cd $NODE_HOME
wget https://github.com/vacuumlabs/cardano-hw-cli/releases/download/v1.13.0/cardano-hw-cli_1.13.0-1.deb
sudo dpkg --install ./cardano-hw-cli_1.13.0-1.deb

Connect and unlock your hardware wallet on your local PC or block producer node.

To generate the verification key and hardware wallet signing file, type:

cardano-hw-cli address key-gen \
  --path 1852H/1815H/0H/2/0 \
  --verification-key-file hw-stake.vkey \
  --hw-signing-file hw-stake.hwsfile

As needed, you can edit the value of the --path option to specify the derivation path to the key with which you want to sign. hw-stake.vkey is not sensitive and may be shared publicly. hw-stake.hwsfile does NOT contain the raw private key.

Copy hw-stake.vkey to your cold environment.

Update stake pool registration certificate to add your new hardware wallet owner, which will secure both your pool pledge account and pool reward account.

Tailor the below registration-certificate transaction with your pool's settings.

If you have multiple relay nodes, then change your parameters accordingly.

👀 Notice the pool-reward-account and additional pool-ownerstake-verification-key-file lines point to hw-stake.vkey.

Example above is pledging 1000 ADA with a fixed pool cost of 345 ADA and a pool margin of 10%.

Copy pool.cert to your hot environment.

You need to find the tip of the blockchain to set the invalid-hereafter parameter properly.

Find your balance and UTXOs.

Run the build-raw transaction command.

Calculate the minimum fee:

Calculate your change output.

Build the transaction.

Copy tx-pool.raw to your cold environment.

This multi signature transaction will be signed using witnesses.

You need the following 4 witnesses.

  • node.skey

  • hw-stake.hwsfile

  • stake.skey

  • payment.skey

Create a witness using node.skey,

Create a witness using stake.skey,

Create a witness using payment.skey,

Copy tx-pool.raw to local PC or block producer node, which is where your hardware wallet device is connected. Ensure your hardware wallet is unlocked and ready.

Create a witness using hw-stake.hwsfile

Copy hw-stake.witness to your cold environment.

Copy tx-pool.multisign to your hot environment.

Send the transaction.

Check your updated pool information on adapools.org which should now show your hardware wallet as a pool owner.

After two epoch snapshots have passed, you can safely transfer pledge funds from your CLI Method or Mnemonic Method wallet to your new hardware wallet owner account. 🚀