Pilot's Manual // v0.1

THE MANUAL.

Everything you need to know about uniBOT - architecture, tokenomics, math, deployment, and the contract surface.

// CONTENTS
  1. What is uniBOT?
  2. The Fleet
  3. The v4 Hook
  4. $UBOT Token
  5. Yield Math
  6. Minting
  7. Claiming
  8. Deployment
  9. Owner Controls
  10. Risks

01What is uniBOT?

uniBOT is a fleet of 256 cybernetic pegasi bound to a single Uniswap v4 hook contract on Ethereum mainnet. The bots are NFTs - each one rolled fairly at mint with a model, a tier, and a power score. Owning a bot grants you a yield share of every $UBOT swap forever.

The fleet is original-design from the ground up: an autonomous swarm of cybernetic pegasi rebuilt as fleet-mounted, hook-bound trading mechs. Cute heads, stark wings, single horn forward. The contract surface is what matters - the bots are the treasury, the treasury is the fleet.

02The Fleet

Each bot has four traits, all sealed at mint:

Tier weights: DRONE 1x · SCOUT 3x · STRIKER 8x · VANGUARD 20x · OVERLOAD 50x. Roll probabilities: 60% / 25% / 10% / 4% / 1%.

03The v4 Hook

Uniswap v4 introduced hooks - contracts that get called at specific points in a pool's lifecycle. uniBOT uses two hook flags:

Combined flag mask: 0x0044. Hook addresses must be salt-mined to land on these specific bits, which is why the project ships a HookDeployer contract.

Inside _afterSwap(), the hook reads the unspecified-side delta, computes a 5% surcharge, and calls poolManager.take() to pull that much into its own balance. The hook is also the bot collection contract - so the surcharge accumulates directly in the same place that distributes yield.

04$UBOT Token

$UBOT is a vanilla ERC-20 with two non-standard hooks for the bot system:

Trading is gated by trading_open until the owner flips open_trading(). Excluded addresses (owner, marketing, dev, bot contract) can move tokens before the gate is open so liquidity can be seeded.

05Yield Math

On every swap, the hook computes:

surcharge = abs(unspecified_delta) * surcharge_bps / 10_000
poolManager.take(unspecified_currency, address(this), surcharge);
return (afterSwap.selector, int128(uint128(surcharge)));

The returned delta tells the v4 PoolManager to charge the swapper this much - so the LP curve is untouched, and the take comes off the user side.

At each 7-day epoch boundary, anybody can call distribute_to_holders() with the current holder list and weight array (typically generated off-chain by indexing Transfer events). The contract splits the treasury:

Holder amounts get added to pending_ubot[] and pending_eth[] mappings. Holders pull their share by calling claim_yield() any time after.

06Minting

Mint is open once the owner flips set_mint_open(true). Cost is 0.05 ETH per bot, max 5 per transaction, max 256 total ever.

uniBot.mint{value: 0.05 ether}(1);

The roll uses blockhash(block.number-1) + block.prevrandao + the minter's address + the new token id - which is good-enough randomness for an art mint where there's no MEV target above the floor odds.

07Claiming

Once an epoch is distributed, your pending_ubot[you] and pending_eth[you] values are non-zero. Call:

uniBot.claim_yield();

This zeroes both pending mappings and sends $UBOT + ETH to your address in one transaction. Or use the Claim page.

08Deployment

The deploy is done in this order:

09Owner Controls

The hardcoded owner address is 0xa79D8Df387AF1dB04ecC1358A1Aa4C9bfCBb39ad. Owner can:

Anti-snipe limits are skipped during pre-trading (so initial liquidity adds work) and skipped for any address marked is_excluded_from_gate (owner, marketing, dev, bot contract, pool manager). They only apply between regular wallets after trading_open = true.

Owner cannot mint bots for free, cannot change tier weights, cannot rewrite distribution math, and cannot block claims. Those are immutable.

10Risks

uniBOT is unaudited. Treat it as experimental. The main risks:

Don't put more in than you'd lose. This is a meme + a hook + a fleet. Read the code, understand the math, then decide.

// END OF MANUAL

Source: contracts/UBotToken.sol · contracts/UniBot.sol · contracts/HookDeployer.sol