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
Router0xB0Ba24f9C49D933523219e92528E7e5db93e9AFc
Position Manager0x0553682bc188b850acd31CBd3500Dcd0aa35372B
Quoter0x121aeB6DEf00F6F67665008CaC1C19805886ed1a
Migrator0x4122f9B4ee7C18CC6b6b71180B438477D17034AB
Tick Lens0x621d5704C2B3470D21BaC7Bb47B1b933116551fA

V4 Protocol

ContractAddress
Pool Manager0x33C02bfb9e39AAAe30F8bE86b850f8ce53d20C0b
Position Manager0xA464d4e7614546a127773CedBDDd64FB81421723
Quoter0xf9d5Ae3c08602390ea15A3968f2D25cc3c3A7ced
State View0xEAea934839E8A7CfBfd85336380F77d72e090bBe
Permit20x4ce562F687d0Ced27b79Ba51d79B63BD978F7F48
Position Descriptor0x212f6Ded16644cB2858Aa9Cc7Df5150D0356C2C7

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);
}

UniversalRouter

The UniversalRouter is a single entry-point contract for routing swaps across V2.5, V3, and V4 using a command-based execution model. See the UniversalRouter page for full usage details.

ContractAddressRole
UniversalRouter0xEaF3195bE51861632cd32850973C9515DA48e76FRoutes swaps across V2.5, V3, and V4 via command encoding
Permit20x4ce562F687d0Ced27b79Ba51d79B63BD978F7F48Shared token approval contract (V3, V4, UniversalRouter)

CCTP Contracts (Arc Testnet)

ContractAddress
TokenMessenger0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA
MessageTransmitter0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275
Native USDC0x3600000000000000000000000000000000000000

Predict Protocol

Binary prediction markets. All four contracts use OpenZeppelin's TransparentUpgradeableProxy. See the Predict documentation for full details.

ContractAddressRole
PredictMarketFactory0x7Ec112983011db79f907285daBc759643A9D8304Deploys and registers all prediction markets
PredictMarketFactory (impl)0x2EA73225038E9D8b9767B722425c1d69dB8EB748Implementation
PredictOracle0xc40E6653D3a76FAA8F3F68060f1D09AEB5153A15Proposes and finalizes market outcomes (24h dispute window)
PredictOracle (impl)0xbdB7FD8E6FB1a0F3976E46B49C2c92BC532450F1Implementation
FeeDistributor0x0d0425413284ebB4023913ef78Eb207241d3b2eCSplits protocol fees: 60% buyback / 20% LP / 20% treasury
FeeDistributor (impl)0x7b528bC0AF9Cd45F3C37982987E99ADD43B9a49EImplementation
MockUnitFlowRouter0x285562e96B281791270090Ead5239b9747fe9197Stub router for FeeDistributor (pre-UNIT launch)

Contract Source

The unitflowNFT contract source is in the landing page repository at contracts/ArcFlowNFT.sol. It extends OpenZeppelin's ERC-721 and Ownable.

The V2.5 core and periphery contracts are in the DEX repository under contracts/core/ and contracts/periphery/.

The Predict contracts are in the predict-smart-contract repository under contracts/predict/. All contracts are verified on ArcScan.