Angler
← Back to the page

Docs

How Angler works, line by line.

Take-profit and stop-loss for Robinhood Chain coins: what a line is, how each kind fills, what it costs, what can go wrong, and where to verify all of it.

Contents16
  1. 01Overview
  2. 02Lines
  3. 03How a take-profit fills
  4. 04Stop-loss and trailing stop
  5. 05Your Tackle Box
  6. 06Keepers and the Reel Race
  7. 07Fees
  8. 08$ANGLER
  9. 09Catch Log and cards
  10. 10Contracts and API
  11. 11Security
  12. 12Launch
  13. 13Roadmap
  14. 14Risks
  15. 15FAQ
  16. 16Addresses and links

01

Overview

Angler adds take-profit and stop-loss to the coins it lists on Robinhood Chain, each on its own main Uniswap v4 pool. A take-profit rests as liquidity in the coin's Angler pool and fills inside the next swap that crosses it, through a Uniswap v4 hook. A stop-loss is fired by keepers, and only after the price has stayed under the floor for 30 seconds.

Your bag never leaves your own vault, a Tackle Box: a small contract that belongs to your wallet and that nobody else can empty.

  • Resting lines (take-profits) are filled by the market itself; nobody has to be awake
  • Triggered lines (stop-loss, trailing stop) are fired by an open race of keepers
  • One Tackle Box per wallet: only you can cast, cancel or withdraw
  • One fee, 0.30%, and only when a line fills; casting, cancelling and withdrawing are free
  • 40% of what the protocol keeps buys $ANGLER and burns it

Pre-launch: no contract and no coin exist on chain yet. Every live number on the site reads zero, and the sample night is labelled as a sample. Addresses are posted in the Addresses section of this page.

02

Lines

A line is an exit, or an entry, you leave behind. Some can rest in the market. Some need someone awake. Angler gives each the engine it needs.

Resting lines

  • Take-profit: sell part of a bag at a price above today's
  • Ladder (V2): several take-profits stacked up the chart
  • Limit buy (V2): buy a coin at a price below today's

Rests as liquidity in the coin's Angler pool. Nobody has to be awake.

Triggered lines

  • Stop-loss: sell when the price stays under a floor
  • Trailing stop: sell when it falls a set share from its high
  • OCO (V2): a take-profit and a stop-loss; one cancels the other

Stored in your Tackle Box. The keeper that fires it is paid a tip.

What a line needs

Coin and amount
from your bag, read from chain
Target, floor or trail
the price you want, or the share under the high for a trailing stop
Max slippage
default 10%, triggered lines only
Forward address
optional: where filled ETH is sent automatically
Minimum line
0.005 ETH

03

How a take-profit fills

  1. 01Cast: You pick a coin in your bag, a target and a size.
  2. 02Rest: Your Tackle Box parks those tokens as one-sided liquidity in a narrow range at the target, in the coin's Angler pool.
  3. 03Pass: The coin's main pool climbs past your target. The Angler pool is now the cheaper place to buy.
  4. 04Buy: An arbitrageur buys from the Angler pool. That swap sells your tokens at your price.
  5. 05Close: Inside the same swap, the hook marks your range filled and pulls it out. It is ETH now and it stays ETH.
  6. 06Land: The ETH lands in your Tackle Box, minus the fill fee. Withdraw it any time, or forward it automatically.

Why it has to be a hook

A plain range position on a Uniswap pool is not a limit order. When the price crosses your range, your tokens become ETH; when it falls back, the ETH becomes tokens again. You sold the top and still woke up holding the bag.

The Angler hook runs after every swap in its pool. It reads which ranges the swap crossed, closes every range crossed in full, and books the ETH to the owner's Tackle Box. A fill is final: that one property is the product.

Who buys from your line

  • Any arbitrage on Robinhood Chain sees a free spread between the two pools
  • It buys from the Angler pool and sells on the main pool
  • You get your exact price plus the pool's 0.05% LP fee: a maker rebate
  • The arbitrageur keeps the spread above your target

