# Trade

Carbon DeFi allows trading between any token pair with active orders.&#x20;

Trading on Carbon DeFi is similar to other decentralized exchanges (DEXes). Users specify the tokens they want to trade, and see the expected results before executing a transaction. Carbon DeFi supports native ETH, wrapped ETH (wETH), USDC, USDT, wBTC, BNT and all other standard ERC20 tokens.

Carbon DeFi includes two functions for trading that enable user flexibility:  &#x20;

1. [tradeBySourceAmount](https://docs.carbondefi.xyz/contracts-and-functions/carboncontroller-functions/write-functions/trade/tradebysourceamount): where the user nominates an amount of tokens to send to the smart contracts, and the smart contracts calculate an amount of tokens to send back.
2. [tradeByTargetAmount](https://docs.carbondefi.xyz/contracts-and-functions/carboncontroller-functions/write-functions/trade/tradebytargetamount): where the user nominates an amount of tokens to receive from the smart contracts, and the smart contracts calculate an amount of tokens for the user to send.  &#x20;

{% hint style="danger" %}
Only standard ERC20 tokens are supported \
(rebase, fee-on-transfer etc are not supported)
{% endhint %}

{% hint style="success" %}
While all required data is available on-chain, it is recommended to use the [Carbon DeFi SDK](https://docs.carbondefi.xyz/developer-guides/carbon-defi-sdk).
{% endhint %}
