Skip to content

Manage stakes in the Bitgold app

The Bitgold staking dApp is available in the Bitgold app and supports both mainnet and testnet. This guide walks through connecting a wallet, delegating, redelegating, undelegating, and claiming rewards.

Connect wallet

Connect an EVM wallet to the app. MetaMask and TrustWallet are supported, along with any wallet compatible with WalletConnect. Make sure the wallet is on the correct Bitgold network before staking.

Delegate stakes

  1. Open the validator list and select the validator you want to delegate to. Each validator page shows commission, total stake, and performance history.
  2. Click Delegate.
  3. Enter the amount of BTG you want to delegate.
  4. Confirm the transaction in your wallet. A successful delegation appears under My Staking with its transaction hash.

Redelegate stakes

Existing delegations are managed on the My Staking page.

Note: A redelegation fee of 0.002% applies, to discourage frequent switching between validators.

  1. Click Redelegate next to the delegation.
  2. Select the new validator and enter the amount to move. You can move the entire stake or only a portion.

Undelegate stakes

To withdraw your stake and rewards, undelegate:

  1. Click Undelegate next to the delegation.
  2. Choose the full amount or a portion. Undelegated stake is subject to an unbonding period (currently 7 days) before it returns to your account.

Claim stakes

After the unbonding period, claim the stake and rewards by clicking Claim on the delegation.

FAQs

Q1: Which wallets can be used to delegate to validators?

MetaMask and TrustWallet are supported, along with any wallet compatible with WalletConnect.

Q2: Can I delegate, undelegate, redelegate, or claim on the explorer?

Advanced users can interact with the StakeHub contract directly on the Bitgold Explorer:

Q3: What is staking credit (stBTG)?

When you delegate BTG to a validator, you receive staking credit tokens as proof of your stake. Each validator issues its own credit token:

Token naming:

  • Name: Stake{{validator moniker}}Credit
  • Symbol: st{{validator moniker}}
  • Example: staking with validator ExampleValidator gives you stExampleValidator

Key properties:

  • ✅ Represents your staked BTG plus accumulated rewards
  • ✅ Auto-compounding: the credit value increases as the validator earns rewards
  • ✅ Rewards are distributed automatically when you undelegate
  • ❌ Non-transferable between addresses; each validator’s credit is unique

Q4: How is my staking balance calculated?

Your staking credit value in BTG is:

Your BTG value = (stCreditAmount × totalPooledBTG) ÷ totalSupply()

Where:

  • stCreditAmount: your staking credit balance
  • totalPooledBTG: total BTG in the validator’s pool (stake + rewards)
  • totalSupply(): total supply of the validator’s staking credit

Example:

Time totalPooledBTG totalSupply Your stCredit Your value Profit
Day 1 10,000 BTG 10,000 100 100 BTG -
Day 30 11,000 BTG 10,000 100 110 BTG +10 BTG (10%)

Q5: How do I query total pooled BTG programmatically?

Use this JavaScript example to query a validator’s total pooled BTG:

import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://rpc.bitgold.network');
const OPERATOR = '0x...'; // validator operator address

const hub = new ethers.Contract('0x0000000000000000000000000000000000002002',
  ['function getValidatorCreditContract(address) view returns (address)'], provider);

const creditAddr = await hub.getValidatorCreditContract(OPERATOR);
const credit = new ethers.Contract(creditAddr,
  ['function getPooledBTG(address) view returns (uint256)'], provider);

const btg = await credit.getPooledBTG(OPERATOR);
console.log('Pooled BTG:', ethers.formatEther(btg));