UnitFlow LogoUnitFlow Docs

Smart Contracts

All contracts are deployed on Arc Testnet (Chain ID: 5042002). The explorer is at testnet.arcscan.app.

V2.5 Protocol

ContractAddressRole
Factory0xd67F63A4F26a497b364d1C82e6747Aec8B5743a5Creates and tracks all V2.5 pairs
Liquidity Router0x0ef57CC428c851e9a9b7cD97190EF3D3EFe4B631Handles add/remove liquidity
Swap Router0x4AA8c7Ac458479d9A4FA5c1481e03061ac76824AExecutes token swaps
WUSDC0x911b4000D3422F482F4062a913885f7b035382DfWrapped native USDC for AMM compatibility

V3 Protocol

ContractAddress
Factory0xAb6A8AAb7d490007634ef59d424b5d89688a1971
Router0x23970b3a5AD7211eC4A858a29258F1e288eE2420
Position Manager0x394f12daac66786D04391556AF1363a36eEB7F4B
Quoter0x121aeB6DEf00F6F67665008CaC1C19805886ed1a
Migrator0x4122f9B4ee7C18CC6b6b71180B438477D17034AB
Tick Lens0x621d5704C2B3470D21BaC7Bb47B1b933116551fA

V4 Protocol

ContractAddress
Pool Manager0x153816c77256481e8E3189DdCB599caA1dab4389
Position Manager0x2873F8C62c122A403A9939b18eE562cC91f1d0fc
Quoter0x3A693DE0Bf7e48BB247b24C35A5889834c67450B
State View0x7E735D8753700B5130590978AADf03873238DE5F
Permit20x4ce562F687d0Ced27b79Ba51d79B63BD978F7F48
Position Descriptor0x2df231fc6281d1D9cC21EB1b67f772Ed4259d38f

NFT Contract

FieldValue
NameunitflowNFT
Address (DEX gating)0x9e05C6075f9E890fC515EF86091414C77036f8FA
Address (landing page)0xA39a5F24D454E166CF4ee35892Cb456e6c00Cd87
StandardERC-721
Token NameUnitFlow NFT
Token SymbolARCNFT

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)

ContractAddress
TokenMessenger0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA
MessageTransmitter0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275
Native USDC0x3600000000000000000000000000000000000000

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/.