If no outside arbitrage shows up, Angler's own keeper closes the gap within seconds and keeps the spread. No subsidy: the spread pays for it.

Angler pool

Pair
coin / ETH
Pool fee
0.05%, paid to the resting line as a maker rebate
Tick spacing
10, so a take-profit range is about 0.1% wide
Created
on a coin's first order, by the hook itself, at the venue's price
Target rule
at least 1% above the price when the line is cast

This is the limit-order design from Uniswap v4's reference hooks. The idea is public; the implementation, the vaults and the keeper layer are Angler's.

04

Stop-loss and trailing stop

A stop-loss cannot rest in the pool: someone has to fire it. Angler lets it fire only when the drop is real, the way a reel's drag gives line on a sudden jerk instead of snapping.

  1. 01Arm: Price on the coin's listed pool goes under your floor. A keeper calls arm(): the line records the time and the price it saw.
  2. 02Hold: 30 seconds later the price must still be under the floor, or the line disarms itself.
  3. 03Fire: A keeper calls fire(), which runs one swap: your vault's coins into that same pool, ETH back to your vault.
  • Price source: the listed pool's own tick, read in the same block as the call, never from inside another swap
  • Keepers are named in the Harbor, in public, so a price moved and put back inside one transaction cannot arm or fire you
  • An armed line expires after 10 minutes unfired, or the moment the price recovers
  • minOut = floor x (1 − your max slippage), checked by the vault, so a sandwich cannot fill you far below it
  • Take-profit targets must start at least 1% above the price, so nobody casts and self-fills for a card

Trailing stop

  • You set: trail 25% under the high
  • The stored high only moves up; a keeper ratchets it when the pool prints a new high
  • Under high x 0.75: arm, hold 30 s, fire
  • The high, the trigger and the fire transaction are all public

Said plainly: a fast crash can still sell below the floor's price. minOut caps how far, and an armed line disarms on a recovery. Both are in the docs.

05

Your Tackle Box

A Tackle Box is a small contract that belongs to you. One per wallet, created with your first line.

Only you
cast, cancel, withdraw, and set where your proceeds go
Keepers, checked by code
arm, fire and ratchet triggered lines, never from inside a swap; anyone may claim filled ETH into your box
Hard rules
proceeds go only to the box or your forward address; one swap shape, into the line's own venue; no standing approvals

Owner-only calls

castTakeProfit(coin, targetTick, amount)
setStop(coin, floorTick, size, maxSlippage)
setTrail(coin, trailBps, size, maxSlippage)
cancel(lineId)            // tokens back at once, no fee
withdraw(asset, amount)
setForward(address)

Open calls, checked by the box itself

arm(lineId)
fire(lineId, minOut)
ratchet(lineId)           // trailing stops: move the stored high up
claimFilled(epoch)        // filled ETH into the owner's box

What Angler never does

  • Never holds your keys, or your tokens outside your own Tackle Box
  • No admin key can move funds out of any Tackle Box
  • No setter can change where your proceeds go, except yours, signed by you
  • No off-chain fill: if it is not on chain, it did not happen
  • No pause on cancel or withdraw, ever
  • No priority lane for size: every keeper races every line on the same terms

06

Keepers and the Reel Race

Every due line on Angler is a paid job. Robinhood Chain's sequencer takes transactions first come, first served, so among keepers it is a race of latency, not of fees. In the beta, Angler's own keeper does the work; outside keepers are named in the Harbor after 24 hours in public, and then they race.

  1. 01Run the open-source keeper from a wallet the Harbor names
  2. 02It reads due lines straight from the chain
  3. 03arm() when a floor is crossed, fire() after the 30-second hold
  4. 04First to land: the tip and Reel Race points. Late: a revert that costs a fraction of a cent
  5. 05Side work, open to anyone: arbitrage the Angler pools and keep the spread
  • Tip: 0.10% of the ETH out, floor 0.00002 ETH, paid inside the fill fee to whoever lands fire()
  • Take-profits pay no tip: the arbitrageur is paid by the spread
  • ratchet() on a trailing stop pays no tip
  • Angler's own keeper reads the same feed on the same terms, and its share of fires is published live

