Wallet and Forwarder Versions
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. To learn about manual consolidations, see Consolidate Account Balance.
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 to route assets directly from receive addresses to the base address. For these wallets, all deposited assets are immediately available in the spendable balance. You can view all these assets in the Consolidation Reference.
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 | ✅ |
Differences
The following lists outline the differences between the wallet and forwarder versions:
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. To learn more, see Consolidation Reference.
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.
See Also
Updated 6 days ago