Consolidations
Overview
For account-based assets, the spendable balance of a wallet is the balance of the assets in the base address. The spendable balance is the total amount available for withdrawal. The confirmed balance is the balance of the base address plus all the receive addresses. If a wallet has multiple receive addresses, you can obtain the maximum withdrawal amount by consolidating the balances from the receive addresses to the base address.
For Ethereum Virtual Machine (EVM) wallets, BitGo can enable automatic consolidations. For non-EVM wallets, you must manually consolidate balances. Consolidations aren't required for UTXO assets. You can determine if a wallet requires consolidations by calling the Get Wallet by ID endpoint and referencing the needsConsolidation field.
How it Works
Most EVM blockchains don't natively support multiple receive addresses. BitGo uses a forwarder smart contract to enable multiple receive addresses for such wallets. These receive addresses are controlled by the BitGo key. Despite being single signature, these addresses are secure, because their smart contracts only enable sending assets to the base address of the associated wallet. Being single signature also enables the consolidations to be automatic.
If you want to disable automatic consolidation of tokens, you can set the flushForwardersManually parameter to true. If true, you must manually consolidate tokens. However, even if enabled, native coins continue to automatically consolidate.
Exemptions
Some EVM blockchains don't require manual or forwarder-based consolidations. Instead, these networks utilize memo IDs or destination tags in conjunction with the base address. For these wallets, all deposited assets are immediately available in the spendable balance.
| Blockchain | Identifier | Fee Source | Fee Asset |
|---|---|---|---|
| Agoric | Memo ID | Receive Address | BLD |
| Babylon | Memo ID | Receive Address | AAA |
| Coreum | Memo ID | Receive Address | CORE |
| Cosmos | Memo ID | Receive Address | ATOM |
| Cronos POS | Memo ID | Receive Address | CRO |
| EOS | Memo ID | Receive Address | EOS |
| Fetch Native | Memo ID | Receive Address | FET |
| Hedera | Memo ID | Receive Address | HBAR |
| Initia | Memo ID | Receive Address | INIT |
| Injective | Memo ID | Receive Address | INJ |
| Internet Computer | Memo ID | Receive Address | ICP |
| Osmosis | Memo ID | Receive Address | OSMO |
| Polymesh | Memo ID | Receive Address | POLYX |
| Provenance | Memo ID | Receive Address | HASH |
| Rune | Memo ID | Receive Address | RUNE |
| SEI | Memo ID | Receive Address | SEI |
| Stacks | Memo ID | Receive Address | STX |
| Stellar | Memo ID | Receive Address | XLM |
| Toncoin | Memo ID | Receive Address | TON |
| Vaulta | Memo ID | Receive Address | VAULT |
| XRP | Destination Tag | Receive Address | XRP |
| Zetachain | Memo ID | Receive Address | ZETA |
Wallet & Forwarder Versions
When creating wallets, the default wallet version differs depending on your asset and wallet type. If you want to use a specific wallet version, you can use the walletVersion parameter. Once you create a wallet, you can't change the version number. The wallet type is important, as it determines the forwarder version. There are functional differences in the forwarder versions, including v5 that doesn't automatically consolidate.
| Forwarder | Wallet v0 | Wallet v1 | Wallet v2 | Wallet v3 | Wallet v4 | Wallet v5 | Wallet v6 |
|---|---|---|---|---|---|---|---|
| v0 | ✅ | ||||||
| v1 | ✅ | ✅ | |||||
| v2 | ✅ | ||||||
| v3 | ✅ | ||||||
| v4 | ✅ | ✅ | |||||
| v5 | ✅ |
Wallet Versions
- v0 - Smart-contract wallet that deploys as soon as you create it.
- v1 - Smart-contract wallet that deploys upon receiving assets, enabling you to save on fees for wallets that aren't yet in use. BitGo uses the
CREATE2opcode to create the address, but doesn't broadcast the creation transaction until an indexer detects the address received assets. - v2 - Same as v1, but with support for NFTs.
- v3 -
MPCv1wallets with support for NFTs. - v4 - Same as v2, but optimized for EVM chains.
- v5 -
MPCv2wallets with support for NFTs. - v6 - Same as v5, but with support for native MPC addresses.
Forwarder Versions
- v0 - Deploys as soon as you create the address.
- v1 - Deploys upon receiving assets, enabling you to save on fees for addresses that aren't yet in use. BitGo uses the
CREATE2opcode to create the address, but doesn't broadcast the creation transaction until an indexer detects the address received assets. - v2 - Same as v1, but with support for NFTs.
- v3 -
MPCv1receive addresses. - v4 - Same as v2, but in addition to automatic consolidating from the fee address, you can manually transfer tokens from the base address.
- v5 - A native MPC receive address that requires manual consolidations to the base address.
Note: Don't send CryptoPunks to forwarder addresses. CryptoPunks are nonstandard NFTs that must be sent to base addresses. In addition, CryptoPunks aren't compatible with MPC wallets.
To learn more about assets and wallet types, see the Coins and Tokens table.
Gas Tanks
Gas fees associated with forwarder consolidation are paid by your Gas Tanks. Gas tanks, like EVM receive addresses, are also smart contract addresses controlled by the BitGo key.
Gas fees for consolidation transactions are paid by the native assets held in your gas tanks. For example, to consolidate native Polygon or Polygon tokens on the Polygon network, your gas tank must have a sufficient balance of Polygon (POLYGON). However, there are a few protocols that use ETH to pay gas fees instead of the native assets.
Gas fees vary by asset and are impacted by the wallet and forwarder versions. The following are example gas fees for Ethereum v5 wallets with v4 forwarders:
- Address Creation - Free.
- Contract Deployment - ~250,000 gas units, paid by your gas tank upon receiving the first deposit.
- Consolidating Coins - ~75,000 gas units, paid by the sender within the same transaction.
- Consolidating Tokens - ~40,000 gas units, paid by your gas tank in a subsequent transaction.
Manual Consolidations
The following assets require you to manually consolidate wallet balances. Assets deposited to the receive addresses remain unavailable for withdrawal until you transfer them to the base address.
| Blockchain | Network Type | Consolidation Type | Consolidation Method | Fee Source | Fee Asset |
|---|---|---|---|---|---|
| Algorand | L1 | Manual | Consolidation Request | Receive Address | ALGO |
| Aptos | L1 | Manual | Consolidation Request | Gas Tank | APT |
| Bittensor | L1 | Manual | Consolidation Request | Receive Address | TAO |
| Canton Coin | L1 | Manual | Consolidation Request | Gas Tank | SUI |
| Cardano | Hybrid | Manual | Consolidation Request | Receive Address | ADA |
| Celestia | L1 | Manual | Consolidation Request | Receive Address | TRX |
| Near Protocol | L1 | Manual | Consolidation Request | Receive Address | NEAR |
| Polkadot | L1 | Manual | Consolidation Request | Gas Tank | DOT |
| Solana | L1 | Manual | Consolidation Request | Gas Tank | SOL |
| Sui | L1 | Manual | Consolidation Request | Receive Address | SUI |
| Tezos | L1 | Manual | Consolidation Request | Gas Tank | XTZ |
| Tron | L1 | Manual | Consolidation Request | Receive Address | TRX |
| VeChain | L1 | Manual | Consolidation Request | Gas Tank | VET:VTHO |
Automatic Consolidations
The following assets enable automatic consolidations. Upon deposit, the receive addresses uses smart contract forwarders to automatically transfer the assets to the base address.
Note: All v6 wallets require manual consolidations, even if the table below states that the blockchain has automatic consolidations. The v6 wallet uses a v5 forwarder, which is a native MPC address that doesn't automatically consolidate. To learn more, see Consolidations.
| Blockchain | Network Type | Consolidation Type | Consolidation Method | Fee Source | Fee Asset |
|---|---|---|---|---|---|
| Arbitrum | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH (on Arbitrum Network) |
| Avalanche-C | EVM | Automatic | Smart Contract Forwarder | Gas Tank | AVAXC |
| Base | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH (on Base Network) |
| Berachain | EVM | Automatic | Smart Contract Forwarder | Gas Tank | BERA |
| BNB | EVM | Automatic | Smart Contract Forwarder | Gas Tank | BSC |
| CoreDAO | EVM | Automatic | Smart Contract Forwarder | Gas Tank | COREDAO |
| Ethereum | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH |
| Ethereum Classic | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETC |
| Flare | EVM | Automatic | Smart Contract Forwarder | Gas Tank | FLR |
| Flow | EVM | Automatic | Smart Contract Forwarder | Gas Tank | FLOW |
| Hyperliquid EVM | EVM | Automatic | Smart Contract Forwarder | Gas Tank | HYPEEVM |
| Kava EVM | EVM | Automatic | Smart Contract Forwarder | Gas Tank | KAVAEVM |
| Monad | EVM | Automatic | Smart Contract Forwarder | Gas Tank | MON |
| Oasys | EVM | Automatic | Smart Contract Forwarder | Gas Tank | OAS |
| Optimism | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH (on Optimism Network) |
| Plasma | EVM | Automatic | Smart Contract Forwarder | Gas Tank | XPL |
| Polygon | EVM | Automatic | Smart Contract Forwarder | Gas Tank | POLYGON |
| SEI EVM | EVM | Automatic | Smart Contract Forwarder | Gas Tank | SEIEVM |
| Somnia | EVM | Automatic | Smart Contract Forwarder | Gas Tank | SOMI |
| Soneium | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH (on Soneium Network) |
| Songbird | EVM | Automatic | Smart Contract Forwarder | Gas Tank | SGB |
| Sonic | EVM | Automatic | Smart Contract Forwarder | Gas Tank | SONIC |
| WeMix | EVM | Automatic | Smart Contract Forwarder | Gas Tank | WEMIX |
| WorldChain | EVM | Automatic | Smart Contract Forwarder | Gas Tank | ETH (on Worldchain Network) |
| XDC | EVM | Automatic | Smart Contract Forwarder | Gas Tank | XDC |
| Zero Gravity | EVM | Automatic | Smart Contract Forwarder | Gas Tank | 0G |
See Also
Updated about 9 hours ago