Recover Advanced Wallet

Recover assets from an advanced wallet using user and backup keys. See the Guide.

  1. You set the environment variable RECOVERY_MODE=true for both the Advanced Wallet Manager and Master BitGo Express services in your docker-compose.yml file. This enables recovery operations.

  2. You start both the AWM and MBE services in recovery mode using docker-compose up -d. Check the logs to verify that recovery mode is enabled.

  3. You call the recovery endpoint with your key material. For MPC wallets, pass isTssRecovery: true with the commonKeychain. For multisignature wallets, pass isTssRecovery: false with userPub, backupPub, and bitgoPub. The AWM retrieves keys from the advanced wallets key provider, signs the transaction with both the user and backup keys, and returns the signed transaction hex.

    Recovery parameters vary by signature scheme: MPC (EdDSA), MPC (ECDSA EVM), MPC (Cosmos SDK), Multisig (UTXO), and Multisig (EVM) each require different coinSpecificParams.

    API Reference

  4. You broadcast the signed transaction hex to the network using a blockchain explorer or CLI tool. For Bitcoin/UTXO networks, use bitcoin-cli sendrawtransaction. For Ethereum/EVM networks, use eth_sendRawTransaction. For Solana, use solana send-transaction. You receive a transaction ID to track the recovery on a blockchain explorer.

// 1. Configure Recovery Mode
# In your docker-compose.yml file
# Set RECOVERY_MODE=true for both services:
#   advanced-wallet-manager:
#     environment:
#       - RECOVERY_MODE=true
#   master-bitgo-express:
#     environment:
#       - RECOVERY_MODE=true
// 2. Start Services
docker-compose up -d
docker-compose logs

// 3. Recover Assets
export IP_OR_HOSTNAME="<YOUR_SERVER_IP_OR_HOSTNAME>"
export COIN="<ASSET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export COMMON_KEYCHAIN="<COMMON_KEYCHAIN>"
export RECOVERY_ADDRESS="<DESTINATION_ADDRESS>"
export API_KEY="<BLOCKCHAIN_EXPLORER_API_KEY>"

curl -X POST \
  http://$IP_OR_HOSTNAME/api/v1/$COIN/advancedwallet/recovery \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "isTssRecovery": true,
    "tssRecoveryParams": {
      "commonKeychain": "'"$COMMON_KEYCHAIN"'"
    },
    "recoveryDestinationAddress": "'"$RECOVERY_ADDRESS"'",
    "apiKey": "'"$API_KEY"'"
  }'

// 4. Broadcast the Recovery Transaction
# Bitcoin & UTXO Blockchains:
bitcoin-cli sendrawtransaction "<TX_HEX>"

# Ethereum & EVM Blockchains:
curl -X POST \
  https://mainnet.infura.io/v3/YOUR_PROJECT_ID \
  -H 'Content-Type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransaction",
    "params": ["<TX_HEX>"],
    "id": 1
  }'
Response
// 3. Recover Assets Response
{
  "txHex": "0x02f8b38201a48459682f008459682f0e8303d09094a2c8e69f90f5e16b6f9e4e3c6c9a9e5f7a3b4d6580b844a9059cbb0000000000000000000000001234567890123456789012345678901234567890000000000000000000000000000000000000000000000000000000000000000ac001a0d5e7b0f2f4e3c6d9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6a05a04b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1"
}

// 4. Broadcast the Recovery Transaction Response
{
  "result": "8747673834d6c71560a2816963585718567419020dc58151d2f7e1ed8c57de14"
}