> For the complete documentation index, see [llms.txt](https://swap-docs.dovish.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://swap-docs.dovish.finance/technical-reference/smart-contracts/factory.md).

# Factory

## Address

`DoveSwapFactory` is deployed at `0xeA2709fCD78141976803C3aecA23eCEa3Cb9cb41` on the Polygon zkEVM Mainnet

## Events

### PairCreated[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#paircreated) <a href="#paircreated" id="paircreated"></a>

```solidity
event PairCreated(address indexed token0, address indexed token1, address pair, uin
```

Emitted each time a pair is created via [createPair](#createpair).

* `token0` is guaranteed to be strictly less than `token1` by sort order.
* The final `uint` log value will be `1` for the first pair created, `2` for the second, etc. (see [allPairs](#allpairs)/[getPair](#getpair)).

## Read-Only Functions

### getPair[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#getpair) <a href="#getpair" id="getpair"></a>

```solidity
function getPair(address tokenA, address tokenB) external view returns (address pair);
```

Returns the address of the pair for `tokenA` and `tokenB`, if it has been created, else `address(0)` (`0x0000000000000000000000000000000000000000`).

* `tokenA` and `tokenB` are interchangeable.
* Pair addresses can also be calculated deterministically via the SDK.

### allPairs[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#allpairs) <a href="#allpairs" id="allpairs"></a>

```solidity
function allPairs(uint) external view returns (address pair);
```

Returns the address of the `n`th pair (`0`-indexed) created through the factory, or `address(0)` (`0x0000000000000000000000000000000000000000`) if not enough pairs have been created yet.

* Pass `0` for the address of the first pair created, `1` for the second, etc.

### allPairsLength[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#allpairslength) <a href="#allpairslength" id="allpairslength"></a>

```solidity
function allPairsLength() external view returns (uint);
```

Returns the total number of pairs created through the factory so far.

### feeTo[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#feeto) <a href="#feeto" id="feeto"></a>

```solidity
function feeTo() external view returns (address);
```

See [Protocol Charge Calculation](/concepts/advanced-concepts/fees.md).

### feeToSetter[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#feetosetter) <a href="#feetosetter" id="feetosetter"></a>

```solidity
function feeToSetter() external view returns (address);
```

The address allowed to change [feeTo](#feeto).

## State-Changing Functions

### createPair[​](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#createpair) <a href="#createpair" id="createpair"></a>

```solidity
function createPair(address tokenA, address tokenB) external returns (address pair);
```

Creates a pair for `tokenA` and `tokenB` if one doesn't exist already.

* `tokenA` and `tokenB` are interchangeable.
* Emits [PairCreated](#paircreated).
