Last verified against DigiByte Core v9.26.4

Mint & Redeem DigiDollar on DigiByte Mainnet

DigiDollar is DigiByte's protocol-native, over-collateralized USD stablecoin. It activated on mainnet on 2026-07-17 (BIP9 deployment digidollar, bit 23, active at block 23,869,440). This page is the operator/developer procedure for opening a collateral vault (minting DUSD) and redeeming it, using the DigiDollar RPCs on a synced mainnet node.

Everything below is verified against DigiByte Core v9.26.4, digibyte-cli against a mainnet node (RPC port 14022). All amounts flow through the standard wallet — DigiDollar mint/redeem transactions are ordinary node RPC calls, not a separate service.

Read-only? If you only need the numbers (supply, collateral, ratio, oracle price), you do not need a node — DigiScope exposes them at /api/digidollar/stats and /api/digidollar/price-history. The rest of this page is for actually minting and redeeming.

The three unit traps (read this first)

The DigiDollar RPCs mix three units. Getting them wrong is the most common integration bug:

Step 1 — Check protocol and oracle health

getdigidollarstats returns the system-wide state; getoracleprice returns the current signed DGB/USD price.

digibyte-cli getdigidollarstats
{
  "health_percentage": 407,
  "health_status": "healthy",
  "total_collateral_dgb": 5338561.13015550,
  "total_dd_supply": 390032,
  "oracle_price_micro_usd": 2984,
  "oracle_available": true,
  "minting_restricted_reason": "none",
  "active_positions": 30,
  "dca_tier": { "min_collateral": 150, "max_collateral": 30000, "multiplier": 1 },
  "err_tier": { "ratio": 1, "burn_multiplier": 1 }
}

total_dd_supply (390032) is cents → $3,900.32 DUSD outstanding. oracle_price_micro_usd (2984) → $0.002984/DGB. total_collateral_dgb is DGB. If minting_restricted_reason is anything other than "none", minting is paused.

digibyte-cli getoracleprice
{
  "price_micro_usd": 2984,
  "price_usd": 0.002984,
  "last_update_height": 23872695,
  "validity_blocks": 20,
  "is_stale": false,
  "oracle_count": 29,
  "status": "active"
}

The price is signed by a MuSig2 quorum (7-of-N) and is valid for validity_blocks (~20 blocks ≈ 5 minutes). If is_stale is true, wait for the next oracle update before minting.

Step 2 — Estimate the collateral you'll need

estimatecollateral dd_amount lock_tier tells you the DGB required for a given mint. Longer locks require less collateral (a better ratio).

# $100 DUSD (10000 cents) at the 30-day tier (tier 1)
digibyte-cli -rpcwallet=<wallet> estimatecollateral 10000 1
{
  "required_dgb": 167560.32171582,
  "wallet_collateral_dgb": 169235.92493297,
  "dd_amount": 10000,
  "lock_tier": 1,
  "lock_days": 30,
  "effective_ratio": 500,
  "oracle_price_micro_usd": 2984,
  "usd_value": 100
}

effective_ratio (500) means 500% collateralization for the 30-day tier at the current price. wallet_collateral_dgb is how much eligible DGB your wallet can actually lock — confirm it is ≥ required_dgb before minting.

Step 3 — Open the vault (mint)

mintdigidollar dd_amount lock_tier ( fee_rate )
tier lock tier lock
0 1 hour (testing) 5 2 years
1 30 days 6 3 years
2 90 days 7 5 years
3 180 days 8 7 years
4 1 year 9 10 years
# Mint $100 DUSD at the 30-day tier
digibyte-cli -rpcwallet=<wallet> mintdigidollar 10000 1
{
  "txid": "9b3f6476111d870b72a216c9b7aa85c9e58cd80a77699a4efc42114b1f213b0e",
  "dd_minted": 10000,
  "dgb_collateral": 169235.92493297,
  "lock_tier": 1,
  "unlock_height": 24045615,
  "collateral_ratio": 500,
  "fee_paid": 0.11935000,
  "position_id": "9b3f6476111d870b72a216c9b7aa85c9e58cd80a77699a4efc42114b1f213b0e"
}

The position_id is the mint txid — you need it to redeem. The DUSD is minted to a DD…-prefixed address in your wallet and is spendable/transferable immediately (mainnet uses DD for balances, RD for redemption outputs; testnet uses TD). The DGB collateral is time-locked until unlock_height. Get a fresh DD receive address with getdigidollaraddress.

DigiDollar transactions require miners running the DigiDollar flag; in the early mainnet window they confirm in bursts, so a mint may sit at 0 confirmations for a while before it is mined. This is expected.

Step 4 — Track the position

digibyte-cli -rpcwallet=<wallet> listdigidollarpositions
[
  {
    "position_id": "9b3f6476111d870b72a216c9b7aa85c9e58cd80a77699a4efc42114b1f213b0e",
    "dd_minted": 10000,
    "dgb_collateral": 169235.92493297,
    "lock_tier": 1,
    "unlock_height": 24045615,
    "blocks_remaining": 172900,
    "confirmations": 20,
    "status": "active",
    "health_ratio": 504,
    "can_redeem": false
  }
]

can_redeem stays false until the block height passes unlock_height (blocks_remaining hits 0). listdigidollarpositions accepts optional ( active_only tier_filter min_amount count skip ) filters.

Step 5 — Redeem (burn DUSD, unlock collateral)

redeemdigidollar "position_id" dd_amount ( "redemption_address" fee_rate )
# Only valid once the lock has matured (can_redeem: true)
digibyte-cli -rpcwallet=<wallet> redeemdigidollar \
  9b3f6476111d870b72a216c9b7aa85c9e58cd80a77699a4efc42114b1f213b0e 10000

The redemption burns the DUSD and releases the time-locked DGB back to your wallet. Redemption is non-custodial — the protocol itself enforces the time lock and the collateral release; no third party ever holds the DGB. Positions that have not reached maturity cannot be redeemed.

Read-only integration (no node required)

For dashboards, bots, or agents that only need to read protocol state, DigiScope proxies the node RPC over HTTP — every DigiByte node recomputes these figures every block, so they are trust-minimized:

Related