Deployed 2026-09-22 at commit 44927a3 from 0x9467a00F2DFBF392254133ff36c291c618dF6f54 (current factory owner). Transaction record: deployments/mainnet.json. All contracts are verified on Etherscan. Quote library, token validator and factory have the same address and bytecode on Sepolia.
On 2026-09-23, before any pool existed, the factory's pool library was replaced (#60: delivery failures are named, and token return values are checked) with 0x7219…5001, so every pool uses it. The original library 0x9321361bdDc23a16E90ae18081c7E758e6481Eb6, which matches Sepolia, is no longer used by the factory.
| Name | Address |
|---|---|
| WETH9 | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| TOKEN_CONVERTER | 0xe7E969012557f25bECddB717A3aa2f4789ba9f9a |
| POOL_LIBRARY | 0x7219ebDfFD7EF54d3d1F1B7C174ce470f3825001 |
| QUOTE_LIBRARY | 0x079784c215F9F2f2b8118A7a0bD916A0ddbcB92d |
| TOKEN_VALIDATOR | 0x269Dac0FB22e207468e3D91a0d39088Ae9CaD7e6 |
| FACTORY | 0xeA0A163e0196Bf1500B1B41d3ADdA0476dC137eb |
| SWAP_ROUTER | 0xc06C5F3a889DCDF23D54B4fB8FCE3DE2707199ED |
| POSITION_MANAGER | 0x2A40FF7c062336dC82A502aB38EBD3579e42BAE1 |
| QUOTER | 0x2C44c27a41BCE8BF679b306284d68C1245eE4c52 |
| CORE_AUTOLISTING | 0x83E1e7f47536515db9Ec4D7C4024e7395CD11A48 |
| FREE_AUTOLISTING | 0xCc46E110426958E83e9298d46a50572691065eC5 |
| AUTOLISTINGS_REGISTRY | 0x105F43A70aFCEd0493545D04C1d5687DF4b3f48f |
| ERC223_TOKEN_DEPLOYER | 0xe3391c70A6b71bC26D6F77437590306006aD0ddb |
| REVENUE (V1) | 0xbA75fA26BB88BccEB74a967E4cA2FBfe99d6CE6e |
| POOL_INIT_CODE_HASH | 0xe125afe94932872c7162b66e1bb1587d6fc76d525d248bb20e9e0484a99ec486 |
RevenueV1 stakes D223 (ERC-20 0x675e…DD67 / ERC-223 0x0908…80dd) and its factory is 0xeA0A…. Its claim_delay (the lock after each stake, for both unstaking and claiming) and assigned_avg_staking_duration (the reward period) are both the 10 day default. Do not factory.setOwner(Revenue). No pools exist yet; once they do, the factory owner runs scripts/revenue-enable-fees.ts, then scripts/revenue-collect.ts with REVENUE=0xbA75….
Do not use for new integrations. Its position manager did not bind collect() to the NFT's pool (fixed in #57).
| Name | Address |
|---|---|
| WETH9 | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| TOKEN_CONVERTER | 0xe7E969012557f25bECddB717A3aa2f4789ba9f9a |
| POOL_LIBRARY | 0xfA5930D2Ef1b6231e220aeDda88E28C4E8F0F3a0 |
| FACTORY | 0x8dae173016f65F61e90631Ee5f28C9E47b1ebc06 |
| SWAP_ROUTER | 0x09127e22961c61c2b252b23ff97e6d4689ac13a9 |
| POSITION_MANAGER | 0xFd4cE11db9db9433286734304049526E9336139E |
| POOL_INIT_CODE_HASH | 0xa5fa1f34aae4b83ab2690d3f3df6f78e99959a1f2eb8aa4c11ba10586677338d |
| POOL_USDC_WETH | 0x82Cc735b39a3992be7b47bEb9AE7519aC92ed562 |
| CORE_AUTOLISTING | 0x029f10E06Dc7d6264f9432ACA3F52572543c48e0 |
| FREE_AUTOLISTING | 0xa7089d8cbcc47543388a346dd6ebf0b05106a477 |
| AUTOLISTINGS_REGISTRY | 0x105F43A70aFCEd0493545D04C1d5687DF4b3f48f |
| ERC223_TOKEN_DEPLOYER | 0xe3391c70A6b71bC26D6F77437590306006aD0ddb |
- Factory 0x5D63230470AB553195dfaf794de3e94C69d150f9
- Router 0x99504dbaa0f9368e9341c15f67377d55ed4ac690
- NFPM 0x068754a9fd1923d5c7b2da008c56ba0ef0958d7e
- Auto-listing Registry (verified) 0x6ee7518400c14e8046252E3cC1670FC8093e618F
- Core Testnet Auto-listing (verified / 100 SepWEI per token) 0x8a1839E6b7b4538a15de8865891FcE6e24a27ddA
- Free Testnet Auto-listing (verified) 0xBC5fC0bbd73DF985Cc28c9367407f9FfB1FD4CC3
- RevenueV1 0xB5581C5500B3b68c5F3855518e7646304e84f9D2. Staking tokens: RED ERC-20
0x1DEf…/ ERC-2230x0a67….claim_delay(the lock) andassigned_avg_staking_duration(the reward period) are both set to 5 minutes (300 s) for testing; mainnet uses the 10 day default for both. Do notfactory.setOwner(Revenue); the factory owner runsscripts/revenue-enable-fees.tsandscripts/revenue-collect.ts. Record:deployments/sepolia.json. - Revenue contract (testnet, legacy Revenue_old, not used by the Revenue UI) 0x4e38fB6f9243d2aC91C490230375FeDE1E0aD7F2
- Router (tokenReceived restricted) 0x1f611e17c3a45f87d3edd14acd42b2113db9a4dd
- Margin Oracle (verified, TWAP window 1800 s) 0x5DaD3C2D6741Fce6cD20B05a04116120A414C4AA
- Margin Module: redeploy pending with
npx hardhat run scripts/deploy-margin.ts --network sepolia(router 0x9950...c690). The first deploy at 0xd28b7a588aA384BCBCD80Ab18bA8D4e34c37A67b is bound to router 0x1f61...a4dd, which cannot reach this factory's pools, so its swaps and liquidations revert. Do not use it. - Safe Send PaymentReceiver (verified, owner and payout
0x9467…6f54) 0x32480C1Edc5e51eca39FfF766cDdd9087DfC34E9 and SafeSendRouter (verified, converter 0x5847...0D9F) 0x7b58D9B037C4AC84eE06208Bc0fF95Ba9b84AC7e, deployed frommainat 9a64abb (#79, #81, #82, #83). They replace the earlier #79 build at 0x3a6f...2f86 / 0x8552...8a95, whose receiver cannot withdraw tokens whosetransferreturns nothing and moves ownership in one step. Do not use it.
| Name | Address |
|---|---|
| WETH9 | 0xb16F35c0Ae2912430DAc15764477E179D9B9EbEa |
| TOKEN_CONVERTER | 0x5847f5C0E09182d9e75fE8B1617786F62fee0D9F |
| POOL_LIBRARY | 0xc087468af4264f14a07abb52c63a099c93637604 |
| FACTORY | 0x3BD240DC11601223e35F2b803905b832c2798c2c |
| SWAP_ROUTER | 0x6d1a12d5921692f240CcDD9d4b7cAc2cCeD1BEd2 |
| POSITION_MANAGER | 0x091249267d085055fa2f281fa3f6c0cf4bf70bae |
| POOL_INIT_CODE_HASH | 0xf381c67d48673ceb8a17b53722647aee43310f100cd97f25bfcc628958372b8b |
| POOL_USDC_WETH | 0x3B2E627DbDd6B8cc2CbA9B71154b32C9bb5Ed5d3 |
| CORE_AUTOLISTING | 0x5c24027303865b744f2794945aee88eA56F1F5ee |
| FREE_AUTOLISTING | 0x8D13f2795228aB18faeFBdF9461E7E46b5853Bc5 |
| AUTOLISTINGS_REGISTRY | 0xF3129265872004bD235de4Ac5e312254D962cC38 |
| Utility CFG 2 (test helper) | 0x6D0e2CD13e1506924182d2197EE64D53CA8ba8a2 |
| Margin Module | 0xa64c8C9e13185e54dF846a7AC3265b9Be4E96104 |
| Name | Address |
|---|---|
| WETH9 | 0xb16F35c0Ae2912430DAc15764477E179D9B9EbEa |
| TOKEN_CONVERTER | 0xe831FDB60Dc18c264f1B45cadAFD5f2f2993EE83 |
| POOL_LIBRARY | 0x1bc27faa75002e1f034e57c9e62236c2e0f7ed16 |
| FACTORY | 0x6228e33cea2a9bdfb7dfe09087841cb56f683f04 |
| SWAP_ROUTER | 0xBE65a8dabc45d394E40B81977485096F4ee17558 |
| POSITION_MANAGER | 0xca666abfdf2d31a3f4efff8ced7c6504389e51ba |
| POOL_INIT_CODE_HASH | 0xcaa18af2f32aa83067a3bf5052fe7f4e6025a374579f128fd30bff2c48511b61 |
- Run local virtual node:
yarn run hardhat:node- Compile contracts:
yarn run hardhat:compileor use force to re-compile all contratcs
yarn run hardhat:compile:force- Prepare JSON files for contract verification.
Search for output files in
./artifacts/solidity-jsonfolder
yarn run hardhat:verify- Run ALL tests:
yarn run hardhat:test- Update values for GAS tests:
yarn run hardhat:test:update- Run only SwapRouter tests:
yarn run hardhat:test:router- Run only SwapRouter GAS tests:
yarn run hardhat:test:routergas- Run only Factory tests:
yarn run hardhat:test:factory- Run only Pool tests:
yarn run hardhat:test:pool- Run only Pool Swaps tests:
yarn run hardhat:test:poolswaps- Run only NonfungiblePositionManager tests:
yarn run hardhat:test:nfpm- Run only AutoListing tests:
yarn run hardhat:test:autolist