Wallet setup
This guide explains setting up the wallet and the last steps needed to start running your node.
For the staking model, activation timing, reward timing, and unstaking behavior, read Staking on Dusk alongside this operator setup guide.
Preparation
Section titled “Preparation”Obtain a mnemonic
Section titled “Obtain a mnemonic”Before setting up your node wallet, you’ll need a mnemonic. You can obtain one using any of the following methods:
- Using the CLI wallet (Rusk Wallet), either directly on your node or locally on your machine. You can download it from the Rusk releases page.
- Using the Web Wallet if you would rather use a web app to access your wallet on your main device.
Important: Back up your mnemonic phrase securely and never share it. Anyone with access to this phrase can control your wallet and funds.
If you generate your wallet directly on the node using rusk-wallet, no restore is necessary, the wallet is already in place.
If you created your wallet elsewhere (e.g. via the Web Wallet or on your local machine), you’ll need to restore it on your node using the generated mnemonic.
Restore Wallet (if created externally)
Section titled “Restore Wallet (if created externally)”If you already have a mnemonic it is time to set your wallet up on the node.
Once you have access to a Dusk mnemonic, run the following command:
rusk-wallet restoreIf your node isn’t running yet, rusk-wallet may show a message like some operations won't be available. This is expected; the wallet can still be restored successfully.
You will be asked to provide your recovery phrase/mnemonic, in lowercase, and to enter a password for the wallet.
Export consensus key
Section titled “Export consensus key”Once you’ve done so, export a consensus key for the given wallet to your home directory, then install it with the ownership and permissions expected by Rusk:
rusk-wallet export -d "$HOME" -n consensus.keyssudo install -o root -g dusk -m 640 \ "$HOME/consensus.keys" /opt/dusk/conf/consensus.keysTo participate in consensus, Rusk needs your consensus keys. These keys are used to sign and vote for blocks. You will be asked to set an encryption password for the consensus key, make sure to remember it.
Now, run the following script and provide the same password (for consensus key) from before. This will set the password as an environment variable for Rusk to use.
sudo sh /opt/dusk/bin/setup_consensus_pwd.shStart your node
Section titled “Start your node”We recommend using fast-syncing to bring your node up to date quickly. It significantly reduces the time required to become consensus-ready.
If you prefer to sync from genesis (e.g., for auditing or archival purposes), do not use fast-syncing.
Start your node with:
sudo systemctl start ruskOnce the node is running, check its sync progress by running:
ruskquery block-heightCompare your node’s block height to the block explorer to confirm if it’s catching up.
Testnet Faucet
Section titled “Testnet Faucet”You can request 5,000 testnet DUSK from our Discord faucet. The minimum testnet stake is 1,000 DUSK.
Stake your DUSK
Section titled “Stake your DUSK”The final step is staking. To allow your node to participate in consensus and earn rewards, your wallet must stake at least 1000 DUSK.
Owner vs Consensus Keys
Section titled “Owner vs Consensus Keys”A Dusk stake involves two roles:
- Consensus Key: Used by your node to participate in consensus to vote and sign blocks.
- Owner Key: The key/address that can
unstakeandwithdrawyour stake.
If you do not specify an owner when staking, the consensus key automatically becomes the owner. This is the simplest setup, but it has different security implications than using a separate owner key.
Option 1: Keep Owner and Consensus the same (default)
Section titled “Option 1: Keep Owner and Consensus the same (default)”rusk-wallet stake --amt 1000 # Replace with your desired amountPros: Simpler setup, only one address to manage.
Cons: If the node is compromised and the attacker gains access to the consensus key or an unprotected wallet, they can steal your funds.
This option is acceptable if your server is well-hardened (SSH key-only access, no password logins, firewall, restricted users).
Option 2: Separate Owner and Consensus Keys (recommended)
Section titled “Option 2: Separate Owner and Consensus Keys (recommended)”rusk-wallet stake --amt 1000 --owner <OWNER_ADDRESS> # Replace with an address from the same mnemonicReplace <OWNER_ADDRESS> with another address (e.g., from Profile 2) derived from the same mnemonic you used to set up the node wallet.
Pros: Even if your node or consensus key is compromised, only the owner key can unstake or withdraw funds.
Cons: Slightly more operational overhead. You must keep the owner key safe and available whenever you need to unstake or restake.
Security note: This is most effective if you do not store the mnemonic on the server, or if you use a strong wallet password different from the provisioner key password.
After Staking
Section titled “After Staking”After the stake transaction, verify that your stake status is updated:
rusk-wallet stake-info --profile-idx 0 # Replace with a different profile if applicableNote: Each address from the same mnemonic has a profile index. Use the one corresponding to your consensus key when checking stake info.
Check for the eligible stake and stake active from block fields to be updated.
Activation occurs at the epoch boundary after the next one, between roughly 1 and 2 epochs after submission. Use the reported stake active from block value rather than estimating from elapsed time.
You can periodically run rusk-wallet stake-info to monitor if your accumulated rewards are increasing, which is a clear indicator that your node is successfully participating in consensus.