Season

Season
14 days
Points per fire
1 under 0.05 ETH · 2 under 0.5 ETH · 3 from 0.5 ETH
Season pool
25% of the protocol's share of fees that season
Paid to
the top 20 keepers, by points
Angler's own keeper
fires, but takes no points and no share of the pool

Due list

Every keeper, Angler's own included, reads the same contracts: there is no private feed.

box.linesFrom(0, n)
{
  "kind": "stop-loss",
  "state": "armed",
  "trigTick": 79834,
  "armedAt": 1761422730,
  "fireAfter": "armedAt + 30 s"
}

07

Fees

No subscription, no deposit fee, nothing on a line that never fills.

Take-profit fill
0.30% (0.15–0.25% with tiers)
Stop-loss fill
0.30% (same tiers)
Trailing-stop fill
0.30% (same tiers)
Cast a line
free
Cancel a line
free
Withdraw
free

Inside the fee, never on top of it

  • Keeper tip, triggered lines only: 0.10% of the ETH out, floor 0.00002 ETH, to whoever lands fire()
  • Take-profit fills pay no tip: the arbitrageur is paid by the spread
  • Integrator share: 30% of the fill fee of every line cast through an integrator, sent at fill time

What the protocol keeps, after tips and integrator shares

Buyback + burn40%
Reel Race pool25%
Operations25%
Reserve10%

The buyback runs weekly and is published as the Weigh-In report: every transaction, every amount, and the running total.

A model, not a forecast

Assumes 50 ETH of lines fill a day, 60% take-profits and 40% stop-losses, everyone at the base tier.

Fill volume a day
50 ETH
Fees a day
0.15 ETH
Buyback + burn a week
0.364 ETH
Season pool, 14 days
0.455 ETH

50 x 0.30% = 0.15 ETH of fees; tips on the 20 ETH of stop-losses take 0.02; the protocol keeps 0.13 a day, 40% of it to the buyback.

Unit economics

  • Execution on Robinhood Chain: about 0.000006 ETH a swap, one to two cents
  • A 0.1 ETH fill at 0.30% pays 0.0003 ETH
  • Break-even fill: about 0.003 ETH. Minimum line: 0.005 ETH

Integrators

  • SDK, free: cast, cancel and read lines from any app
  • Read API, free: stats, lines, catches, pools, the due feed
  • Alerts webhook: free up to 10,000 events a month, then 0.002 ETH per extra 10,000
  • Integrators are paid through the 30% share, so what they get grows with the fills they bring

08

$ANGLER

The token buys cheaper fills and more capacity. It never buys execution priority: every keeper races every line on the same terms, whoever owns it.

Deckhand · hold 0
0.30% fill fee · 3 active lines · Take-profit + stop-loss · Catch Log + share cards
Skipper · hold 1M · 0.1% of supply
0.25% fill fee · 10 active lines · Trailing stops · Ladders up to 3 rungs (V2)
Captain · hold 5M · 0.5% of supply
0.20% fill fee · 30 active lines · Ladders up to 8 rungs + OCO (V2) · Captain frame on catch cards
Harbormaster · hold 20M · 2% of supply
0.15% fill fee · Unlimited lines, 16-rung ladders · New line types first · Name on the harbor wall
  • Tier = your 24-hour average $ANGLER balance, read from Transfer events, not a snapshot
  • A flash buy for a cheaper fill does not move the average
  • The fee tier is fixed when the line is cast
  • Tiers apply per wallet; nothing to link

Tokenomics

