# Cross-Chain Swap

Cross-chain swaps allow users to trade assets across different blockchain ecosystems without needing to rely on centralized exchanges. Unizen provides a unique advantage by leveraging the Unizen Liquidity Distribution Mechanism (ULDM) to optimize both the source and destination network liquidity.

This document provides an overview of the Unizen API for cross-chain transactions via the Unizen DEX aggregator. The API provides access to all available quotes for a trade from supported DEXes across different blockchains, as well as the ability to generate transaction data for a trade.

With Unizen's trading architecture, users can easily access and trade over 20,000 digital assets across more than 160 decentralized exchanges and 7 blockchains, making it a powerful tool for cross-chain trading and asset management.

#### Available Endpoints <a href="#available-endpoints" id="available-endpoints"></a>

The Unizen API for cross-chain transactions provides the following endpoints:

* `GET /trade/v1/{chainId}/quote/cross`: Find all available quotes for a cross-chain trade via the Unizen DEX aggregator.
* `GET /trade/v1/{chainId}/swap/cross`: Generate transaction data for a cross-chain trade via the Unizen DEX aggregator.

| Network             | Quote Endpoint              | Swap Endpoint              |
| ------------------- | --------------------------- | -------------------------- |
| Ethereum (Mainnet)  | /trade/v1/1/quote/cross     | /trade/v1/1/swap/cross     |
| Polygon             | /trade/v1/137/quote/cross   | /trade/v1/137/swap/cross   |
| Binance Smart Chain | /trade/v1/56/quote/cross    | /trade/v1/56/swap/cross    |
| Optimism            | /trade/v1/10/quote/cross    | /trade/v1/10/swap/cross    |
| Fantom              | /trade/v1/250/quote/cross   | /trade/v1/250/swap/cross   |
| Avalanche           | /trade/v1/43114/quote/cross | /trade/v1/43114/swap/cross |
| Arbitrum            | /trade/v1/42161/quote/cross | /trade/v1/42161/swap/cross |
| Base                | /trade/v1/8453/quote/cross  | /trade/v1/8453/swap/cross  |

#### How it works. Using the Unizen API for Cross-Chain Transactions <a href="#using-the-unizen-api-for-cross-chain-transactions" id="using-the-unizen-api-for-cross-chain-transactions"></a>

1. Call `GET /trade/v1/{chainId}/quote/cross` to get all available quotes for a cross-chain trade via the Unizen DEX aggregator.
2. Call `GET /trade/v1/{chainId}/swap/cross` to generate transaction data for a cross-chain trade via the Unizen DEX aggregator.
3. Send the transaction to the DEX aggregator contract using the `sendTransaction` function, passing in the `from` address, `to` address, `data`, `gasPrice`, `gasLimit`, and `value` parameters.

**Note**: you can avoid calling the 2nd step (swap call) if you pass the sender and the parameter disableEstimateGas=false to the quote endpoint, so you will get the gas estimation and the transaction data to conduct the trade

**Cost Calculation for Cross-Chain Swaps**:

* **When Trading with Native Currency**:
  * **Total Spend** = `nativeValue` + `native Fee` (from our quote API) + `transaction fee` (gas limit \* gas price)
* **When Trading with Tokens**:
  * **Total Spend** = `amount of token to trade` + `native Fee` (from our quote API, payable in native ETH, BNB, MATIC, etc.) + `transaction fee` (gas limit \* gas price)

Here you have some more clarifications:

* **`nativeValue`**: This represents the gas cost on the origin chain. It is calculated based on a gas estimation performed on that chain.
* **`nativeFee`**: This is the total fee charged by the interoperability provider. It includes both the provider's fee and the gas cost incurred on the destination chain.
* **Cross-Chain Quote Endpoint**: By default, the `nativeFee` is returned. If the parameter `disableEstimate` is set to `false`, the response will also include the `nativeValue` and the gas estimation details.
* **Swap Endpoint**: This endpoint returns all values (`nativeFee`, `nativeValue`, and gas estimation) by default.

**Handling Trade Failures on Destination Chain**:

* In cross-chain trades, the trade on the destination chain can sometimes fail due to market conditions.
* If the trade fails and the funds (in stablecoins) have already been sent to the destination chain using an interoperability provider, the user will receive these funds in stablecoins.
* Trade failures can occur because the trade on the destination chain is executed after the trade on the origin chain and the interoperability provider's execution, during which market conditions may change.
* Use the information endpoints related to trades to monitor and know the status of a trade.

**Minimum Trade Amount**:

* The minimum amount to trade is $10 (in USD value of tokens). Trades with amounts below this limit are not allowed.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.unizen.io/api-get-started/cross-chain-swap.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
