Smart Contracts
All contracts are deployed on Arc Testnet (Chain ID: 5042002). The explorer is at testnet.arcscan.app.
V2.5 Protocol
| Contract | Address | Role |
|---|
| Factory | 0xd67F63A4F26a497b364d1C82e6747Aec8B5743a5 | Creates and tracks all V2.5 pairs |
| Liquidity Router | 0x0ef57CC428c851e9a9b7cD97190EF3D3EFe4B631 | Handles add/remove liquidity |
| Swap Router | 0x4AA8c7Ac458479d9A4FA5c1481e03061ac76824A | Executes token swaps |
| WUSDC | 0x911b4000D3422F482F4062a913885f7b035382Df | Wrapped native USDC for AMM compatibility |
V3 Protocol
| Contract | Address |
|---|
| Factory | 0xAb6A8AAb7d490007634ef59d424b5d89688a1971 |
| Router | 0x23970b3a5AD7211eC4A858a29258F1e288eE2420 |
| Position Manager | 0x394f12daac66786D04391556AF1363a36eEB7F4B |
| Quoter | 0x121aeB6DEf00F6F67665008CaC1C19805886ed1a |
| Migrator | 0x4122f9B4ee7C18CC6b6b71180B438477D17034AB |
| Tick Lens | 0x621d5704C2B3470D21BaC7Bb47B1b933116551fA |
V4 Protocol
| Contract | Address |
|---|
| Pool Manager | 0x153816c77256481e8E3189DdCB599caA1dab4389 |
| Position Manager | 0x2873F8C62c122A403A9939b18eE562cC91f1d0fc |
| Quoter | 0x3A693DE0Bf7e48BB247b24C35A5889834c67450B |
| State View | 0x7E735D8753700B5130590978AADf03873238DE5F |
| Permit2 | 0x4ce562F687d0Ced27b79Ba51d79B63BD978F7F48 |
| Position Descriptor | 0x2df231fc6281d1D9cC21EB1b67f772Ed4259d38f |
NFT Contract
| Field | Value |
|---|
| Name | unitflowNFT |
| Address (DEX gating) | 0x9e05C6075f9E890fC515EF86091414C77036f8FA |
| Address (landing page) | 0xA39a5F24D454E166CF4ee35892Cb456e6c00Cd87 |
| Standard | ERC-721 |
| Token Name | UnitFlow NFT |
| Token Symbol | ARCNFT |
NFT Contract Interface
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract unitflowNFT is ERC721, Ownable {
enum NFTType { GENESIS, ACTIVITY }
// Mint Genesis NFT (once per wallet)
function mintGenesis() external;
// Mint Activity NFT (once per day, requires prior Genesis mint)
function mintActivity(string calldata tweetUrl) external;
// Read functions
function getUserGenesisCount(address user) external view returns (uint256);
function getUserActivityCount(address user) external view returns (uint256);
function hasMinted(address user, NFTType nftType) external view returns (bool);
function canMintActivity(address user) external view returns (bool);
function getTimeUntilNextActivityMint(address user) external view returns (uint256);
function isUserVerified(address user) external view returns (bool);
function userPoints(address user) external view returns (uint256);
function totalGenesisSupply() external view returns (uint256);
function totalActivitySupply() external view returns (uint256);
}CCTP Contracts (Arc Testnet)
| Contract | Address |
|---|
| TokenMessenger | 0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA |
| MessageTransmitter | 0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275 |
| Native USDC | 0x3600000000000000000000000000000000000000 |
Contract Source
The unitflowNFT contract source is in the landing page repository atcontracts/ArcFlowNFT.sol. It extends OpenZeppelin's ERC-721 and Ownable.
The V2.5 core and periphery contracts are in the DEX repository undercontracts/core/ and contracts/periphery/.