PositionManager on Arc
Uniswap v4 Hook Contract 0xc780c0f4aac690908854d351b8bfda2812daefdc on Arc · Launchpad · Verified contract
- Volume (24h)
- $29.37K
- Value locked (TVL)
- $35.09K
- All-time volume
- $3.94M
- Pools using this hook
- 250
- Swaps (24h)
- 591 (135 traders)
- Total swaps
- 34,989
What it does
A Flaunch launchpad hook that creates a memecoin pool on Uniswap v4 at token launch, runs a fair launch window where only buys from a single-sided position are allowed, then routes swap fees to creators, the treasury, a BidWall liquidity support position and the protocol.
How it works step by step
- Creates the memecoin, its ERC721 creator token and treasury, and initializes the Uniswap v4 pool from the flaunch() entry point, which also sets the initial price via an IInitialPrice contract.
- During the fair launch window, blocks liquidity changes by others and blocks sells of the memecoin, filling buys from a fair launch position through fillFromPosition.
- Supports optional scheduled launches and same-transaction premines, where a premine amount is stored in transient storage and checked in beforeSwap.
- Captures a swap fee on fair launch fills, internal swaps and Uniswap swaps, and splits it between creator, BidWall, treasury and protocol recipients.
- Runs an internal swap pool that uses accumulated fee tokens to fill swaps ahead of the Uniswap pool, adjusting the hook's before-swap delta.
- Maintains a BidWall single-sided ETH position one tick below spot that repositions on fee thresholds or staleness.
- Swap behaviour
- beforeSwap can enforce schedule/premine checks, close or fill the fair launch position, burn unsold supply, run internal swaps against accumulated fee tokens and return a before-swap delta that changes the amount routed to the pool. afterSwap captures a fee in the unspecified currency via return delta, distributes fees above a threshold, tracks swaps for an optional fee calculator and emits events.
- Liquidity behaviour
- Adding or removing liquidity is reverted for non-BidWall and non-FairLaunch senders while the fair launch window is open. Outside the window, add and remove are allowed and only trigger event emission and notifier calls.
- Fee behaviour
- Fees are set by the pool's static fee of 0 plus an optional fee calculator and FeeExemptions, and are taken as a percentage of each swap through afterSwap and beforeSwap return deltas. The fee is split across creator (or BidWall if the creator burned ownership), BidWall, treasury and protocol recipient, with a referrer share paid directly when set.
- Owner & admin controls
- Owner (Solady Ownable with a two-step handover) can call setFlaunch, setInitialPrice, setFeeCalculator, setFairLaunchFeeCalculator, setFeeDistribution, setFairLaunchFeeDistribution, setProtocolFeeDistribution, setReferralEscrow and setFlaySplit-style setters in FeeDistributor, plus renounceOwnership and transferOwnership. The BidWall owner can set the swap fee threshold and stale time window. Memecoin creators (ERC721 holders) can disable a pool's BidWall, which closes it and moves its liquidity to the treasury. Source for the omitted FeeDistributor and FairLaunch contracts was not provided, so the full list of admin setters is not confirmed.
Enabled Uniswap v4 callbacks
beforeInitialize, beforeAddLiquidity, afterAddLiquidity, beforeRemoveLiquidity, afterRemoveLiquidity, beforeSwap, afterSwap, afterDonate, beforeSwapReturnDelta, afterSwapReturnDelta
beforeInitialize reverts direct initialization so only the PositionManager itself can initialize its pools. beforeAddLiquidity and beforeRemoveLiquidity enforce the fair launch lock. beforeSwap runs fair launch, premine, internal swap and BidWall stale checks. afterSwap captures fees and distributes them. afterAddLiquidity, afterRemoveLiquidity and afterDonate emit state events and notify subscribers. beforeSwapReturnDelta lets the hook adjust swap amounts for internal swaps and fair launch fills. afterSwapReturnDelta lets the hook take the fee as an unspecified-currency delta.
Security & trust assessment
Risk level: medium (verified source, medium confidence).
Who controls it: The owner can change fee-related parameters, the fee calculator, the fee distribution and the external contracts the hook calls, which can change the fees charged on swaps and the destination of fees. Pausing is not present in the visible code.
Risk to user funds: The hook holds ETH and memecoins for the BidWall, pending fees and fair launch positions, and it takes fees from swaps through return deltas. It can move pool funds through liquidity removal and reposition calls, and it burns unsold fair launch supply to dEaD. Transfers out depend on owner-configured fee and distribution parameters that were not fully verifiable from the provided source.
Security findings
- [medium] Owner-set fee and distribution parameters: The owner can change the fee calculator, fee distribution splits and protocol fee distribution through setter functions, which directly change how much of each swap is taken and where it goes. The FeeDistributor source was omitted, so the bounds on these values could not be verified.
- [medium] Owner-replaceable external dependencies: setFlaunch, setInitialPrice, setFeeCalculator and setReferralEscrow let the owner point the hook at new external contracts. A malicious or buggy replacement could change pricing, fee logic or where referral and fee funds are sent.
- [medium] Hook takes fees via return deltas: afterSwap and beforeSwap return deltas take part of each swap as an unspecified-currency amount and internal swaps alter the amount routed to the pool. This moves value out of user swaps by design, so the fee rate and the fee-taking code path are the key trust points.
- [low] Creator can close BidWall liquidity: The memecoin creator (current ERC721 holder) can call setDisabledState to disable the BidWall, which removes its liquidity and transfers pending ETH and memecoins to the treasury. This changes pool depth for traders.
- [info] Fair launch premine and sell restrictions: During the fair launch window, selling the memecoin is blocked, liquidity changes are blocked, and buys fill from a fixed position. Same-transaction premines use transient storage to bypass the schedule check, which is a deliberate design choice.
Contract details
- Verified source
- Yes (PositionManager)
- Compiler
- solc 0.8.26+commit.8a97fa7a
- Bytecode size
- 24,557 bytes
- Upgradeable proxy
- No
- Detected patterns
- dynamic-fee, launchpad, moves-currency, ownable, return-delta, self-unlock, tax
Pools using PositionManager
- USDC / UBI (0.00% fee) — 24h volume $29.06K, TVL $33.54K, 560 swaps today
- UBIGUY / USDC (0.00% fee) — 24h volume $306, TVL $640, 21 swaps today
- USDC / REPDELLIAN (0.00% fee) — 24h volume $0.07, TVL $4.93, 2 swaps today
- USDC / LARC (0.00% fee) — 24h volume $0.06, TVL $3.36, 2 swaps today
- USDC / TOKEN (0.00% fee) — 24h volume $0.04, TVL $0.02, 2 swaps today
- USDC / BUBBLEWRAP (0.00% fee) — 24h volume $0.04, TVL $0.39, 2 swaps today
- USDC / JIMOTHY (0.00% fee) — 24h volume $0.03, TVL $18, 2 swaps today
- USDC / UBIDOG (0.00% fee) — 24h volume $0, TVL $410, 0 swaps today
- UBICAT / USDC (0.00% fee) — 24h volume $0, TVL $19, 0 swaps today
- USDC / JEREMY (0.00% fee) — 24h volume $0, TVL $107, 0 swaps today
- USDC / USDC (0.00% fee) — 24h volume $0, TVL $175, 0 swaps today
- USDC / UCAT (0.00% fee) — 24h volume $0, TVL $0.03, 0 swaps today
- UBOT / USDC (0.00% fee) — 24h volume $0, TVL $0.99, 0 swaps today
- UBIDOG / USDC (0.00% fee) — 24h volume $0, TVL $1.08, 0 swaps today
- USDC / MASCOT (0.00% fee) — 24h volume $0, TVL $1.60, 0 swaps today
- USDC / CHAIRTY (0.00% fee) — 24h volume $0, TVL $20, 0 swaps today
- USDC / ADOG (0.00% fee) — 24h volume $0, TVL $1.16, 0 swaps today
- USDC / MARSHMALLOW (0.00% fee) — 24h volume $0, TVL $1.79, 0 swaps today
- USDC / UP (0.00% fee) — 24h volume $0, TVL $20, 0 swaps today
- USDC / SIBA (0.00% fee) — 24h volume $0, TVL $1.30, 0 swaps today