Please note, your funds are never lost! Connext is always non-custodial and your funds are always retrievable. In the worst possible case, you can reclaim your funds on the original chain 72 hours from the time you sent them.

This document is also available in:

🇹🇭 Thai

Español

Thai

Debugging a Stuck Transfer

Understanding the Transfer Lifecycle

When debugging a stuck transfer, it is important to understand the lifecycle of a crosschain transaction.

The NXTP crosschain transaction lifecycle.

The NXTP crosschain transaction lifecycle.

There are three phases:

  1. Auction: During this phase, you (the user) are paired with a router (liquidity provider) who will provide the exit liquidity for your transfer. For example, if you are transferring DAI from Optimism to Arbitrum the router would provide the DAI on Arbitrum in exchange for the DAI you supply on Optimism. Router selection is based on
  2. Prepare: During this phase, both parties lock up funds for a transfer — the user on the sending chain and the router on the receiving chain. Routers wait for the subgraph (a piece of infrastructure to easily process complex chain data) to show the user transfer before locking up liquidity on the receiving chain.
  3. Fulfill: During this phase, both parties unlock the funds for a transfer. The user provides a signature that is used to unlock their funds on the receiving chain, and the router uses the same signature to unlock the funds on the sending chain.

Once prepared, the transfer may be cancelled once it expires by either party if it is not fulfilled. Alternatively, the person who is owed funds can cancel the transfer prior to expiry rather than fulfilling. This means as soon as the transaction has been prepared, the user can cancel the transfer on the receiving chain while the router can cancel the transfer on the sending chain.

Steps to Debug

The following will show pictures from xpollinate.io, but the steps are the same to debug any NXTP transaction even if it is initiated from a different website!

  1. Make sure the funds have left your wallet, and the transaction you are concerned about is related to xpollinate. Our preferred explorer is tenderly, but you should be able to see the transaction calling prepare on any explorer!

  2. Copy the Transaction Id from the UI

    The Transaction Id is the unique identifier for your crosschain transaction. It's the most helpful for finding out information about a given transfer using the explorer.

    The Transaction Id is the unique identifier for your crosschain transaction. It's the most helpful for finding out information about a given transfer using the explorer.

  3. Look up the transaction using the ID on connextscan.io.

  4. If you do not see the transaction on the explorer, check the subgraph sync status on xpollinate.io. If the status is unsynced, you will have to wait a bit longer for your transaction to be picked up by the network.

    Easily check the subgraph sync status from the xpollinate website. If the sending or receiving chain subgraph shows "unsynced", expect longer wait times for your transfer.

    Easily check the subgraph sync status from the xpollinate website. If the sending or receiving chain subgraph shows "unsynced", expect longer wait times for your transfer.