Tracking xCalls
Every xcall
is associated with a unique transferId
that can be used to track its lifecycle through a cross-chain transaction.
Querying Subgraphs
You can query the hosted subgraphs on each chain to check the transaction status.
Mainnet Subgraphs
Chain | Subgraph |
---|---|
Ethereum | v0-Mainnet |
Optimism | v0-Optimism |
Arbitrum | v0-Arbitrum |
Polygon | v0-Polygon |
Binance Smart Chain | v0-Bnb |
Gnosis | v0-Gnosis |
Testnet Subgraphs
Chain | Subgraph |
---|---|
Goerli | v0-Goerli |
Optimism-Goerli | v0-Opt-Goerli |
Mumbai | v0-Mumbai |
Make note of the transaction hash that interacted with the Connext contract.
Navigate to the hosted subgraph for the origin domain and query by the xcall's transaction hash or the transfer ID.
query OriginTransfer {
originTransfers(
where: {
# Query by the transaction hash of the xcall
transactionHash: "<TRANSACTION_HASH>",
# Or by the xcall's transfer ID
transferId: "<TRANSFER_ID>"
}
) {
# Meta Data
chainId
nonce
transferId
to
delegate
receiveLocal
callData
slippage
originSender
originDomain
destinationDomain
transactionHash
bridgedAmt
status
timestamp
normalizedIn
# Asset Data
asset {
id
adoptedAsset
canonicalId
canonicalDomain
}
}
}Navigate to the hosted subgraph for the destination domain and query by the
transferId
obtained from the origin domain subgraph.query DestinationTransfer {
destinationTransfers(
where: {
transferId: "<TRANSFER_ID>"
}
) {
# Meta Data
chainId
nonce
transferId
to
callData
originDomain
destinationDomain
delegate
# Asset Data
asset {
id
}
bridgedAmt
# Executed event Data
status
routers {
id
}
originSender
# Executed Transaction
executedCaller
executedTransactionHash
executedTimestamp
executedGasPrice
executedGasLimit
executedBlockNumber
# Reconciled Transaction
reconciledCaller
reconciledTransactionHash
reconciledTimestamp
reconciledGasPrice
reconciledGasLimit
reconciledBlockNumber
routersFee
slippage
}
}If there was a nested
xcall
involved on the destination side, theexecutedTransactionHash
from step 3 can be used as the new origin-side transaction hash. To trace the nestedxcall
, go back to step 1 using thisexecutedTransactionHash
but instead consider the current destination domain as the origin domain.
Connextscan
Another option is using Connextscan to track the status of any transferId
.
In the top right search box, enter the transferId
of interest.
![Connextscan Search](/img/guides/connextscan_search.png)
Connextscan will pull up current status of the associated xcall
. This is what it looks like when a transfer is complete.
![Connextscan Search](/img/guides/connextscan_complete.png)
XCall Status
Status | Description |
---|---|
XCalled | Transaction has been initiated on origin. |
Executed | Funds have been delivered and calldata executed on destination, if applicable. If this happens before Reconciled, then this was a fast path transfer (non-authenticated). |
Reconciled | Funds have been reimbursed to routers. If this happens before Executed, then this was a slow path transfer (authenticated). |
CompletedFast | Transaction has been Executed and then Reconciled. |
CompletedSlow | Transaction has been Reconciled and then Executed. |