Bridge withdrawal troubleshooting guide
If your withdrawal from Chromia to EVM doesn't appear on the EVM chain, follow these steps to identify and resolve the issue.
1. Verify the withdrawal operation was successful on the Bridge Chain
If you encounter the error
ERC20 token not found for network ID {...}, ft4 asset ID {...}, and ERC20 token address {...}
, it indicates that the
ERC-20 token isn't registered on the Bridge chain. To verify the registration of the ERC-20 token, use the following CLI
command:
chr query --api-url $NODE -brid $BRIDGE eif.hbridge.get_registered_erc20_assets -- network_id=56
If you receive the error Can only withdraw to your own account
, it means that your FT4 account isn't linked to the EVM
address.
To verify that your FT4 account is linked, use the following CLI command:
# For EOA address
chr query --api-url $NODE -brid $BRIDGE eif.hbridge.get_eoa_addresses_for_account -- account_id='x"{FT4_ACCOUNT_ID}"'
# For smart contract address
chr query --api-url $NODE -brid $BRIDGE eif.hbridge.get_sc_addresses_for_account -- account_id='x"{FT4_ACCOUNT_ID}"'
You can also check whether the withdrawal request was successfully created and is in the correct state with this command:
chr query --api-url $NODE -brid $BRIDGE eif.hbridge.get_erc20_withdrawals -- filter='[null,null,x"{EVM_BENEFICIARY_ADDRESS}",null,null,null,null]' page_size=null page_cursor=null
To see additional filter fields for the withdrawal query, refer to withdrawals.rell.
2. Verify the withdrawal request on the EVM side
This section covers the most common issues that may arise when a withdrawal request can't be created on the EVM side.
-
TokenBridge: blockchain rid is not set
– This error means that the Token Bridge wasn't initialized with the blockchain RID. -
TokenBridge: event hash was already used
– This error indicates that the withdrawal event has already been used for a withdrawal request. -
TokenBridge: block signature is invalid
– This error likely means that the validator set in theValidator
orManagedValidator
contract is not updated.
To verify whether the validator set is current, use the following CLI command:
postchain-eif-contracts$ npx inspect:bridge --network {NETWORK} --bridge-address {BRIDGE_ADDRESS}
In this command, {NETWORK}
can be one of ethereum
, bsc
, sepolia
, or bsc_testnet
. If the validator set differs
from the one in the Directory Chain Validator contract, it indicates that it has not been updated.
The next step is to verify the updateValidators
EVM transaction on the Transaction Submitter chain and manually
re-submit the failed transaction.
3. Complete withdrawal on the EVM side
While completing the withdrawal on the EVM side, you may encounter the following errors:
-
TokenBridge: no fund for the beneficiary
– This error occurs when attempting to withdraw funds for a beneficiary address that doesn't match the one specified in the withdrawal request. Ensure you are using the correct beneficiary address as stated during the creation of the withdrawal request. -
TokenBridge: not mature enough to withdraw the fund
– This error means that the required number of block confirmations hasn't yet been reached. The confirmation period is set during bridge initialization using the--offset
parameter. The recommended value for mainnet(s) is equivalent to 72 hours. -
TokenBridge: fund is pending or was already claimed
– This error indicates that either:- The withdrawal is still in a
Pending
state and isn't yet ready to be claimed. - The withdrawal has already been claimed previously and can't be claimed again (
Withdrawn
orPostchainWithdrawn
states).
- The withdrawal is still in a