Zones

Zones are smart contracts that exist on-chain to facilitate the trading of assets through Aori in a non-custodial way.

Aori deploys multiple zones in order to facilitate the trading of a world of assets and different settlement methods.

Each trade / limit order requires a zone and mutually agreed upon by a maker and a taker for it to be usable as the settlement contract for the trade.

Below is a list of zones deployed for Aori on various chains:


Single-Chain Settlement Zones

ChainAddress Deployed To
1 (Mainnet)0x0AD86842EadEe5b484E31db60716EB6867B46e21
10 (Optimism)0x0AD86842EadEe5b484E31db60716EB6867B46e21
137 (Polygon)0x0AD86842EadEe5b484E31db60716EB6867B46e21
8453 (Base)0x0AD86842EadEe5b484E31db60716EB6867B46e21
42161 (Arbitrum One)0x0AD86842EadEe5b484E31db60716EB6867B46e21
421614 (Arbitrum Sepolia)0x0AD86842EadEe5b484E31db60716EB6867B46e21
11155111 (Sepolia)0x0AD86842EadEe5b484E31db60716EB6867B46e21

Deployments can also be found here on Github.


Approving a Zone

You will need to approve the Aori contract / zone first to spend each token in your wallet.

import { approveToken, checkAndApproveToken, getDefaultZone } from '@aori-io/sdk';
import { Wallet } from 'ethers';

const TOKEN_ADDRESS = '0x...'; // The token you want to trade
const CHAIN_ID = 1; // Desired tokens Chain ID
const ZONE_ADDRESS = getDefaultZone(CHAIN_ID);  // Gets the default zone address for that chain

// Option 1: Direct approval with max amount
await approveToken(
    wallet,
    CHAIN_ID,
    TOKEN_ADDRESS,
    ZONE_ADDRESS,
    BigInt(2 ** 256 - 1) // Max approval
);

// Option 2: Check allowance first and only approve if needed
await checkAndApproveToken(
    wallet,
    CHAIN_ID,
    TOKEN_ADDRESS,
    ZONE_ADDRESS,
    BigInt(2 ** 256 - 1) // Max approval
);

We will soon add in signature-based approvals in the future via Permit2.