> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SpookySwap (spookyswap)

> DEX on Fantom with UniV2-style constant product pools (x*y=k). Features yield farming, cross-chain bridges, and limit orders.

DEX on Fantom with UniV2-style constant product pools (x\*y=k). Features yield farming, cross-chain bridges, and limit orders.

| Fact | Value |
| - | - |
| Category | DEX |
| Family | none |
| Namespace | `Spookyswap` on fantom |
| Chains | fantom |

## What it offers

* **swap**: Swap exact input tokens through a routing path
* **addLiquidity**: Deposit two tokens to mint LP tokens
* **removeLiquidity**: Burn LP tokens to withdraw underlying tokens

## Notes

* Standard Uniswap V2 fork interface; 0.2% fee per swap (lower than standard 0.3%)
* Fantom-only deployment
* BOO token is the governance/staking token (stake for xBOO to earn fees)
* SushiSwap is also deployed on Fantom as an alternative
* Both tokens must be ERC20-approved to the Router before swap/addLiquidity

## Its names in a program

On Fantom, `Spookyswap` is a namespace: its contracts need no import.

```ts theme={null}
function main() {
  // Fantom's v2Router, `0xF491e7B69E4244ad4002BC14e878a34207E38c29`.
  require(Spookyswap.V2Router != 0);
}
```

## Deployments

| Chain | Contract | Address | In a program |
| - | - | - | - |
| [Fantom](https://docs.eco.com/sauce-sdk/reference/chains/fantom.md) | v2Router | `0xF491e7B69E4244ad4002BC14e878a34207E38c29` | `Spookyswap.V2Router` |

## ABI

### `SpookySwapRouterABI`

`import SpookySwapRouterABI from "./protocols/spookyswap/SpookySwapRouterABI.json";` Speaks for: v2Router.

* `swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] path, address to, uint256 deadline) returns (uint256[] amounts)`
* `addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)`
* `removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB)`

## Next steps

* [Protocols](https://docs.eco.com/sauce-sdk/reference/protocols.md): the other protocols, by what they do.
* [Protocols and tokens](https://docs.eco.com/sauce/names.md): calling a contract by its namespace, or through its ABI.
* [Glossary](https://docs.eco.com/sauce/glossary.md): the words these pages use, in plain terms.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.