Total supply
1,000,000,000 $ANGLER
Team allocation
0. Fair launch, 100% to the curve
Chain
Robinhood Chain (EVM 4663)
Launch
Robinhood Chain launchpad: bonding curve to Uniswap v4 graduation, LP locked
Creator tax
1%, to the BuybackVault, set in the launch transaction
Dev buy
at most 2%, from a wallet named in the docs before launch
Snipe-tax waivers
none besides the deployer, listed with the launch tx

Creator fees

  • The launchpad's creator-fee share on $ANGLER trading, at a 1% creator tax
  • The recipient is the BuybackVault contract, set inside the launch transaction
  • Every claim buys $ANGLER and burns it in the same transaction

Flywheel

  1. 01Catch cards get posted
  2. 02More holders cast lines, more lines fill
  3. 03Fill fees in ETH: 40% buys back $ANGLER and burns it
  4. 04Creator fees on $ANGLER go to the same buyback
  5. 05Holders tier up for cheaper fills
  6. 06More resting lines make deeper Angler pools and faster fills

09

Catch Log and cards

Each fill becomes a row with its transaction, and a card its owner can post.

First Cast
your first line, filled
Night Catch
a fill between 00:00 and 06:00 in your time zone
Big Fish
a take-profit at 5x or more
Clean Cut
a stop-loss that sold at least 30% above the next 24 h low
Full Ladder
every rung of a ladder filled (V2)
Iron Line
100 filled lines

Gaming it, and why it does not pay

A keeper fires its own lines for points
The tip comes back, the points do not
Linked wallets trade points between themselves
A shared funder or deployer within 2 hops removes those points, listed publicly
Dust lines for volume
Minimum line 0.005 ETH; points capped at 20 per line owner per day
Cast and self-fill for a card
Targets start 1% above the price; cards only for fills 10+ minutes after the cast
Flash-buy a tier for one cheap fill
A 24-hour average balance; the fee is fixed at cast
Push the price down to fire stop-losses
Arm, a 30-second hold, and a minOut floor

10

Contracts and API

Eight contracts on Robinhood Chain, an index that can be rebuilt from chain events, and keepers named in public.

AnglerHook
The Uniswap v4 hook. Opens a coin's Angler pool on its first order (ETH/coin, 0.05% fee, tick spacing 10) and closes crossed ranges inside afterSwap. Immutable, no owner, no upgrade.
TackleBoxFactory
One Tackle Box per wallet: an EIP-1167 clone of one fixed implementation, at an address known before it exists.
TackleBox
Your vault: rests take-profits, holds stop-losses and trailing stops, runs arm, fire and ratchet with one swap shape into the line's own venue pool. Withdraws are owner only.
Harbor
The settings: beta caps, the new-pools switch, the fee-tier source, the keepers, the listed coins and their pools, the integrator list. It holds no funds. Caps, pools, tiers, new keepers and a listed coin's pool change only after 24 hours in public; the brake stops new lines at once, and only the same 24-hour queue lifts it.
FeeRouter
Splits each fill fee by pull: keeper tip, integrator, buyback, season pool, operations, reserve. No payee can block a fill.
BuybackVault
The creator-fee recipient. Once $ANGLER exists it buys it on Uniswap v4 in small chunks and burns it.
ReelRegistry
The Catch Log and the Reel Race, on chain: every fill is a row, and each season settles to the top 20 keepers by points.
AnglerArb
The capital-free arbitrage that fills take-profits: buys from the Angler pool, sells into the venue, keeps the spread. Open to anyone.

Inside the hook

beforeInitialize
only the hook itself opens Angler pools
beforeAddLiquidity
only the hook adds liquidity, for a Tackle Box, so every range in the pool belongs to an order
afterSwap
settle the ranges the swap crossed
Epochs
orders at one range share an epoch; a crossing fills the whole epoch at once, owners claim their pro-rata ETH
Bounded work
at most 24 epochs per swap; anything beyond is settled by the next swap, the next order, or anyone calling settle()

Reading Angler

