# What is Arcadex?

Arcadex is an order book DEX that allows liquidity providers to post arbitrary smart contracts (hooks) as offers. This enables features such as re-staking of liquidity held on other protocols, liquidity amplification and liquidity provision via custom strategies.

### Unlock your liquidity[​](https://docs.mangrove.exchange/#unlock-your-liquidity)

Arcadex's order book DEX lists promises instead of locked commitments (liquidity is not locked on Arcadex). It can be employed elsewhere until the offer is matched. For example, you can provide liquidity (LP) on another exchange and use this LPed liquidity on Arcadex at the same time to trade or run strategies. This way, you can earn from up to any sources of yields, spread and rewards.


# Smart offers

The main difference between Arcadex and other DEXs is the ability to attach code to offers (check out Smart Offers for more information). This translates into several disruptive mechanisms:

* **Reactive liquidity**\
  The liquidity on offer on Arcadex **is not locked in a pool**. As long as an offer posted on Arcadex is not taken, it can generate yield elsewhere on the chain - Aave, Compound or Morpho are great examples of protocols where you could leave your liquidity to grow, waiting to be sourced.
* **Last look**\
  Since an offer contains code, **defensive mechanisms can be baked in** to cancel a promise previously made:
  * For instance, if the market conditions are not anymore satisfactory at the time the offer is taken VS when it was posted
  * Code can cover any unwanted case scenarios (ex: high volatility), and therefore can mitigate/solve problems of slippage and arbitrage
  * Code helps make zero-latency trading decisions, with as much information as available on-chain at the time the trade occurs
* **Persistence**\
  Through the executed code, the **offer can automatically repost itself** on the order book. For someone who is posting offers (we call them Makers, or Market Makers), this is very handy because they can immediately update the amount of tokens they are offering after some of it has been taken. People that take offers are called Takers.

Smart contracts can be attached to offers, which gives the Maker total freedom in setting his sourcing trade parameters.

