Tutorial · Vaults · Testnet ★

Run a Vault Staking Service

Stake other people's coins without ever holding their keys: node setup for IronDivi and Divi Core, one address per client, onboarding, monitoring, fees, and the limits you must tell clients about.

About 15 minutes · Checked 2026-10-21

1What you are offering

A staking service is a wallet that stays online, unlocked for staking, with other people's vaults registered in it. Their coins earn block rewards into their vaults; you never hold their keys and cannot spend their coins (why). Your side is uptime and a correct addvault for each vault.

2Set up the manager node

IronDivi

Install irondivi on a machine that stays on. Create a wallet with a new recovery phrase, store the phrase in a password manager, and put a small amount of your own coins in it (optional, it helps show the node is staking at all). Start it on testnet first with --testnet. No configuration flag is needed for vaults.

Divi Core (divi-cli, Divi Desktop, BoxWallet)

Add to divi.conf:

vault=1
staking=1

Restart. Without vault=1, every addvault fails with Unable to sync TX!. Encrypt the wallet, then unlock it for staking only:

divi-cli -testnet walletpassphrase "<passphrase>" 0 true

The trailing true means "for staking only"; the wallet cannot send while unlocked this way, which is what you want on a server. Run this once after each restart. Divi Desktop does it through its unlock dialog with the staking-only box ticked.

Keep it one job

Do not run masternode, trading or hot-wallet duties on the manager node. The only thing in it that matters is the manager key, and even that key gains an attacker nothing but the ability to stake for your clients.

3Give each client one address

One manager address can serve every client; the encodings differ by the owner half. But a separate address per client makes getcoinavailability true readable and lets you remove one client cleanly. Generate them on the manager:

irondivi-cli --testnet getnewaddress client-a
divi-cli -testnet getnewaddress client-a

Send the client the address. That is all they need. Never ask for anything else.

4Onboard a client

  1. Client funds a vault theirOwner:yourManager (fund a vault) and sends you the txid.
  2. Check it in Explorer 2.0: the output type is vault and the second address is yours.
  3. Register it:
    irondivi-cli --testnet addvault "theirOwner:yourManager" <txid>
    divi-cli -testnet addvault "theirOwner:yourManager" <txid>
  4. Confirm:
    irondivi-cli --testnet getstakingstatus
    { "staking status text": "Staking Active", "staking_balance": 250.0, "walletunlocked": true, … }
    divi-cli -testnet getstakingstatus
    { "staking status" : true, "staking_balance" : 159.99995040, … }

Tell the client the staking balance went up by their amount. That is the proof they are being staked. Those two outputs are from our testnet managers after adding a 200-coin vault (IronDivi) and two vaults of 100 and 50 (Divi Core).

Further deposits into the same encoding: on Divi Core they are picked up automatically; on IronDivi run addvault again with each new txid.

5Monitor

We did not wait for one of our test vaults to mint a block, so "the reward lands in the vault" on this page comes from the coinstake rules in the source, not from a block we watched.

6Getting paid

The chain pays the vault owner, not the manager. There is no fee field in the script. Options people use:

Whatever you choose, say it in writing before the first vault is funded, and note that you cannot deduct it yourself.

7When a client leaves

The client reclaims their coins (reclaim) or moves to another manager (move). Nothing is required from you, but tidy up:

irondivi-cli --testnet removevault "theirOwner:yourManager" <txid>
divi-cli -testnet removevault "theirOwner:yourManager"

On IronDivi, remove the vault promptly once its output is spent; leaving a spent output registered can make the wallet try to stake with it and block your own sends (Only signed 0 of 1 inputs).

8Be honest about what you cannot do

Questions? Ask the Divi chatbot.