factory.boxesFrom(from, n)  every Tackle Box
box.linesFrom(from, n)      a box's lines
hook.epochOf(id)            a take-profit's epoch: filled, ETH held
reel.latest(n)              the newest fills
reel.stats(season, keeper)  keeper standings
hook.poolOf(coin)           one Angler pool
harbor.capLine() …          the beta caps in force

There is no Angler server to trust: the app and every keeper read these same contract calls, and your wallet signs every write.

Contracts
Solidity on Robinhood Chain, Uniswap v4 hooks
Index
none to trust: the Catch Log and the keeper season live in contract storage
Reads
a keyed Robinhood Chain RPC, with a second provider as failover
Front end
Next.js and React

11

Security

  • A beta, not yet externally audited: an internal review, plus unit, invariant and fork tests against live Robinhood Chain pools
  • Beta caps: 2 ETH per line, 25 ETH per Angler pool, 250 ETH protocol-wide, raised only after an external review is published
  • Bug bounty paid from the 10% reserve
  • No proxy and no upgrade path; no key can move a coin out of a Tackle Box
  • One owner key, on the Harbor: caps, the new-pools switch, the fee-tier source, new keepers and a listed coin's venue change only after 24 hours in public
  • Lines only on listed coins, each on its own main pool, so a pool made up for the occasion cannot price a line or fill the caps
  • One instant lever, the brake: it stops new lines and new pools, never existing lines, cancels or withdrawals
  • Source published on Sourcify from day one, so anyone can match the bytecode to the code

Until an external review is published, treat every line as beta: start with the minimum and size up only after you have watched one fill.

12

Launch

Product first. Then the coin. The curve opens only after all of these are public.

  1. 01Hook, vaults and executor live on mainnet with verified source
  2. 02At least 100 fills from at least 30 wallets that are not ours, in the Catch Log
  3. 03The open-source keeper published, plus at least 3 named outside keepers that have fired a line
  4. 04The house-keeper share shown live on the Reel Race page
  5. 05Docs: the contract list, the fee table, the risks, and the BuybackVault address the launch will use

Launch day

T-24h
The BuybackVault address and the launch wallet are posted
T-1h
Catch Log numbers: fills, wallets, keepers
T0
Launch. The creator-fee recipient is the BuybackVault, in the launch transaction; the dev buy is stated with its tx
T+1h
Pinned post: the address, and how to verify the recipient yourself
T+6h
The first round of catch cards from holders
T+24h
The first Weigh-In: creator fees claimed and burned

13

Roadmap

MVP · weeks 1–4 · now

  • Hook, Tackle Box and arbitrage, with fork tests on live Robinhood Chain pools
  • An internal review, the reference keeper and the arbitrage keeper
  • The app: Tackle Box, Cast, Catch Log, Reel Race; docs; share cards
  • A capped mainnet beta on graduated coins
  • Then the coin, once every launch gate is public

Growth · months 1–3

  • Every graduated coin supported, its pool made on demand
  • Tokenized stocks on Robinhood Chain
  • Ladders up to 16 rungs, and OCO
  • Reel Race season 1 with a real season pool
  • Web push alerts and an installable app
  • Open keepers, once triggers read a time-weighted price; keeper SDK

Scale · months 3–6

  • Limit buys: ETH resting under the price, same hook
  • Integrator SDK with the 30% share; first wallet partners
  • A launchpad option: take-profit at graduation
  • An external review; beta caps raised in published steps
  • The Weigh-In dashboard: every burn since launch

Ecosystem · months 6–12

  • Public order-flow data: where Robinhood Chain sells, by price level
  • Keeper guilds: shared infra, shared standings
  • Strategy lines: rules made of several lines
  • Other Uniswap v4 chains only once Robinhood Chain is served

14

Risks

