Testnets
Lava network
Vault Migration

Vault Address for LavaNet Providers

Security is crucial when protecting your funds.

Lava introduces the Vault Wallet, enabling providers to separate staking funds from the Operator Address. This allows you to store funds externally — using a Ledger device, for example—instead of on the same host where the provider is running.

Previously, providers used one wallet for both funds and operations, requiring the wallet to be accessible to the provider process for operational transactions (like self-reported QoS scores). This posed a risk of losing funds if the wallet was compromised.

To enhance security, the wallet is split into:

  • Vault Address: Securely holds your staking funds and manage provider.
  • Operator Address: Handles operational transactions.

While creating a new provider (with new Operator and Vault addresses) is the easiest migration method, it results in losing previous delegations.

This guide helps you migrate to a Vault Address while keeping your existing Operator Address, so you retain your delegators and increase the security of your staking funds.

All of these steps need to be repeated for each chain ID.

Step 1: Verify that the vault address and current provider address are available

Before performing any operations, make sure that both your new vault address and the current provider address are available. It’s crucial that both keys are stored in the same keyring backend to facilitate future commands that require access to both keys. Where <provider_address_key> – your current operator wallet key

  1. Recover your current provider address
lavad keys add <provider_address_key> --recover --keyring-backend os
  1. Create you new vault address
lavad keys add <vault_address_key> --keyring-backend os

Note: vault wallet can be recovered as well if you already have secure/uncompromised wallet

You can check the available addresses using the following command:

lavad keys list --keyring-backend os

Step 2: Freeze the provider

Now that all preparations are complete, you need to freeze the current provider.

lavad tx pairing freeze <provider_chainID> --from provider_address_key --gas auto --gas-adjustment 1.5 --fees=1ulava --chain-id <chain-id>

Step 3: Save your provider current settings

Before proceeding to redelegation, you must save all current provider settings, commissions, IPports and other parameters. Because after redelegation and deletion of the provider, its settings will no longer be visible and available in the network.

You can view the provider information through explorer under Providers.

Also, you can see the necessary information by requesting data via CLI:

lavap q pairing providers <provider_chainID> 

Also, you can see the necessary information by requesting data via API:

https://lava-testnet-rest.mellifera.network/lavanet/lava/pairing/providers/<provider_chainID>?showFrozen=true

Step 4: Redelegate all funds from the provider

Next, it's important to redelegate all funds from your Operator Address to the "empty_provider" or any other provider. This step is necessary to completely unregister from the network.

Here is an example of how to redelegate to the "empty_provider":

lavad tx dualstaking redelegate "<provider_address_key>" <provider_chainID> "empty_provider" "" <amount>ulava --from <provider_address_key> --chain-id lava-testnet-2 

After redelegating all funds, ensure that your provider is fully unregistered from the chain. You can verify this by checking that it no longer appears in the explorer with statuses like FREEZE, ACTIVE, or JAIL. You can also confirm this using an API.

Step 5: Create a New Provider with a New Vault Address

You must use a Vault Address to create a new provider.

lavap tx pairing stake-provider <provider_chainID> <amount>ulava "my-provider.com:2221,1,tendermintrpc,rest,grpc,archive,trace" 2 <valoper_address> --from <vault_address> --provider <provider_address_key> --provider-moniker "my-moniker" --chain-id lava-testnet-2 --gas-adjustment 10 --gas="auto" --fees 1ulava --delegate-limit <amount>ulava

Important: <provider_address_key> is your existing provider address key. By using the same provider address, you create a new provider entity with the same provider address. This ensures all delegations from users remains.