# Native Smart Contracts

#### Below we provide the overarching logic for the operational functionality of all deployed Merlin Contracts on ZkSync <a href="#core" id="core"></a>

<mark style="color:purple;">**MerlinCore**</mark>[​](https://docs.uniswap.org/contracts/v3/reference/overview#core)

The core consists of our custom built factory, a pool deployer, and the many pools the factory will create.

#### <mark style="color:purple;">MerlinFactory</mark>[<mark style="color:purple;">​</mark>](https://docs.uniswap.org/contracts/v3/reference/overview#factory) <a href="#factory" id="factory"></a>

> The factory defines the logic for generating pools. A pool is defined by two tokens, which make up the asset pair, and a fee. There can be multiple pools of the same asset pair, distinguished only by their swap fee.

#### <mark style="color:purple;">MerlinPools</mark>[<mark style="color:purple;">​</mark>](https://docs.uniswap.org/contracts/v3/reference/overview#pools) <a href="#pools" id="pools"></a>

> Pools primarily serve as automated market makers for the paired assets. Additionally, they expose price oracle data and may be used as an asset source for flash transactions.

#### <mark style="color:purple;">MerlinSwapRouter</mark>[​](https://docs.uniswap.org/contracts/v3/reference/overview#swaprouter) <a href="#swaprouter" id="swaprouter"></a>

> The swap router supports all the basic requirements of front-end offering trading. It natively supports single trades (x to y) and multihop trades (e.g. x to y to z).

#### <mark style="color:purple;">NonfungibleMagic Position Manager</mark>[​](https://docs.uniswap.org/contracts/v3/reference/overview#nonfungible-position-manager) <a href="#nonfungible-position-manager" id="nonfungible-position-manager"></a>

> The position manager handles the logic transactions involving the creation, adjustment, or exiting of positions for NFM and its layering onto existing LP's.

#### <mark style="color:purple;">MerlinOracle</mark>[​](https://docs.uniswap.org/contracts/v3/reference/overview#oracle) <a href="#oracle" id="oracle"></a>

> The oracle provides price and liquidity data useful for a wide variety of system designs, and is available in every deployed pool. For Merlin, we utilize Chainlink's Data Oracle.&#x20;