Read this part before the rest of the page convinces you.

  • New hook code, not yet externally audited. Bounded by beta caps, the brake, a bounty and no upgrade path
  • No outside arbitrage on a pool. Our keeper fills the gap; every fill's time is in the Catch Log
  • Stop-loss on a thin coin. The 30-second hold and the minOut floor help; a fast crash can still sell low
  • The launchpad could build native exits. We list graduated coins and tokenized stocks, with one vault
  • Few keepers in the beta. Angler's own keeper fires every stop-loss until outside keepers join; an owner can always arm and fire its own line
  • Launchpad factory owners hold a timelocked override over creator-fee routing. Stated in the docs, watched daily
  • Sandwiches on fires. One swap shape, minOut, and small size caps during the beta

15

FAQ

Does Angler ever hold my tokens?

No. They stay with your own Tackle Box, a contract only your wallet controls: a take-profit's coins rest as liquidity in the coin's Angler pool on your box's behalf, and only your box can take them out. No admin key can move them, and cancel and withdraw can never be paused.

The price touched my take-profit and fell back. Did it fill?

A take-profit range is narrow, about 0.1% wide. The hook books a fill when a swap carries the price all the way through it. A price that only touches the range has not filled the line yet; it keeps resting until a swap crosses the rest.

Why does a stop-loss wait 30 seconds?

So that a one-block wick cannot sell you: someone would have to hold the price under your floor through real trading for the whole hold. The cost is honest: in a fast crash the fire comes later and can sell below the floor; minOut caps how far.

What if no arbitrage shows up for a coin?

Angler's own keeper closes the gap within seconds and keeps the spread, so take-profits still fill. Every fill lands in the Catch Log with its time.

Do I need $ANGLER to use Angler?

No. Take-profit, stop-loss and trailing stop all work at the base tier with a 0.30% fill fee. Holding lowers the fee and raises the number of active lines. It never buys priority.

Can I run a keeper?

Not yet with any wallet. A spot price can be moved and put back inside one transaction, so in the beta only keepers the Harbor names may arm or fire a line, and never from inside a swap. Angler's own keeper does the work; an outside keeper is named after 24 hours in public, then runs the same open-source keeper, and the tip goes to whoever lands fire() first. Arbitrage of the Angler pools stays open to anyone. Keepers open to every wallet once triggers read a time-weighted price.

Which coins are supported?

The coins Angler lists, each with its main Uniswap v4 ETH pool as its venue: lines read their price there and stop-losses sell there. Listing a new coin takes one transaction; changing a listed coin's pool waits 24 hours in public, and lines already cast keep the pool they were cast with. Tokenized stocks follow in the growth phase.

What does casting a line cost?

No Angler fee at all. You pay the network fee for the transaction, about one to two cents on Robinhood Chain.

Can the contracts be upgraded?

No. No contract has a proxy or an upgrade path, and the hook and the Tackle Boxes have no admin. One owner key sits on the Harbor: caps, the new-pools switch, the fee-tier source, new keepers and a listed coin's pool change only after 24 hours in public; a new coin can be listed at once, and the brake stops new lines at once. None of it touches existing lines, cancels or withdrawals.

16

Addresses and links

Site
useangler.xyz
Official account
@useangler
Code
github.com/useangler, opens with the contracts
App
app.useangler.xyz, opens with the beta
$ANGLER
TBA: posted here at launch
Contracts
TBA: every address listed here before the beta, with its source on Sourcify

Anyone can deploy a coin called Angler. Trust only the address on this page, at @useangler and in the docs.

Community project. Not affiliated with, endorsed by or sponsored by Robinhood, Uniswap Labs, any launchpad, wallet or exchange. $ANGLER is a utility token for the Angler protocol: fee tiers, line capacity and new line types. It is not an investment product and carries no claim on protocol revenue. Keeper payouts depend on real fills and can be zero in a quiet season. Angler is non-custodial software. Take-profit fills depend on market activity and arbitrage; stop-losses depend on keepers and on liquidity when they fire, and can sell below the floor in a fast crash. Smart contracts can contain bugs, and this beta has not had an external audit yet. Start small, and verify every contract address in the docs before you sign anything. Nothing on this site is financial advice.