**Other powerful applications of smart offers**[**​**](https://docs.mangrove.exchange/#powerful-applications-of-smart-offers)**:**

* **Bounty:** every single failed offer is compensated with a bounty; Keeper bots can make money, and Takers don't lose any.
* **Permissionless:** everyone can interact with the core protocol without having to ask permission nor risking to be censored.
* **Non-custodial:** Arcadex users retain full control over their funds - the exchange does not hold custody of their assets.


# Bounty

What if everyone makes empty promises, and the offers in the book are all meant to fail? This is where Makers **must leave a native token provision (the bounty)** in their offer. Nothing prevents them from posting offers that will always fail. So, to ensure that the offers displayed on the book are credible, it must be costly for Makers to post orders that are not meant to go through. And in that case scenario, the bounty is then given to the Taker as compensation.

At first, **this might appear to favor Makers**. However, with advanced market-making features that allow them to accept or cancel offers, **Makers can mitigate their risk** and offer better prices. Ultimately, both Makers and Takers benefit: the risk of offer failure is essential for the effectiveness of smart offers.

Let's spend more time understanding [Makers](/star-here/what-is-arcadex/makers-takers-keepers/makers), [Takers](/star-here/what-is-arcadex/makers-takers-keepers/takers), and [Keepers ](/star-here/what-is-arcadex/makers-takers-keepers/keepers)(yes, that last one is a new term), shall we?


# Makers, Takers, Keepers

In the Arcadex ecosystem, three key participants interact to facilitate a dynamic and decentralized trading environment: [Makers](/star-here/what-is-arcadex/makers-takers-keepers/makers), [Takers](/star-here/what-is-arcadex/makers-takers-keepers/takers), and [Keepers](/star-here/what-is-arcadex/makers-takers-keepers/keepers). Together, they form the backbone of the Arcadex ecosystem, each playing a unique yet interconnected role in ensuring a seamless and effective trading experience.

Here is a simplified three-step diagram of Arcadex unlocked assets and offer-is-code approach. It also introduces the three main actors on Arcadex DEX.


# Makers

Makers are participants or entities within the Arcadex ecosystem who are responsible for creating and listing offers on the platform. They can specify the conditions of their offers, such as the type and quantity of assets to be exchanged, the price, and any other relevant terms. For example, they promise to give a Taker some apples 🍎 if he gives them oranges 🍊 in return.

By initiating these offers, Makers enable transactions to occur within the Arcadex Protocol, contributing to a vibrant market.


# Takers

**Takers** respond to the offers set up by [Makers](/star-here/what-is-arcadex/makers-takers-keepers/makers). They critically assess these offers, considering factors like asset types, quantities, and prices.

The role of Takers is crucial in completing transactions within the Arcadex marketplace. When a Taker agrees to the terms of an offer, they effectively seals the deal proposed by the Maker, leading to the execution of the trade.

Takers provide the necessary demand and liquidity in the marketplace, ensuring that the offers created by Makers are fulfilled. Their actions complete the cycle of trading activity within the Arcadex ecosystem, making it a dynamic and interactive platform for exchanges.

Takers have the ability to buy or sell assets on Arcadex, using either market or limit orders, akin to a traditional orderbook. They can execute these offers through general orders or choose to clean them individually.

This interaction between Takers and Makers completes the trading cycle in the Arcadex ecosystem, enhancing its interactivity and liquidity.

The workflow for Takers involves executing the logic of all relevant smart offers upon an order's placement. Successful orders are removed from the book, and the process continues until the Taker's order is completely filled. If a Maker withdraws their offer and fails to match the liquidity, the Taker is compensated with a penalty (bounty), and Arcadex proceeds to the next offer. This ensures that Takers are appropriately remunerated and that the order book remains efficient.


# Keepers

Keepers functioning as automated bots that ensure the order book remains relevant and efficient. As market conditions evolve, the order book may become congested with outdated or irrelevant orders. Keepers play a pivotal role in addressing this by continuously monitoring the order book.

Their primary responsibility is to identify offers that are failing. Once a failing offer is detected, Keepers targets them to clean them off the book. This action involves setting a gas price in such a way that the offer’s bounty offsets the gas expenditure. Essentially, Keepers act as the custodians of the Arcadex ecosystem, maintaining its integrity and smooth operation.

In addition to managing failing offers, Keepers are tasked with keeping the gas price up to date. This is crucial for determining the compensation for [Takers ](/star-here/what-is-arcadex/makers-takers-keepers/takers)who remove a failing offer from the list. By doing so, Keepers ensure that Takers are appropriately remunerated for their role in sustaining the efficiency and cleanliness of the order book.

Through these functions, Keepers play an indispensable role in the maintenance and operational effectiveness of the Arcadex ecosystem, safeguarding its functionality and reliability.


# Why Arcadex ?

### **Deploy Your Own Composable Strategy**

Arcadex empowers liquidity providers with unparalleled flexibility, enabling them to customize and control their strategies:

* **Customizable Offer Management**: Liquidity providers can incorporate defensive code within their offers, post unprovisioned offers, and redisplay liquidity seamlessly after their offers are taken, ensuring optimized participation in the market.
* **Full Control Over Strategy Parameters**: Arcadex gives you the freedom to set precise parameters for your strategy, allowing you to align your liquidity provision with your specific risk and reward preferences.
* **Amplified Liquidity**: Maximize your trading potential by leveraging your liquidity across multiple pairs simultaneously. For example, you can place offers on both the WETH/USDB and WBTC/USDB pairs using the same USDB liquidity, efficiently broadening your market presence.
* **Multi-Liquidity Sourcing**: Your smart offers on Arcadex can source liquidity from external sources, dynamically offering it to the taker. This capability enables profitable arbitrage opportunities, as your offer can bridge liquidity from various sources in real time.

### **Explore Yield Opportunities on the Earn Page**

The [**Earn** ](/dapp-guide/earn)page on Arcadex's DApp lets you explore and manage yield-generating positions within available vaults, built on Arcadex's. This feature not only allows liquidity providers to earn rewards but also enables **vault managers** to design and implement innovative DeFi strategies. By harnessing Arcadex’s unique liquidity provisioning, vault managers can create dynamic, adaptable strategies that respond to market conditions in real time, opening up new avenues for yield generation.


# Who is the Arcadex dApp for?

The Arcadex **DApp** is designed for DeFi users seeking flexible, efficient, and innovative ways to manage liquidity and execute trades. It’s particularly suited for:

* **Liquidity Providers**: Those who want to earn yield by placing offers in multiple markets without locking up their assets. Arcadex's unique approach allows liquidity providers to source funds dynamically, maximizing capital efficiency and unlocking additional earning opportunities.
* **Traders**: From beginners to experienced DeFi traders, Arcadex offers advanced trading features, including limit and amplified orders, with real-time order book data, market depth, and price charts. Traders can benefit from customized order options, like setting specific prices and durations for limit orders.
* **Yield Farmers**: For DeFi users aiming to maximize their rewards, Arcadex’s unique approach to liquidity provisioning offers a powerful advantage. By allowing assets to remain unlocked, Arcadex enables yield farmers to participate in multiple opportunities simultaneously, effectively compounding their earning potential across various protocols. With the flexibility to dynamically source liquidity, farmers can respond to market conditions, moving their funds to the most profitable yield-generating options without being restricted by asset lock-up.
* **Developers and Integrators**: Arcadex’s protocol is designed as a foundational layer for developers and projects that want to bring decentralized trading and liquidity management capabilities to their platforms. By leveraging Arcadex’s flexible, modular infrastructure, developers can integrate novel liquidity strategies, such as the amplified order feature, allowing assets to be used in multiple orders at once. This enables new and innovative DeFi applications that extend beyond traditional models, paving the way for composable and efficient decentralized financial solutions. As highlighted in our recent article, Arcadex is redefining the potential of liquidity in DeFi, offering developers a toolkit for the next generation of financial applications.

In summary, Arcadex is ideal for anyone in the DeFi space looking for innovative, flexible tools to optimize liquidity and trading strategies across multiple markets.


# FAQ

<details>

<summary>Why do my transactions keep failing?​</summary>

Here are a few reasons as to why your transactions are failing on Arcadex exchange:

* The amount of gas or slippage you selected is too low - we encourage you to tweak those values and find out what works best for your trades.
* The density for your Limit order is too low - if you're trying to place a Limit order with a small amount, your order will fail and will not be executed. Arcadex requires that you provide a token amount greater than the amount of gas the triggered offer requires to be executed (called density).
* You can check the minimum volume required to post a limit order [here](https://docs.oxium.xyz/dapp-guide/trade/how-to-make-an-order/limit-order).

</details>

<details>

<summary>The approval amount for my limit orders seems odd - what is going on?​</summary>

**TL;DR**

* A rule of thumb for limit orders to avoid order failure due to lack of approval is to make sure you approve at least double the amount you target (or infinite approval).
* The easy way to do this is to use the "Use default" option on your wallet when executing an approval.

**Let's now clarify the difference between the "Max" and "Use default" approval values offered by your wallet.**

* "Max" will give you the maximum amount available in your wallet.
* If you have ticked the "allow infinite approval" on Arcadex app, "Use default" will give you an "infinite approval" amount.
* If you have unticked the "allow infinite approval" on Arcadex app, "Use default" will give you the maximum amount available in your wallet based on what you've keyed in. That amount differs **whether you are executing a market order or a limit order**.

**Example (no infinite approval)**

* Market order: if you want to buy some WETH with let's say 20 USDC, "Use default" will set the approval amount at *20 + slippage*. For a 2% slippage, the amount to approve would be 20.4 USDC.
* Limit order: if you want to buy some WETH for 20 USDC of worth with a limit order (ex: Good til time), "Use default" will set the approval amount at *40 (20 \* 2)*.
  * If you have multiple open limit orders for the same token, the approvals then need to compound.
  * Example: if you create another Good til time limit order for 20 USDC of worth, the approval amount will be 40 (previous limit order) + 40 (new limit order) = 80 USDC.

</details>

<details>

<summary>Where is my transaction history?​</summary>

Which order type are you trying to execute? There are subtle differences between the various limit orders available on our Trade page. They might appear/be processed differently. We encourage you to first read the [More on order types](https://docs.oxium.xyz/dapp-guide/trade/how-to-make-an-order/more-on-order-types) section.

</details>

<details>

<summary>Who pays the gas on Arcadex?​</summary>

If the offer succeeds, the gas costs for the execution of the trade are paid by the offer taker. If the offer fails the taker is compensated for these gas costs.

</details>

<details>

<summary>What happens when an offer fails?​</summary>

Offers in the order book may fail when taken, either because the maker consciously chose to renege on the offer to trade, or because the maker contract reverted for other reasons. In that case, the taker has wasted some gas and will be compensated using the offer provision (in native token) that the maker has deposited in Arcadex.

</details>

<details>

<summary>Are Arcadex market orders the same as traditional market orders?​</summary>

Arcadex's market orders are DeFi market orders - which are different from market orders in TradFi:

In TradFi, a market order is an order to buy or sell immediately at the best available price.

In DeFi, where transactions can be [front-run](https://www.investopedia.com/terms/f/frontrunning.asp) or [sandwiched](https://coinmarketcap.com/alexandria/article/what-are-sandwich-attacks-in-defi-and-how-can-you-avoid-them), adversaries may manipulate the best available price and thus extract value from a market order as there is no limit on the price. TradFi market orders are therefore unsafe for fully on-chain DEX'es like Arcadex.

To protect the user, Arcadex's market order therefore corresponds to a [**limit order**](https://www.investopedia.com/terms/l/limitorder.asp) in TradFi: An order to buy or sell at or below a given price. More precisely, Arcadex ensures that the **average** price of the offers matched with the order does not exceed the specified price.

TL;DR: Arcadex market order = TradFi limit order.

</details>


# Glossary

**Amplified Liquidity​**

An offer on Arcadex that is undercollateralized.

**Base / Quote​**

Base token is the traded asset, quoted in Quote token.

**Bounty**

A portion of an offer provision that is sent to the taker to compensate a failure to deliver.

**Cleaning Bot​**

An off-chain bot that keeps the order books clean by sniping failing offers.

**Density​**

The ratio of tokens promised by an offer over the gas it requires to be executed.

**Dual offer​**

An offer that is posted as a consequence of previous offer being taken.

**gasLimit**

The maximum gas requirement the taker will tolerate for an offer.

**gasprice**

An estimate of the price of a gas unit in native token amount.

**gasreq**

An upper bound of the gas units that an offer requires when called by Arcadex.

**Gives**

The volume of tokens an offer promises in exchange of the full volume of required (or wanted) tokens.

**Hook**

Internal functions in the building blocks of the Strat Lib, which may be overridden to change the default behavior of an offer logic.

**Inbound​**

The token type that an offer taker must send.

**Keeper Bot​**

An off-chain bot that helps keep Arcadex functioning optimally.

**Last Look​**

Feature of an offer logic that verifies whether trade execution should be cancelled.

**Maker Contract​**

A maker contract is a smart contract that is bound to a smart offer posted on Arcadex.

**Maker Partial Fill​**

When an incoming order partially takes the volume given by an offer.

**makerExecute​**

Callback function of an offer logic that is called by Arcadex prior to trade settlement.

**makerPosthook​**

The callback function of an offer logic that is called by Arcadex immediately after trade settlement.

**Offer ID​**

The identifier of an offer in a given offer list.

**Offer List​**

A list of offers on the same token pair, ranked from best price to worst price.

**Offer Logic​**

The part of a maker contract that is executed as a consequence of a call by Arcadex when processing a market order.

**Offer Owner​**

An account that is allowed to post, update or retract a specific offer posted by a maker contract.

**On-the-fly Offer​**

An offer posted by an EOA, in contrast with a smart offer, which is posted by a smart contract.

**Outbound​**

The token type that an offer taker will receive.

**Price**

Amount of quote tokens per base token that an offer demands or a taker is willing to pay

**Provision**

An amount of native tokens that is attached to a live offer on Arcadex and that is used to compensate a fail-to-deliver.

**Ratio**

The ratio 'wants/gives' between the amount an offer 'gives' and the amount it 'wants'.

**Reactive Liquidity​**

Liquidity providers can post offers that are not fully provisioned. It is enough that their code brings the promised liquidity at match-time. In the meantime, it can be put to work.

**Renege​**

Makers can renege on the offer to trade by incorporating defensive code in the maker contract (e.g., because the market conditions changed).

**Reserve identifier​**

An immutable address identifying the fund owner when using a router

**Router**

A smart contract building block provided by the Strat Lib that is used by an offer logic to manage liquidity in a modular fashion.

**Smart Offer​**

An offer that is bound to a smart contract, as opposed to an on-the-fly offer.

**Taker Fee​**

A portion of the tokens promised to the taker that are sent to the Arcadex protocol's vault.

**Tick​**

A 'price point' corresponding to the ratio 1.0001^tick

**tickSpacing​**

Controls the granularity of available price points in an offer list.

**Wants​**

The volume of tokens an offer wants in exchange of the full volume of promised (or given) tokens.


# Swap

With Arcadex’s swap page, you can swap tokens quickly and seamlessly. This feature allows you to execute market orders with ease, ensuring that you get the best available price without the hassle of complicated configurations.

**Step 1: Connect Your Wallet**

Click the **"Connect Wallet"** button at the bottom of the swap interface. This will open a pop-up for selecting and authorizing your wallet, allowing it to interact with Arcadex’s DApp on the chosen network.

**Disconnecting Your Wallet**: To disconnect your wallet, click on your wallet address in the top right corner. This will bring up a small pop-up with options to **Copy Address** and **Disconnect**. Click **Disconnect** to securely log out your wallet from the DApp.

**Step 2: Select Tokens for Swapping**

* With your wallet connected and network set, proceed with choosing the tokens for the swap.
* **Sell** and **Buy Sections**: The swap interface is divided into two main sections:
  * **Sell**: The token you’re offering in the swap.
  * **Buy**: The token you’ll receive in exchange.

1. **Token Selection**: Click the dropdown next to each token icon to select the token type. The available options may vary depending on the selected network.
2. **Enter Amount**:
   * **Sell Amount**: Enter the amount of the token you want to swap in the **Sell** field. An equivalent USD value is displayed below for reference.
   * **Buy Amount**: After entering the sell amount, the buy amount will auto-calculate based on the current market rate.

If you wish to reverse the **Sell** and **Buy** tokens, you can click **Swap Direction** button (↔) between the Sell and Buy sections to reverse the tokens and quickly switch the trade direction. This will instantly switch the tokens, making the **Buy** token the **Sell** token, and vice versa, without needing to re-enter amounts.

**Note**: If the swap amount exceeds your balance, an **"Insufficient Balance"** message will appear. Make sure you have enough tokens to proceed.

**Step 3: Set Slippage Tolerance**

This controls the maximum price variation you’re willing to accept for the trade.

* **Available Options**: Choose from 0.1%, 0.5%, 1%, or set a **custom percentage**.
* **Use Case**: A lower tolerance limits price variation but may cause failed transactions if prices move. Higher tolerance increases the success rate but allows for more price fluctuation.

<figure><img src="https://2719346828-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fpeljr67Or3TDyhxkyIv3%2Fuploads%2Fz0IroFO16lYrMzZDxuaI%2FSlippage.png?alt=media&#x26;token=5c57e561-05ab-4095-9835-ccb7ec31a6ab" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2719346828-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fpeljr67Or3TDyhxkyIv3%2Fuploads%2FXumIkFSRFycsuENUr82a%2Fcustom_slippage.png?alt=media&#x26;token=3e4f7b22-f876-4013-ac79-27e8e17752b5" alt=""><figcaption></figcaption></figure>

**Step 4: Confirm Swap Details**

* Double-check all details, including token selections, amounts, and slippage tolerance.

**Step 5: Execute the Swap**

1. **Swap Button**: When ready, click the **"Swap"** button.
2. **Wallet Confirmation**: Approve the transaction in your connected wallet, including any gas fees required by the network.

**Additional Interface Elements**

**Network and Account Information**: Located in the top right corner, this area shows both your network and wallet address. You can switch networks or wallet anytime by using these buttons.


# Trade

The **Trade** page in Arcadex’s DApp provides a streamlined interface for trading tokens using three types of orders: **market** and **limit**. This page also includes real-time order books, trade history, and charting tools for tracking price movements and depth, enabling users to make informed trading decisions.

### **Types of Orders on** Arcadex **DEX**

On Arcadex DEX, there are three types of orders available:

1. **Market Order**: This type allows you to buy or sell a token at the current market price. Market orders are executed immediately, providing a quick and efficient trading option.
2. **Limit Order**: With a limit order, you set a specific buy or sell price for a token. The order will only execute when the market reaches the designated price, allowing you to control the trade’s entry or exit point based on your target price.

> **Note**: Before placing your first order, you will need to **approve** Arcadex to spend tokens on your behalf. This one-time authorization allows Arcadex to execute trades using your specified funds.

***

### **Accessing the Trade Page**

In the Arcadex DApp sidebar, click the **"Trade"** icon (two candlestick icons). This will open the trading interface, showing market information, order types, and trading options.

#### **Market Data Overview**

* **Price**: Displays the current price of the selected pair.
* **24h Change**: Shows the price change percentage over the last 24 hours.
* **24h High/Low**: Indicates the highest and lowest prices within the past 24 hours.
* **24h Volume**: Shows the total trading volume for the pair in the past 24 hours.

#### **Charting Options**

* **Depth Chart**: This chart visually represents the buy and sell orders on the order book, giving insights into market depth and potential liquidity at different price points.
* **Price Chart**: The price chart (often integrated with TradingView) provides price movements over time. You can add indicators, adjust timeframes, and customize views to analyze historical trends and price action for the trading pair.

### Fees[​](https://docs.mangrove.exchange/general/web-app/trade/#fees) <a href="#fees" id="fees"></a>

Makers on Arcadex have no fees to pay, all fees are paid by the takers! Below is a table of the fees on different markets available on Arcadex.


# How to make an order

Due to the way Arcadex works, there is a minimum volume that you need to be aware of when you are placing your order.

### How to make an Order

In the following pages you can see the way to make various types of orders on Arcadex:

| Type         | Description                                                                                 |
| ------------ | ------------------------------------------------------------------------------------------- |
| Market Order | Buy or sell a token at the current market price, executed immediately                       |
| Limit Order  | Set a specific buy/sell price for a token, executed only when the market reaches that price |


# Market Order

A **Market Order** is the simplest and quickest way to trade on Arcadex. It allows you to buy or sell a token at the current market price and is executed immediately.

**Step 1: Access the Trade Page**

In the Arcadex DApp sidebar, click the **Trade** icon (two candlestick icons) to open the trading interface.

**Step 2: Select Trading Pair**

Choose the trading pair you wish to trade (e.g., **WSOMI/USDC**) from the dropdown at the top of the page.

**Step 3: Enter Trade Details**

* **Send Amount**: Input the amount of the token you want to buy or sell. Use shortcuts like **25%**, **50%**, **75%**, or **Max** to quickly select a portion of your balance.
* **Receive Amount**: This will auto-calculate based on the current market price.

**Step 4: Set Slippage Tolerance**

Define an acceptable slippage tolerance (e.g., 0.5%) to manage potential price variations during execution.

**Step 5: Review Fees**

The system displays the transaction fee for the market order.

**Step 6: Place the Market Order**

* Click **Buy** or **Sell** to execute the market order instantly.
* **Confirm the transaction** in your wallet.

Your order will execute at the best available price, and your tokens will be transferred immediately upon confirmation.


# Limit Order

A **Limit Order** allows you to specify a price at which you want to buy or sell a token. The order will only execute if the market reaches your specified price, giving you more control over the trade.

**Step 1: Access the Trade Page**

In the Arcadex DApp sidebar, click the **Trade** icon to open the trading interface.

**Step 2: Select Trading Pair**

Choose the trading pair you wish to trade from the dropdown at the top (e.g., **WSOMI/USDC**).

**Step 4: Choose Order Type**

Select Buy or Sell, then select **Limit** under the **Buy** or **Sell** tab on the right side of the interface.

**Step 5: Enter Trade Details**

* **Set Limit Price**: Enter the specific price at which you want to buy or sell the token.
* **Send Amount**: Input the amount of the token you want to trade. You can use shortcuts like **25%**, **50%**, **75%**, or **Max** based on your wallet balance.
* **Total**: This field shows the total amount in the quote currency (e.g., USDC) calculated from the limit price and amount entered.
* [**Minimum Volume**](/dapp-guide/trade/minimum-volume): The minimum required trade volume will be displayed.

**Step 6: Liquidity Sourcing**

Leave this as **Wallet** if you want this limit order to execute only from your wallet funds. Look at Amplified Orders' page if you want to surce liquidity from elsewhere.

**Step 7:** [**Set Time in Force**](/dapp-guide/trade/how-to-make-an-order/more-on-order-types)

* **GTC (Good Till Canceled)**: The order remains open until it is either fully executed or canceled by the user.
* **PO (Post Only)**: The order will only be added to the order book and will not match with an existing order immediately. This is ideal for users who want to avoid immediate execution and instead provide liquidity to the book.
* **IOC (Immediate or Cancel)**: The order will attempt to execute immediately for as much volume as possible. Any portion that cannot be filled instantly will be canceled.
* **FOK (Fill or Kill)**: The order will only execute if it can be filled completely at the specified price. If the full volume cannot be matched, the entire order is canceled.

Additionally, you can specify a **Time in Force duration** to further customize the order’s validity:

* After choosing your preferred **Time in Force** option, set a specific time duration in **days**, **hours**, or **minutes**. This allows you to specify, for example, "28 Days" or "6 Hours" for your order to remain active within those parameters.

**Step 8: Place the Limit Order**

* Click **Buy** or **Sell** to place the limit order.
* **Confirm the transaction** in your wallet to finalize the order.

Your limit order will now appear in **Open Orders** and will only execute if the market reaches your specified price.[<br>](https://docs.mangrove.exchange/general/web-app/trade/how-to-make-an-order/minimum-volume)


# More on order types

This section provides an overview of the various order types available on Arcadex:

* Market order
* Immediate or Cancel (IOC)
* Good 'til time (GTT)
* Fill or kill (FOK)

#### Market order[​](https://docs.mangrove.exchange/general/web-app/trade/more-on-order-types#market-order) <a href="#market-order" id="market-order"></a>

A market order is an order type used to buy or sell at the current market price.

* It is executed immediately, prioritizing speed over the specified price.
* The execution price of a market order may vary due to market fluctuations and order book liquidity.
* Unlike limit orders, market orders do not have a specific price parameter and **are subject to slippage**, where the executed price may differ from the expected price.

Example

You place an market order to buy 1 WETH, with a 3% slippage (i.e. you are willing to accept up to 3% of price slippage on your order). Your order could either be executed:

* In full at 1,800 USDC (desired price).
* In full at a price between 1,800 USDC and 1,854 USDC (with a slippage of 3%).
* Partially, depending on the liquidity available on the offer on the order book.
  * Ex: 0.5 WETH at 1,800 USDC + 0.25 WETH at 1,818 USDC (1% slippage) + 0.25 WETH at 1,854 USDC (3% slippage)

#### Immediate or Cancel (IOC)[​](https://docs.mangrove.exchange/general/web-app/trade/more-on-order-types#immediate-or-cancel-ioc) <a href="#immediate-or-cancel-ioc" id="immediate-or-cancel-ioc"></a>

While it may seem similar to a market order, there is a fundamental difference.

* With an IOC order, you set a specific limit price at which you want the order to be executed.
* The order will either be immediately filled at that exact price, fully or partially, or canceled entirely. It's about ensuring that your order is executed at your desired price, or not executed at all.
* The IOC order **does not allow for slippage**, meaning it won't be filled at a different price than what you specified (unlike a market order).

Example

You place an IOC order to buy 1 WETH at a max price limit of 1,800 USDC. Your order could either be:

* Fully taken immediately, i.e. you get your 1 WETH at the desired price.
* Partially taken immediately, i.e. you get 0.8 WETH at the desired price, and the rest is "canceled" (there is no resting order asking for the remainder).
* Canceled if there is no match on the order book.

#### Good 'til time (GTT)[​](https://docs.mangrove.exchange/general/web-app/trade/more-on-order-types#good-til-time-gtt) <a href="#good-til-time-gtt" id="good-til-time-gtt"></a>

It allows you to set an expiry date for your limit order (ex: active for 3 days, then canceled if not filled). A GTT order that was created, but that has not yet been filled will always show as "Filled" in the UI - it is a normal behavior.\\

Let us explain:

* When placing a GTT order, Arcadex will attempt to fill it entirely at the desired price.
* **Instant order** = the first execution of the order:
  * If it is a match and the fill is in full, it will be recorded in the UI as is.
  * If it can't be matched just yet, a fill at quantity "0" will be recorded in the UI for the instant order, and a **resting order** will be created.
* More on the fill at quantity "0":
  * That allows you to track in the UI that the order was successfully executed, even if no actual quantity was **yet** bought or sold.
  * It is crucial - without this, there would be no visual trace of what happened to the order you just placed (if not taken).
  * Your resting order is then waiting to be filled. There could potentially be multiple fills for that same order. Typically, there will be one fill for the initial order (0 or any other amount taken), and additional fills up until the resting order is fully taken.
* This mechanism ensures that even if there are partial fills or subsequent trades on the resting order, each execution is recorded separately.

Example

You place an GTT order to buy 1 WETH at a max price limit of 1,800 USDC, with a time limit of 3 days. Your order could be processed in several ways:

* **Instant full fill**: Your order is fully taken, immediately.
  * That means you obtain the target 1 WETH at the desired price.
  * A fill of the transaction will be recorded in the UI.
* **Instant partial fill + Resting Order**:
  * If your order is not entirely filled, a fill with the quantity that has been partially executed will be recorded in the UI.
  * Then, a new order will be created to capture the remaining quantity at the requested price. This order will be resting on the order book, waiting to be fully or partially taken, until the expiry date.
  * Each subsequent transaction that matches your resting order will be logged as a new fill until the order is fully executed or expired
* **No instant fill + Resting Order**:
  * If there is no matching order available on the order book at the time of placement, a "resting" order is posted in the book, waiting to be taken, either fully or partially.
  * Each transaction will log a new fill until the order is fully taken or expired.
* **Order Cancellation**: If there is no match for your order on the order book by the end of the specified time period (3 days in this case), the order will be automatically canceled.

#### Fill or Kill (FOK)[​](https://docs.mangrove.exchange/general/web-app/trade/more-on-order-types#fill-or-kill-fok) <a href="#fill-or-kill-fok" id="fill-or-kill-fok"></a>

The KOF order is an "all or nothing" instant order. It is similar to the IOC order in the sense that it executes immediately, but it does not allow for partial filling.

Example

You place an FOK order to buy 1 WETH at a max price limit of 1,800 USDC. Your order could either be:

* Fully taken immediately, i.e. you get your 1 WETH at the desired price.
* Canceled if there is no match on the order book.


# Approvals

### Infinite approval[​](https://docs.mangrove.exchange/general/web-app/trade/approve-buy#infinite-approval) <a href="#infinite-approval" id="infinite-approval"></a>

Before your order can succeed, you will have to approve Arcadex to transfer the funds.

1. After choosing your order parameters, you will have to click the "Buy" or "Sell" button.
2. It will trigger the approval process, starting with a pop-up. Click on "Proceed" then "Approve".
3. Your wallet will open - you can leave the suggested amount for an "infinite approval".

   caution

   Clicking "Max" will give you the maximum amount available in your wallet. This means you will have to re-approve each time you make an order.
4. Click next, review the transaction and click "Approve" on your wallet.
5. Wait for the transaction to be processed, and that's it - you're ready to trade!

On the following pages, you will find more details on how to execute different order types

### About Approvals[​](https://docs.mangrove.exchange/general/web-app/trade/approve-buy#about-approvals) <a href="#about-approvals" id="about-approvals"></a>

You can read some more about approvals in the FAQ section.

Here are a few things you should consider when it comes to approvals:

1. An approval is valid only for a specific order type of a specific market.

   > 💡 For example, if you approved a BUY market order for the WSEI/USDC market, this approval is not valid for SELL market orders for that same market. You have to approve again.
2. Approvals accumulate together.

   > 💡 For example, if you approve buy market order for WSEI/USDC market with a 1000 USDC and perform a market order for 100 USDC, you have 900 USDC in approved balance. If you perform the same action again ("Approve & Buy"), you'll have 1800 USDC of approved balance.
3. If your pre-approved amount is used up, your order will fail. An easy way around this is to perform an infinite approval.

### Revoke token approvals[​](https://docs.mangrove.exchange/general/web-app/trade/approve-buy#revoke-token-approvals) <a href="#revoke-token-approvals" id="revoke-token-approvals"></a>

To remove a dApp access to your wallet's tokens, you can revoke approvals previously granted. An easy way to do it would be to use [Revoke](https://revoke.cash/), for example. This will however risk your orders failing if you have open orders, so be sure you don't need the approvals.


# Minimum Volume

Due to the density on each market, there is a minimum token requirement when placing limit orders (except for IOC orders). You can read more about why your transactions might be failing in the FAQ.

This value will change based on the market and the source of liquidity you select, so please check the volume below in the app to make sure before you place your order!


# Earn

The **Earn** page on Arcadex's DApp lets you explore and manage yield-generating positions within available vaults, built on Arcadex's flexible liquidity engine. These vaults leverage Arcadex’s unique liquidity provisioning to offer optimized yield strategies, allowing you to earn rewards while maintaining liquidity flexibility. With Arcadex’s composable infrastructure, yield opportunities are more dynamic and adaptable to market conditions, giving liquidity providers enhanced control over their earnings. You can deposit tokens to earn yields, view your active positions, and monitor key metrics for each vault.

**Step 1: Accessing the Earn Page**

In the Arcadex DApp sidebar, click the **"Earn"** icon (the piggy bank icon). This will take you to the Earn page, where you can view all available vaults and your active positions.

**Step 2: Viewing Vaults and Strategies**

The Earn page is divided into two sections:

* **My Positions**: Displays any active positions you currently hold in different vaults.
* **Vaults**: Shows all available vaults, including their associated **market pairs** (e.g., WSOMI-USDC), **strategies** (such as Kandel), and **vault managers** (e.g., Redacted Labs). Key metrics, such as Total Value Locked (TVL) and annual percentage yield (APY), are also shown if available.

1. **Vault Market**: Each vault lists the token pair it supports, such as **WSOMI-USDC**.
2. **Strategy and Manager**: Each vault is managed by a specific strategy (like **Kandel**) and a vault manager (such as Arcade&#x78;**.fi**).
3. **APY and TVL**: View potential returns (APY) and the total funds locked in the vault (TVL).
   * **Filter and Search Options**: Use the **Search Vault** bar to find a specific vault by name or market. You can also use the **Filter** button to narrow down the list based on different criteria.

**Step 3: Selecting a Vault and Viewing Details**

1. **Select a Vault**: Click on a vault from the list to view more detailed information. This will open the **Vault Details** page, providing deeper insights into the vault’s performance and requirements.
2. **Vault Details Overview**:
   * **TVL and APY**: Shows the total value locked in the vault and its projected annual yield.
   * **Performance Fee**: This is the percentage fee taken by the vault manager from the profits generated.
   * **Strategy and Manager**: Details on the strategy used in the vault and the entity managing it.
   * **Deposit and Withdrawal Options**: The page provides sections for **Deposit** and **Withdraw**, allowing you to manage your funds within the vault.
3. **Vault Description and Charts**: Each vault includes a description (currently placeholder text in some cases) and a **performance chart** displaying metrics like APY and TVL trends over time. Charts labeled "Vault charts coming soon!" indicate that historical data is not yet available.

**Step 4: Depositing Funds into a Vault**

1. **Deposit Section**: On the right side of the Vault Details page, you’ll find the **Deposit** section.
2. **Select Deposit Amount**:
   * You can deposit tokens like WSOMI or USDC by selecting the desired amount. Use the percentage shortcuts (25%, 50%, 75%, Max) to quickly choose how much of your balance you want to deposit.
3. **Confirm Deposit**: Once you’ve selected the amount, click the **Deposit** button. Confirm the transaction in your wallet to finalize the deposit.

   **Note**: Ensure you have enough tokens in your wallet for the selected deposit, as well as enough to cover any network fees.

**Step 5: Withdrawing Funds from a Vault**

1. **Withdraw Tab**: Next to the Deposit tab, you’ll see the **Withdraw** tab. Click here if you wish to remove funds from the vault.
2. **Select Withdrawal Amount**: Choose the percentage of your funds in the vault you’d like to withdraw (25%, 50%, 75%, Max).
3. **Confirm Withdrawal**: Click the **Withdraw** button and confirm the transaction in your wallet to complete the withdrawal process.

   **Note**: Be aware of any withdrawal fees or delays that might apply depending on the vault’s strategy.

**Step 6: Monitoring Your Position and Rewards**

1. **My Position**: Under **My Position**, you can track your current balances in the vault, including each token (e.g., WSOMI and USDC), the minted amount of any vault-specific tokens, and other details.
2. **Rewards**: Below My Position, you’ll see the **Rewards** section, which shows any rewards you’ve accrued from the vault. Click **Claim Rewards** to transfer any available rewards to your wallet.


# Kandel


# What is Kandel?

Kandel is an Automated Market Making strategy that uses on-chain order flow to repost offers instantly, without any latency. It could be considered as a market-making bot equivalent that operates solely on the blockchain. It leverages **the interaction between buyers and sellers** that creates price movement, rather than the price itself.

Within a market and price range you select, Kandel automatically posts Bids and Asks. **Its main goal is to buy low and sell high** - profits are made through accumulated spread, i.e. the difference between the Bids and Asks that are taken.

[<br>](https://old.docs.mangrove.exchange/general/kandel/potential-risks/)


# How does Kandel Work?

This section is a detailed explanation of how Kandel works, introducing configuration parameters and key mechanics. For the sake of simplicity, we have clearly separated the startup steps and picked round numbers.

Kandel is not intended as a "set and forget" strategy, and needs ongoing maintenance and checks.


# Step-by-step visual explanation

#### Setting things up <a href="#setting-things-up" id="setting-things-up"></a>

Before launching your customized Kandel strategy, you will be asked to set specific input parameters. For more information, you can refer to the Parameters description table, as well as the Choosing parameters section.

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2FzGfgc1CRyZZMvRmp1xak%2Fwhite_background_image.png?alt=media&#x26;token=42db42f2-8d30-4b5b-a187-3f3760cdb10d" alt=""><figcaption></figcaption></figure>

Based on the selected **price range** and either the `number of offers` or `ratio`, the price grid is constructed using a geometric progression. The `min` and `max` prices of the user inputs are the limits of the grid.

The increments are calculated using a key metric called **ratio** (of the geometric progression). Kandel starts from the `min` price, all the way up to the `max` price. By default, the ratio is \~1% (due to ticks it will not be exactly 1%).

**Note** : In this example, the user selected an ETH/USDC trading pair.

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2FoVpnHmO5m7tmPpJGhDAi%2Fvolume_distribution_white_bg.png?alt=media&#x26;token=fbf9dc81-ea83-4b4d-933b-fd3fb4209cab" alt=""><figcaption></figcaption></figure>

Based on the selected amount of initial liquidity to be deposited, Kandel draws the **volume distribution** (i.e. the initial volume at each price point). In the example of a uniform volume distribution, the user's liquidity is spread evenly throughout the price grid.\\

**Note** : For this explanation, we are conveniently using a 1 ETH allocation for each increment. If based on our parameters, our Kandel would create a price grid of 10 points, for example, then we would use 10 ETH in total (1 ETH \* 10 price points).

#### Populating Bids and Asks <a href="#populating-bids-and-asks" id="populating-bids-and-asks"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2FvZFbAeWosI7kgoNfrz47%2Fonly_outer_background_white.png?alt=media&#x26;token=abe298a5-8d26-40ae-932d-45ba4a5c47ba" alt=""><figcaption></figcaption></figure>

Afterwards, the Kandel strategy contract populates the price grid by posting offers:

* **Bids** are posted from min price to mid price (current price)
* **Asks** are on the other side of the book, from mid price to max price

#### Bid is taken <a href="#bid-is-taken" id="bid-is-taken"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2F7EdEYeiboW6DfnC3KsL3%2Fouter_background_white_bidtaken%20(1).png?alt=media&#x26;token=5bac54e2-74fa-4289-9695-9528945e28c2" alt=""><figcaption></figcaption></figure>

When a **bid** is taken, the Kandel strategy contract sends the corresponding amount of **quote tokens** (USDC) and receives a corresponding amount of **base tokens** (ETH).

#### Reposting liquidity as an Ask <a href="#reposting-liquidity-as-an-ask" id="reposting-liquidity-as-an-ask"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2F2bfQU4pB3wpjwUBEmEWF%2Fouter_background_white_repost.png?alt=media&#x26;token=f127ad41-4180-41ec-b85e-53372ea4afb4" alt=""><figcaption></figcaption></figure>

The received amount of **base tokens** (ETH) is used to post a dual offer at a **step size k=1 above**. This is automatically handled by Kandel, it is part of its trading behaviour.

**Note** : Since the volume objective at the relevant index is 1 ETH, all the received liquidity is used to populate corresponding **ask**. Our Kandel just received 1 ETH (previous Bid), and is using it all to repost an offer, an Ask (called dual offer).

#### Ask is taken <a href="#ask-is-taken" id="ask-is-taken"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2FDrW070BAs8mei6m1LXJa%2Fouter_background_white_asktaken.png?alt=media&#x26;token=393081b4-500a-4f60-b0a8-dbc02b763249" alt=""><figcaption></figcaption></figure>

Inversely to the **bid** example, when an ask is taken, the Kandel strategy contract sends the corresponding amount of **base tokens** (ETH) and receives a corresponding amount of **quote tokens** (USDC).

#### Reposting liquidity as an Bid <a href="#reposting-liquidity-as-an-bid" id="reposting-liquidity-as-an-bid"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2F4y7YVExXz21dagjLQoFT%2Fouter_background_white_repost_final.png?alt=media&#x26;token=d4b6a9b5-ba73-4c5f-bef2-29d86183bdcb" alt=""><figcaption></figcaption></figure>

The received amount of **quote tokens** (USDC) is used to post a dual offer **step size k=1 below**.

In our example:

* We just received 1,300 USDC for sending 1 ETH through our **ask**
* Previously, we sent 1,287 USDC and received 1 ETH through our **bid**

Therefore, 13 USDC is reinvested into the strategy. A new **bid** at k=1 steps below is reposted, and offers 1,300 USDC for 1.01 ETH.

**Calculation**

* *Profit = 1,300 USDC - 1,287 USDC = 13 USDC*
* *13 / 1300 = 0.01 = 1%*
  * i.e. we made a 1% profit on the spread
* Kandel will repost our **bid** to offer *1,287+13 USDC* for *1\*1.01 ETH*, reinvesting the 1% profit we just made

#### Another Ask is taken <a href="#another-ask-is-taken" id="another-ask-is-taken"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2FN8pu4t8Jqd5dMl9OWYt2%2Fouter_background_white_ask_1313.png?alt=media&#x26;token=e83617f7-f78b-4554-8e67-b9b649e52185" alt=""><figcaption></figcaption></figure>

When another **ask** is taken, once again Kandel sends the corresponding amount of **base tokens** (ETH) and receives a corresponding amount of **quote tokens** (USDC).

#### Reposting liquidity as a Bid #2 <a href="#reposting-liquidity-as-a-bid-2" id="reposting-liquidity-as-a-bid-2"></a>

<figure><img src="https://3197749937-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MdT1ftsp-ASVL0f7MSf%2Fuploads%2Fbc9Fs6wlyciAZmQtOjFw%2Fouter_background_white_repost_2600.png?alt=media&#x26;token=a8670c61-3241-4af4-b98e-0ee1a428a16f" alt=""><figcaption></figcaption></figure>

Similarly to our previous **bid**, the received amount of **quote tokens** (USDC) is used to post a dual offer **step size k=1 below**.

Note :

If an **ask** was to be taken next, the profit from the spread would be reinvested into the strategy.


# Parameters

This section describes Kandel's parameters. For more contextual information, head over to the visual explanation.

| Parameters        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Pair              | <p>The pair represents the chosen market on which a Kandel strategy is running (along with the technical tick spacing).</p><p><em>Example: ETH/USDC is a trading pair</em></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Price range       | <p>The price range is needed to run any market-making strategy. It consists of the lowest and highest prices in the price grid at which Kandel instance posts its bids and asks.</p><p><em>Example of a price range:</em><br><em>• Lowest price = 1000 USDC per ETH</em><br><em>• Highest price = 1500 USDC per ETH</em></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Current price     | <p>The current price of the base token that is used for constructing the price distribution.</p><p><em>Example: the price of ETH is used for the ETH/USDC pair</em></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| Number of offers  | The number of offers to be published by the Kandel strategy within the selected price range.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Ratio             | <p>The ratio defines the distance between price points which is derived using geometric progression.</p><p><em>Example:</em><br><em>• Ratio is <code>0.01</code> (due to ticks it will not be exact)</em><br><em>• Mid price is <code>1000</code></em><br><em>• Price point below mid price: <code>10000.99</code></em><br><em>• Price point above mid price: <code>10001.01</code></em>Additionally, the ratio could be derived from price points <code>PricePoint(i+1) / PricePoint(i) - 1</code>.<br><em>Example: <code>1010 / 1000 - 1 = 0.01</code></em></p>                                                                                                                                                                                                                                                                                                                                                                     |
| Step size         | <p>It is the distance between an executed bid/ask and its dual offer.</p><p>Whenever a Kandel ask is taken at a given price point, Kandel uses the amount of quote just received to place a bid at a lower price point. With a step size of 1, it will place the bid at the price point immediately below. With a step size of 2, Kandel will repost two price points below, etc. (Technical aside: if in attempting to repost say 3 steps below Kandel hits the boundaries of its range it will transport as far below as possible). The same applies symmetrically for bids.</p><p>Using a step size ≥ 2 allows one to publish a more continuous liquidity on the books, regularising the strat’s PnL, while at the same time keeping a reasonable spread between price points. Indeed, what matters to PnL is not the distance between price points, but how far money moves along the price grid each time an offer is taken.</p> |
| Initial inventory | <p>The initial inventory is the amount of base tokens and quote tokens that must be deposited into the strategy. The minimum to be deposited into the strategy depends on the selected price range and density of the selected market.</p><p><em>Example on the ETH/USDC pair:</em><br><em>• Base token is ETH</em><br><em>• Quote token is USDC</em></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| Bounty            | <p>It is the required amount of native tokens to be deposited into the strategy. A provision is required to post an offer, in order to pay a potential bounty. The bounty is only a subset, smaller in value than the provision.</p><p>The provision covers the whole price grid, hence:<br>• <em>Kandel provision = Provision per offer x Number of offers</em></p><p>Example: if the selected pair is on the Polygon network, the bounty would be an amount of MATIC tokens.\*</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                  |


# Choosing Kandel parameters

This section goal is to help you develop an intuition to choose your Kandel parameters. It should be taken as an explanation on how the various parameters can impact your Kandel, and how the market conditions (ex: volatility) could be taken into account. It is **not** a trading advice.

**Note** : As a reminder, Kandel is not intended as a "set and forget" strategy, and needs ongoing maintenance and checks.

We will be going through standard steps you might want a take in order to check the market and deploy a new Kandel. Essentially, that means that by using discrete AMM such as Kandel, you can fix the level of liquidity you are offering adjusted per volatility. So choosing the spread starts with answering the question - what is the volatility? If you can estimate or predict it well enough, the only thing you need to do is pick the spread (i.e. your parameters for Kandel).

#### Check-in frequency <a href="#check-in-frequency" id="check-in-frequency"></a>

First, it is good practice to know how often you aim to update your Kandel. Depending on the trading pair you chose, markets can behave very differently.

**Example** : I will update my Kandel every 24h.

#### Set your price range <a href="#set-your-price-range" id="set-your-price-range"></a>

Next, you should try to anticipate how much the market/price will vary during that period you just decided on. You are kind of betting on daily volatility.

**Example :** I will look at the market volatility for the past 24h, and decide on the price range for my new Kandel.

#### Number of Offers / Ratio <a href="#number-of-offers--ratio" id="number-of-offers--ratio"></a>

This is the number of offers / ratio of the progression used to calculate the price grid. You would logically bet on intra-day volatility (few min or hours). If the volatility is increasing, you might want to increase the grid size (space between the offers). You will find more information about its calculation in the previous table.

**Note :**

* High volatility: spaced out offers (less offers in the chosen range) -> higher ratio
* Low volatility: narrow offers (more offers in the chosen range) -> smaller ratio

#### Step size <a href="#step-size" id="step-size"></a>

The general idea to configure your step size, is that a bigger volatility would likely lead to a bigger step size.

#### Simple use case <a href="#simple-use-case" id="simple-use-case"></a>

Let's say you want to have a continuous Kandel, and maybe your current paramaters allow you only 2 offers:

* The solution to this is instead of having 2 offers with a step size = 1, you can configure 16 offers with a step size of 8
* That gives you continuity (more offers for a similar interval)
* When your offers are taken, Kandel will be able to "grab" lower prices


# Published Liquidity

Kandel instances don't lock your funds into the strategy. It uses the funds on the selected source, for publishing the chosen amount of liquidity.

Published liquidity is the amount of liquidity in active offers that are managed by the particular Kandel instance.


# More on failing offers

This section explains the reasons why some offers might fail using Kandel.

#### Definition <a href="#definition" id="definition"></a>

When we talk about an offer "failing", we mean that it could not execute. An offer can also fail to update itself. While we won't go into details in this part of the documentation, it is important to mention and differentiate those cases to further understand Kandel strategy's behavior.

* [`makerExecute()`](https://about/developers/strat-lib/technical-references/code/strats/src/strategies/MangroveOffer/#makerexecute): it is the callback function that is called when an offer is matched. Its role is to execute all offers that were posted on Arcadex by a given contract.
  * A failure in `makerExecute()` means the trade is canceled, and the bounty is given to the Taker as a [compensation](https://about/developers/protocol/technical-references/market-order/#bounties-for-taking-failing-offers). The offer is removed from the book.
* [`makerPosthook()`](https://about/developers/strat-lib/technical-references/code/strats/src/strategies/MangroveOffer/#makerposthook): it is the callback function that is called after the offer execution (i.e. after a successful execution of `makerExecute()`).
  * A failure in `makerPosthook()` means the offer cannot update or repost itself after being taken. It does not cancel the trade, since it is called after `makerExecute()`.

**Note** : For a more visual explanation, see the [call sequence overview](https://old.docs.mangrove.exchange/developers/protocol/technical-references/overview#call-sequence-overview) diagram.

#### Kandel and `makerExecute()` failure <a href="#kandel-and-makerexecute-failure" id="kandel-and-makerexecute-failure"></a>

After launching a Kandel strategy, Bids and Asks are populated with a certain volume. Kandel strategy's contract is handling all the posting for the user, using liquidity that has been previously deposited.\
Therefore, since the user is not in charge of writing and maintaining the smart contract, failures to execute [`makerExecute()`](https://about/developers/strat-lib/technical-references/code/strats/src/strategies/MangroveOffer/#makerexecute) can be almost entirely ruled out, with the exception of some very specific scenarios such as:

* Someone severely modifies the volume distribution/sourcing methods, creating issues when a Kandel Bid/Ask is taken (via the SDK)
* Kandel runs on AAVE, and the user's liquidity is not available for sourcing at the time the offer is taken. That could happen if the user's funds are suddenly borrowed entirely (on AAVE)

#### Kandel and `makerPosthook()` failure <a href="#kandel-and-makerposthook-failure" id="kandel-and-makerposthook-failure"></a>

The main failures that Kandel could run into are linked to reposting Bids and Asks. This has little incidence for the user, nor does it affect the behavior of his Kandel strategy.\
Non-reposted liquidity will be placed into the [Unallocated liquidity](https://about/general/kandel/how-does-kandel-work/strategy-reserve#unallocated-liquidity) reserve, and the offer will be "empty" for Kandel, until the user replenishes it.\\

**Note** :

> If too many empty offers stack up, it would diminish Kandel's ability to profit from the spread, and therefore the overall generated yield. Kandel is not intended as a "set and forget" strategy, and needs ongoing maintenance and checks.

Reposting offers is handled with [`makerPosthook()`](https://about/developers/strat-lib/technical-references/code/strats/src/strategies/MangroveOffer/#makerposthook), and failure could happen if:

* The residual of a partially taken offer is too small with regard to density:
  * A partially taken offer is the result of a Taker placing a Market order
  * If an offer is almost entirely taken, the remainder (dust) could be too small to pass the density check, leading to a failure to repost itself
* Kandel runs out of gas during the execution of the `makerPosthook()` because the gas requirements suddenly changed
  * This is unlikely to happen, but it theoretically could (if the order book becomes very dense in offers, for example)


# Potential risks

Kandel strategy is subject to some risks that should be taken into consideration. By using Kandel, you acknowledge (i) having the necessary knowledge and understanding of the blockchain technology and the tokens, and (ii) comprehended the risks associated with blockchain-based software systems and tokens, as described below and in the disclaimer.

#### Economical risks <a href="#economical-risks" id="economical-risks"></a>

As a user of the Kandel strategy, you understand that using Kandel can be affected by economic risks, including but not limited to:

* Partial or total loss of the tokens used;
* Partial or total loss of the value of the tokens used;
* Market extreme volatility;
* Insolvency of a third-party platform or company;
* Absence of liquidity and impossible resale on markets of the tokens.

#### Impermanent Loss <a href="#impermanent-loss" id="impermanent-loss"></a>

Kandel is a passive market-maker where profit is generated from the spread. An example of impermanent loss on an ETH/USDC pair would be as follows:

1. If the current price of ETH/USDC pair moves up, asks will be consumed.
2. If the price keeps going up and crosses the max price range value, Kandel strategy will be left only with active bid offers on the ETH/USDC market.
3. It is likely that no one would be interested in taking these bids since they would not match the current price (you would be offering too little USDC for ETH, considering the new current price). This is what we call impermanent loss - your strategy stops generating profit from the spread.

#### Smart contract and technological risks <a href="#smart-contract-and-technological-risks" id="smart-contract-and-technological-risks"></a>

You understands that even though the strategy has been implemented by an experienced team of researchers and developers, the use of Kandel can be affected by smart contract and technological risks, including but not limited to:

* Security error or failure allowing and/or resulting in hacking and stealing of user, third-party platform and/or website/app data;
* Stealing or loss of the user external wallet private key or his access to the third-party platform;
* Risks associated with blockchains used for the strategy, including but not limited to due to successful attacks from hackers or other criminal groups or organizations or countries, including but not limited to denial of service attacks, Sybil attacks, spoofing, smurfing malware attacks, consensus-based attacks, or phishing, or other new methods that may or may not be known;
* Lack of transparency in crypto asset management and markets;

That being said, please note that the **Kandel strategy has been thoroughly audited** by ChainSecurity.


# Technical Architecture

Arcadex is built on the infrastructure developed by Mangrove — a **battle-tested** and **audited** programmable order book protocol. This foundation provides a robust and flexible execution engine, well-suited for the demands of decentralized trading.

Arcadex offers its own interface, positioning, and feature set, while relying on a proven underlying technology.


# Audits

Arcadex is an open-source protocol that has been rigorously audited by the highly reputable and expert firm, ChainSecurity and Nethermind, ensuring the utmost security and reliability.

Arcadex has been thoroughly audited. You will find here official reports of the audits we passed:

#### Arcadex core​ <a href="#mangrove-core" id="mangrove-core"></a>

| Version                                                                                                                                                           | Auditor       | Date    |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------- |
| [V0](https://github.com/mangrovedao/audits/blob/main/core/v0/ChainSecurity_Mangrove_Association_\(ADDMA\)_Mangrove_audit-c7a5bd87cc411539606ff9082bb5c8a1.pdf)    | ChainSecurity | 03/2023 |
| [V1](https://github.com/mangrovedao/audits/blob/main/core/v1/ChainSecurity_Mangrove_Association_ADDMA_Mangrove_Core_audit_2-d3425cee36b3dad60bfac272af328fd4.pdf) | ChainSecurity | 11/2023 |

#### Strategies <a href="#strategies" id="strategies"></a>

| Version                                                                                                                                                                                               | Auditor       | Date    |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------- |
| [V0](https://github.com/mangrovedao/audits/blob/main/strats/v0/ChainSecurity_Mangrove_Association_ADDMA_MangroveOrder_audit-7e289d0c705233f1d69d419d7689cab5.pdf)                                     | ChainSecurity | 03/2023 |
| [V1](https://github.com/mangrovedao/audits/blob/main/strats/v1/ChainSecurity_Mangrove_Association_Mangrove_Strategies_audit-caa8fc55eadb26bf40eead2b80af0c99.pdf)                                     | ChainSecurity | 11/2023 |
| [Amplifier & Routing](https://github.com/mangrovedao/audits/blob/main/strats/v1/2024-02-14-NM-0162-Nethermind_SmartRouter_MangroveOrder_MangroveAmplifier_audit-26ca97c4578d39c3ca4cb82ae7a0f374.pdf) | Nethermind    | 02/2024 |
| [UniV3 & Orbit Routers](https://github.com/mangrovedao/audits/blob/main/strats/v1/NM0208_FINAL_MANGROVE-684a6582cd4f3a18a25feeed05fb5482.pdf)                                                         | Nethermind    | 03/2024 |

#### Kandel <a href="#kandel" id="kandel"></a>

| Version                                                                                                                                                           | Auditor       | Date    |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | ------- |
| [V0](https://github.com/mangrovedao/audits/blob/main/strats/v0/ChainSecurity_Mangrove_Association_ADDMA_Kandel_Strats_audit-db1b0f4516874f622d2a7f5bc7837f7c.pdf) | ChainSecurity | 04/2023 |

#### Vaults <a href="#vaults" id="vaults"></a>

| Version                                                                                       | Auditor    | Date    |
| --------------------------------------------------------------------------------------------- | ---------- | ------- |
| [V0](https://github.com/mangrovedao/audits/blob/main/vaults/NM_0339_Mangrove_Vault_FINAL.pdf) | Nethermind | 10/2024 |

Note:

* Arcadex core and Strategies each have two distinct audits, which are complementary to each other.
* MangroveOrder is a peripheral contract for the Arcadex core protocol which allows users to submit limit orders such as:
  * Good-til-cancelled (GTC, or GTT)
  * Fill-or-kill (FOK)
* Kandel is "buy low, sell high" market making strategy that leverages Arcadex core protocol.

<br>


# Terms of Service

#### **Disclaimer and Exclusion of Warranties** <a href="#disclaimer-and-exclusion-of-warranties" id="disclaimer-and-exclusion-of-warranties"></a>

Arcadex is a decentralized Web3 service that provides technical tools exclusively for experienced users who are capable of understanding the risks inherent in blockchain technology, smart contracts, and decentralized financial services. Oxium, its founders, administrators, developers, and all partners and collaborators expressly disclaim any and all liability, whether direct or indirect, for any loss, damage, or harm, whether material or immaterial, resulting from the use of its services, access to its interfaces, or reliance on any information made available on its website or associated applications.

By using Arcadex and any associated strategies, including the Kandel strategy, you acknowledge that you assume all risks and confirm that you have the necessary knowledge and understanding of blockchain technology, tokens, and the decentralized financial environment. You understand that Arcadex does not act as an intermediary, agent, fiduciary, or custodian, and you alone are responsible for your use of the services and for the security of your private keys and wallets.

#### **1. Legal Compliance and Jurisdiction** <a href="#id-1.-legal-compliance-and-jurisdiction" id="id-1.-legal-compliance-and-jurisdiction"></a>

It is solely your responsibility to ensure that your use of our services complies with the laws, regulations, and legal requirements applicable in your jurisdiction. Arcadex is not intended for use, directly or indirectly, by any person or entity located in a jurisdiction where the use of blockchain-based services, decentralized exchanges (DEX), or decentralized financial (DeFi) products is prohibited or restricted. This includes, but is not limited to, any person or entity located in the United States of America (including all its territories and possessions), as well as any other jurisdiction or territory subject to economic or trade sanctions imposed by the U.S. Department of the Treasury’s Office of Foreign Assets Control (OFAC), the European Union, or any other relevant authority. Prohibited jurisdictions include, but are not limited to, North Korea, Iran, Syria, Sudan, Crimea, Donbass, Cuba, and any other country or region subject to similar embargoes or sanctions.

You must not use VPNs or other means to circumvent these restrictions. By using our services, you represent and warrant that:

* You are not a citizen or resident of, or located in, any prohibited or embargoed jurisdiction.
* You are not listed on any government sanctions list, such as the OFAC Specially Designated Nationals (SDN) List or any similar list maintained by a competent authority.
* You are not acting for the benefit of, or on behalf of, any person or entity in such jurisdictions or subject to such restrictions.
* You will not use our services to violate or circumvent any applicable laws, regulations, or economic and trade sanctions.

Arcadex reserves the right, at any time and in its sole discretion, to restrict or block access to its services to any person or entity that it determines may violate applicable legal or regulatory requirements or that may pose a risk to the integrity or security of its services.

By using our services, you confirm that you are not subject to any legal or regulatory restrictions that would prohibit you from accessing or using the services provided by Arcadex. You understand and agree that failure to comply with these requirements may result in the immediate suspension or termination of your access to the services, without notice or compensation.

#### **2. Economic and Market Risks** <a href="#id-2.-economic-and-market-risks" id="id-2.-economic-and-market-risks"></a>

As a user of the Kandel strategy and other services provided by Arcadex, you understand and accept that you are exposed to economic risks, including but not limited to:

* Partial or total loss of the tokens used.
* Partial or total loss of the value of the tokens used.
* Extreme market volatility.
* Insolvency of third-party platforms or companies.
* Lack of liquidity and the impossibility of reselling tokens on markets.

You are solely responsible for verifying that you are legally allowed to hold and use the crypto-assets you acquire, as well as for any taxes, duties, or assessments associated with your use of the services.

#### **3. Impermanent Loss** <a href="#id-3.-impermanent-loss" id="id-3.-impermanent-loss"></a>

Kandel operates as a passive market-making strategy, generating profit from the spread between bids and asks. However, impermanent loss can occur in scenarios where market prices move significantly. For example, if the current price of an ETH/USDC pair rises and exceeds the maximum price range of your strategy, your remaining bids may no longer match the market price, stopping any profit generation and potentially leading to a partial or total loss.

#### **4. Smart Contract and Technological Risks** <a href="#id-4.-smart-contract-and-technological-risks" id="id-4.-smart-contract-and-technological-risks"></a>

You acknowledge that even though the Kandel strategy has been implemented by an experienced team of researchers and developers and has been thoroughly audited by ChainSecurity, using Kandel and Arcadex’s services entails technological and security risks, including but not limited to:

* Security errors or failures that allow and/or result in hacking, theft, or unauthorized access to user, third-party platform, or website/app data.
* The theft or loss of your external wallet’s private key or your access to third-party platforms.
* Risks inherent to the blockchains used for the strategy, including but not limited to successful attacks by hackers, criminal groups, organizations, or countries (such as denial-of-service attacks, Sybil attacks, spoofing, smurfing, malware attacks, consensus-based attacks, phishing, or other methods known or unknown).
* Lack of transparency in crypto asset management and markets.
* The irreversible nature of blockchain transactions; once executed, transactions cannot be reversed or refunded by Arcadex, third parties, or blockchain validators.

#### **5. Third-Party Services and Wallets** <a href="#id-5.-third-party-services-and-wallets" id="id-5.-third-party-services-and-wallets"></a>

Arcadex is not responsible for any third-party tools, wallets, or services you use to access our services, including but not limited to wallet providers such as MetaMask, Coinbase Wallet, or Ledger. You are solely responsible for ensuring the security of your private keys and wallets, and any compromise of these may result in the loss of your assets.

Arcadex also disclaims any responsibility for damages caused by third-party services or external links made available through the Arcadex interface. Use of such services is at your own risk and may be governed by separate terms of use.

#### **6. No Warranties and Limitation of Liability** <a href="#id-6.-no-warranties-and-limitation-of-liability" id="id-6.-no-warranties-and-limitation-of-liability"></a>

Arcadex makes no representations or warranties, express or implied, regarding the reliability, accuracy, timeliness, security, or availability of its services. All services and content are provided on an “as is” and “as available” basis, without any representation or warranty of any kind. No information, advice, or data obtained through Arcadex or the Kandel strategy shall constitute a warranty or binding commitment of Arcadex, nor shall it establish any contractual, tort, or other legal liability.

Arcadex shall not, under any circumstances, be liable for any losses, damages, or disputes arising from the use of, or inability to use, its services or the Kandel strategy, whether in contract, tort, strict liability, or any other legal theory. This exclusion of liability includes, but is not limited to, direct, indirect, incidental, consequential, punitive, special, or exemplary damages, even if Arcadex has been advised of the possibility of such damages.

#### **7. Intellectual Property** <a href="#id-7.-intellectual-property" id="id-7.-intellectual-property"></a>

All rights, titles, and interests in and to the services and all related content, code, data, and materials remain the exclusive property of Arcadex or its licensors. You may not reproduce, imitate, or use any Arcadex intellectual property without prior written authorization.

#### **8. Modifications and Updates** <a href="#id-8.-modifications-and-updates" id="id-8.-modifications-and-updates"></a>

Arcadex reserves the right to modify, suspend, or discontinue any part of its services at any time, for any reason, without notice and without liability. It is your responsibility to review the Terms of Service periodically to remain informed of any updates.

#### **9. Acknowledgment and Acceptance of Risks** <a href="#id-9.-acknowledgment-and-acceptance-of-risks" id="id-9.-acknowledgment-and-acceptance-of-risks"></a>

By accessing or using our services and the Kandel strategy, you confirm that you have read, understood, and accepted the entirety of these Terms of Service, including the associated risks and limitations. You agree that your sole and exclusive remedy for any dispute with Arcadex is to discontinue use of our services


# Privacy policy

#### Privacy Policy – Arcadex <a href="#privacy-policy-oxium" id="privacy-policy-oxium"></a>

**1. Introduction**

Arcadex is a decentralized finance (DeFi) protocol that respects your privacy and is committed to protecting your personal data. This Privacy Policy describes how we collect, use, store, and protect your information when you use our services, websites, and applications (collectively, the “Services”).

***

**2. Data We Collect**

**Public Blockchain Data**

When you connect your non-custodial wallet to our Services, we collect and log your publicly-available blockchain address. These addresses are public data, not created or assigned by us or any central authority, and are not personally identifying on their own.

**Technical Information**

We may collect technical information such as browser type, operating system, referring and exit pages, browser or device language, and similar data. This information helps us improve the user experience and detect any illicit activity.

**Tracking Technologies**

We and our third-party service providers may access and collect information from technologies such as cookies, localStorage, mobile device identifiers, web beacons, and other similar technologies to provide and personalize the Services and their features for you across sessions.

**Direct Communications**

When you contact us via email, social media, or other support channels like Twitter, Discord, or Telegram, or participate in surveys or questionnaires, we receive the information and communications you share. We do not attempt to link this information to your wallet address, IP address, or other personal details.

**Job Applications**

If you apply for a position with us, we collect all information you provide through our application form, including your name, email address, phone number, professional and immigration status, and any other documents such as your CV, cover letter, or freeform text you include.

***

**3. Use of Data**

The information we collect is used in accordance with our Terms of Use and legal requirements. We may use this information to:

* Provide, maintain, personalize, and improve our Services and their features.
* Provide user support and respond to your requests regarding the Services.
* Protect against, investigate, and stop any fraudulent, unauthorized, or illegal activity.
* Comply with our legal and regulatory obligations.
* Process your job application and contact you throughout the recruitment process.

***

**4. Data Sharing**

We do not share your information with third parties for marketing purposes. However, we may share or disclose the data we collect in the following situations:

* With staff or members of our organization.
* With regulators, government entities, and law enforcement to comply with our legal obligations.
* With service providers and vendors who may assist us in providing, delivering, and improving the Services (e.g., hosting provider, mailing provider, external recruitment platforms, etc.).

***

**5. Your Rights**

In accordance with the General Data Protection Regulation (GDPR), you have the following rights regarding your personal data:

* Right to be informed: you have the right to be informed about how your personal data is collected and used.
* Right of access: you can request access to your personal data that we hold.
* Right to rectification: you can request the correction of inaccurate or incomplete personal data.
* Right to erasure: you can request the deletion of your personal data.
* Right to restrict processing: you can request the restriction of processing of your personal data in certain circumstances.
* Right to data portability: you can request to receive your personal data in a structured, commonly used, and machine-readable format.
* Right to object: you can object to the processing of your personal data in certain circumstances.
* Right to withdraw consent: where processing is based on your consent, you can withdraw it at any time.
* Right to file a complaint: you have the right to lodge a complaint with the competent data protection authority.

To exercise these rights, please contact us at: \[your contact email address].

***

**6. Data Retention**

We retain your personal data only as long as necessary for the purposes for which it was collected, to provide our Services, resolve disputes, enforce our agreements, and comply with legal obligations. This period may vary depending on the nature of the data and the reasons for collecting it, considering the purposes described in this Privacy Policy and our own legal and regulatory requirements.

***

**7. Security**

We take reasonable steps to protect your personal data from misuse, loss, unauthorized access, modification, or disclosure, including implementing appropriate security measures. Security measures in place will be reviewed from time to time in line with legal and technical developments. However, we cannot guarantee that such misuse, loss, unauthorized access, modification, or disclosure will not occur. You are responsible for all your activities on the Services, including the security of your blockchain network addresses, cryptocurrency wallets, and their cryptographic keys.

***

**8. Links**

Our Services may contain links to other websites and resources provided by third parties. This Privacy Policy applies only to our Services. Accessing those third-party websites or resources requires you to leave our Services. We do not control those third-party sites or any of the content contained therein, and you agree that we are in no circumstances responsible or liable for any of those third-party sites, including, without limitation, their content, policies, failures, promotions, products, services, or actions and/or any damages, losses, failures, or problems caused by, related to, or arising from those sites. We encourage you to review all policies, rules, terms, and regulations, including the privacy policies, of each site you visit.

***

**9. Changes to the Policy**

We may modify this Privacy Policy at any time, particularly to comply with any regulatory, case law, editorial, or technical changes. These modifications will apply as of the effective date of the modified version.

If we change this Privacy Policy, we will take steps to notify all users via a notice on our Site and will post the amended Privacy Policy on the Site. Please regularly review the latest version of this Privacy Policy.


# Deployment addresses

### Eden testnet

| Contract           | Address                                    |
| ------------------ | ------------------------------------------ |
| mgv                | 0x4c812854cb9BE2E20cA4bAd63ED099AbfC4850B9 |
| mgvReader          | 0x8b089e31c9DB0952C6541552279a5A6527186aDa |
| mgvOrder           | 0x5c3C728bfaef7ee3baa36458eE7f74D9DEF49737 |
| routerProxyFactory | 0x4ac48BD72b7B3E8D380766546262895916464100 |
| smartRouter        | 0xaaa23671aa61e4fe0d6f90e2ece7df8141f464c3 |
| mintHelper         | 0x1d7604b6ec0ecafedcd864406ed1f851a2ecd16a |
| vaultFactory       | 0x6e3276DBF0010e484841cd12CFa2FC91354edf04 |
| KandelSeeder       | 0xe881E43f845d3Ac98e603bF968482f730D972B8b |

### Eden mainnet

| Contract           | Address                                    |
| ------------------ | ------------------------------------------ |
| mgv                | 0x1CE5D75c397de6A4Ec45c214bd058e5Dc0E19051 |
| mgvReader          | 0x6417D7CE831176d47daC8E0c3c3Bf6F44A3fb99E |
| mgvOrder           | 0x942B6bd0323427B847B5314AE4A615275C508079 |
| routerProxyFactory | 0x0DdBe6cC20251e76aE43B088874D8dF068FfD6a4 |
| smartRouter        | 0x64d1259732f0081d7186c07374f039a4646ff00b |
| mintHelper         |                                            |
| vaultFactory       |                                            |
| KandelSeeder       | 0x0894F84c0087175098d60Bc50C7278A68c504688 |


# Github

| Repository        | Link                                                                            |
| ----------------- | ------------------------------------------------------------------------------- |
| Mangrove Core     | <https://github.com/mangrovedao/mangrove-core>                                  |
| Mangrove Strats   | <https://github.com/mangrovedao/mangrove-strats>                                |
| Mgv SDK           | [https://github.com/mangrovedao/mgv](<https://github.com/mangrovedao/mgv&#xA;>) |
| MM script example | <https://github.com/Digital-Asset-Solutions/mm-mangrove>                        |


