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
Chain | Address 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.