Introducing Fathom & $FATHOM
The liquidity layer for Robinhood Chain.
Contract Address: 0x4d0873e333b48262b4f8ba523e0783cfcf53a553
Robinhood Chain brought tokenized stocks, memes and majors onto the same network. What it didn't have was one place where all of them trade on liquidity built for how they actually move.
Trade stocks, memes and majors through one router - dynamic-fee AMMs, liquidity bins and oracle-guarded stock pools.
That's Fathom.
Live now: https://t.co/GW8H82uN0J
Full introduction below:
New to providing liquidity? On Fathom there are three ways to do it, depending on how hands-on you want to be.
1. Active: DLMM pools
You pick the price range and the shape of your liquidity. Spot spreads it evenly, Curve stacks it around the current price, and Bid-Ask puts more at the edges to buy the dips and sell the rips. You earn swap fees while the price trades inside your bins, and the fee goes up when the market gets busy. Your position is an NFT, and you manage it yourself.
2. Passive: vaults
Same DLMM pools, but the vault watches the range for you. Deposit both tokens, or just one through the zap. When the price moves too far, the vault re-centres itself without selling anything. The first one is WETH/USDG: 41 bins, about ±2% around the price.
3. Launch: DAMM pools
Made for new tokens. The fee follows volatility, and a pool can start with an anti-snipe fee that fades back to normal within the first hour, so the busiest minutes after a launch pay the LPs instead of the snipers.
Whichever you pick, 80% of every swap fee goes to the LPs, and you can withdraw at any time, even if the protocol is paused.
One honest note: LPing isn't free money. When the price moves, your mix of tokens moves with it, and the fees are what make up for that.
Quick puzzle. A vault holds 10 WETH and 27,000 USDG. You zap in 1.5 ETH. How much of it should be swapped to USDG?
The instinct says half. The real answer depends on two things: the vault's mix, and what the route actually pays.
swap = amount × USDG in vault / (USDG in vault + WETH in vault × rate)
With a route paying ~2,686 USDG per ETH:
1.5 × 27,000 / (27,000 + 10 × 2,686) = 0.7519 ETH
So the zap swaps 50.1% of the ETH into 2,019.91 USDG, keeps 0.7481 ETH and deposits both. Those are the numbers the app showed on our mainnet fork. In a 2 ETH run on the same fork, the shares landed exactly as previewed.
Two details make it land exactly:
• The app quotes once more at the exact swap size, since a bigger swap gets a slightly worse rate.
• It routes around the vault's own pair. A swap there would shift the very mix it's aiming for.
Anything that doesn't fit comes back to you, as ETH if you paid in ETH. One transaction.
https://t.co/GW8H82uN0J → Vaults → One token (zap)
We want to clarify the comments about Fathom’s code.
First, we would like to state that our contracts were published on GitHub precisely so that anyone could review them.
Our contract was not created entirely by AI; some parts were adapted from other projects on Robinhood Chain, including Hookdaq’s buyback logic and a Chainlink price-feed interface.
Other sections can be found, in their entirety, in various contracts on the blockchain, ranging from well-known to lesser-known projects.
If our code had been created entirely by AI, or if we had intended to hide it, we would not have made it publicly available.
This misleading narrative is not based on a contract malfunction or a protocol error, but on our use of code from other projects, a legitimate practice when working with open-source code.
Reusing open-source code is a common development practice.
They learned how to make beautiful projects, but didn't keep an eye on Claude while he was transferring code from one project to another. https://t.co/zseiXvQUXE
When we started building Fathom a few months ago, we kept asking ourselves one thing: where is liquidity supposed to live on Robinhood Chain?
On Solana the answer is Meteora. LPs go there because they get to decide how their liquidity behaves, and traders go there because that's where the depth is. Robinhood Chain didn't have that yet, so that's what we set out to build.
Most of it is live now. You can LP in DLMM pools and shape your liquidity as Spot, Curve or Bid-Ask, or put it in a vault and let it rebalance itself (the first one, WETH/USDG, is open). New tokens can launch into DAMM pools whose fees move with volatility, and tokenized stocks get their own pools priced against Chainlink, with fees that change once the US market closes. One router ties it together with public Uniswap v4 pools and Pons launches, and every Pons token page has a button to open a Fathom pool for it.
The part we care about most is where the fees go. 20% of every swap fee in our pools gets converted to ETH and used to buy back and burn $FATHOM, and anyone can trigger that. We ran the whole thing on-chain earlier today, trade to burn, and posted every transaction.
It's still early. All 14 contracts are open source and verified, so you don't have to take our word for any of this. More pairs, more vaults and partner campaigns are coming.
Visit us: https://t.co/GW8H82vkQh
More information regarding everything and our plans is coming, follow the X account to stay informed.
Another update is here! Zap is on mainnet: deposit into a Fathom vault with one token.
A vault takes both tokens in its current mix. Most people hold one. Now one is enough:
→ Pay with just ETH, WETH or USDG. The zap works out the split, swaps the right share through the Fathom Router and deposits both into the vault. One transaction.
→ Anything the vault doesn't take comes straight back to you, as ETH if you paid in ETH.
→ On the way out, pick one token and the whole withdrawal arrives in it.
The one-token option opens in a vault as soon as it has its first deposit. That first one sets the vault's mix, so it needs both tokens once.
For the devs out there:
→ New contract: DlmmVaultZap. No owner, holds nothing between transactions, and only accepts vaults created by the Fathom vault factory.
→ The app quotes every route across Fathom pools and public Uniswap v4 pools and solves the split: swap s = A · tO / (tO + tT · rate), refined once at the swap's own size, so the kept part and the swap output match the vault's mix.
→ The vault's own pair is left out of the route, so the swap can't shift the vault's mix between the quote and the deposit.
→ The contract checks what actually arrives from the route, and enforces your minimum swap output, minimum shares and deadline. It only ever pulls tokens from the caller.
→ Native ETH works end to end, including routes that start or end in native ETH: wrapped on the way in, unwrapped on the way out.
→ On a mainnet fork, 2 ETH zapped in through the public ETH/USDG v4 pool landed exactly the previewed shares, and a full zap out returned the quoted 5.8616 ETH. 7 new tests, including a 1,000-run fuzz test that the zap never keeps anything.
Hey, sorry if it felt like we ignored you, that's never the intention! We did a short update to our data service earlier today, so info on the site may have lagged for a while, but everything is updating normally again now. If you still see something not updating, could you DM us which page it is, what exactly doesn't update and maybe a screenshot? Then we can find the bug and fix it as fast as possible 👍 Thanks.
We completed the end-to-end demonstration requested by @WatchersLabs. The video is long, so here is a step-by-step account of what we did, with on-chain transactions for each stage.
1. Starting without a Fathom pool
We began with no Fathom pool for the pair. The Swap interface selected Uniswap v4 by default. (Begin of video)
2. Adding liquidity
We created and funded a WETH/USDG DLMM pool with 0.25 WETH and 710 USDG.
Pool transaction: https://t.co/L3EBNYLMWS
3. Trading through the new pool
When we returned to Swap, the interface selected DLMM by default. We then made a 0.02 ETH trade, generating protocol fees.
Swap txhash:
https://t.co/ngoS4h917O
4. Converting fees and executing the buyback
In the Protocol tab, anyone can initiate the fee conversions and call the buyback. We converted the collected USDG and WETH, then executed the $FATHOM buyback.
USDG conversion:
https://t.co/0aICvZhybb
WETH conversion:
https://t.co/hGtmJN725b
Buyback:
https://t.co/84yPVd8gY9
The video shows the full sequence, from funding the pool to routing a trade, collecting and converting fees, and completing the buyback.
We would appreciate an updated review from @WatchersLabs based on the full demonstration and on-chain transactions above.
Thank you for your time and the work you’ve put into checking Fathom.
Fathom has a real build and an independently confirmed router trade.
The next proof should be funded custom pools, successful DAMM/DLMM/stock trades, and receipts connecting their protocol fees to a completed FATHOM buyback. Until then, describing the whole liquidity layer and token flywheel as operational would go beyond what we verified.
Thanks a lot! We might start posting from our own X accounts at some point too, but for now it's easier to keep all the communication on the official account so everything's in one place. Which is also pretty understandable during this early on the project
and yeah as for the inspiration, when we started building a few months ago, we saw a lot of potential. Built the right way, Fathom could become what Meteora is for Solana, just on Robinhood Chain so that's what we're going for basically 👌
GitHub is up to date too: DlmmVault and DlmmVaultFactory are in our contracts repo with their tests, the deploy script and the docs, verified on Blockscout and Sourcify.
https://t.co/v97do6FOop
Hey everyone, another update from the product developers here: Fathom Vaults are live. Auto-rebalancing DLMM liquidity.
On a DLMM the price moves and your range doesn't. Step away for a day, and your liquidity can end up outside the range, earning nothing.
A vault keeps it where the price is:
→ Deposit once. The first vault is WETH/USDG: Spot shape, 41 bins, ±2% around the price.
→ When the price drifts past half the range and stays there, our keeper pulls the position and lays it out again around the new price.
→ No swaps. The vault keeps the tokens it had, just in new bins.
→ No vault fee. Swap fees stay in the bins and compound for depositors.
→ Withdraw anytime, even while the protocol is paused.
And as usual, for the devs:
→ New contracts: DlmmVault and DlmmVaultFactory. Vault shares are a plain ERC-20.
→ Deposits take both tokens in the vault's current mix and go into every bin in the same proportion the vault already holds. Each deposit is an exact slice of the vault, so share pricing needs no oracle, and moving the pool price before someone deposits doesn't dilute holders.
→ Rebalance is burn-all then mint-around-active: X at and above the active bin, Y at and below it. The active bin only takes its own X:Y mix, so there is no composition fee. It can only run once the price is more than half the range from the centre, at most every 5 minutes, and inside a slippage bound on the active bin.
→ The keeper waits until the drift has held for about 2 minutes before it acts. Holding a pushed price that long means trading against every arbitrageur in between.
→ On a mainnet fork, the keeper rebalanced the WETH/USDG vault 13 bins after a price move, in one transaction of 2.4M gas.
Put your liquidity in a vault and let it follow the price.
Mostly by building and shipping, honestly! We've also got campaigns planned with our partners, more on those soon. And we're working on more flywheel mechanics that tie $FATHOM into the whole ecosystem, so every bit of growth on Fathom feeds back into $FATHOM and helps us take a bigger share of the market. Lots coming.
Re-centring liquidity usually means swapping to get the right mix. And a swap you can see coming is a swap someone else can trade against.
So our vaults don't swap.
When the price drifts more than half the range away, the keeper waits about two minutes to make sure the move is real. Then it pulls every bin and lays the same tokens out again around the new price. One token goes at and above the price, the other at and below it. Nothing is sold, and a vault never rebalances more than once every five minutes.
The vault keeps the tokens it had and the fees it earned, and it's back in range. You can withdraw at any point, even while the protocol is paused.
https://t.co/GW8H82vkQh → Vaults
Hey everyone, another update from the product developers here: Fathom Vaults are live. Auto-rebalancing DLMM liquidity.
On a DLMM the price moves and your range doesn't. Step away for a day, and your liquidity can end up outside the range, earning nothing.
A vault keeps it where the price is:
→ Deposit once. The first vault is WETH/USDG: Spot shape, 41 bins, ±2% around the price.
→ When the price drifts past half the range and stays there, our keeper pulls the position and lays it out again around the new price.
→ No swaps. The vault keeps the tokens it had, just in new bins.
→ No vault fee. Swap fees stay in the bins and compound for depositors.
→ Withdraw anytime, even while the protocol is paused.
And as usual, for the devs:
→ New contracts: DlmmVault and DlmmVaultFactory. Vault shares are a plain ERC-20.
→ Deposits take both tokens in the vault's current mix and go into every bin in the same proportion the vault already holds. Each deposit is an exact slice of the vault, so share pricing needs no oracle, and moving the pool price before someone deposits doesn't dilute holders.
→ Rebalance is burn-all then mint-around-active: X at and above the active bin, Y at and below it. The active bin only takes its own X:Y mix, so there is no composition fee. It can only run once the price is more than half the range from the centre, at most every 5 minutes, and inside a slippage bound on the active bin.
→ The keeper waits until the drift has held for about 2 minutes before it acts. Holding a pushed price that long means trading against every arbitrageur in between.
→ On a mainnet fork, the keeper rebalanced the WETH/USDG vault 13 bins after a price move, in one transaction of 2.4M gas.
Put your liquidity in a vault and let it follow the price.
A DLMM pair's bin step is fixed for life. It's the price gap between two bins, and it also sets the pair's base fee. Our cheat sheet:
Tight · 1–5 bps
Base fee 2–5 bps. For pairs that barely move. Every dollar sits right at the price and earns the most, but anything volatile walks out of your range fast.
Middle · 10–25 bps
Base fee 10–20 bps. ETH/USDG and the big stocks. Our first vault runs 41 bins at step 10: ±2% around the price.
Wide · 50–100 bps
Base fee 40–80 bps. Pons tokens and anything that can move 20% in an hour. The "Open a pool" button on every Pons token page defaults to 100.
On top of the base fee, every pair adds a volatility fee when the market gets busy, up to about 1%.
One pair per token pair and bin step, so look before you create a new one.
https://t.co/GW8H82vkQh → Pools
Another developer update is here: every Pons token page now opens a Fathom pool.
Launched a token on Pons? It already trades on Fathom through our router, on the bonding curve or in its graduated pool. Now it can also get a Fathom pool of its own, in one click.
On any Pons token page you'll find a new Fathom pools card:
→ Open a DAMM pool: dynamic fees, a 1% base fee, and an anti-snipe launch fee that starts at 20% and decays to the base fee over 10 minutes. Snipers pay the pool.
→ Open a DLMM pool: bin step 100, so bins sit 1% apart, and you shape your liquidity with Spot, Curve or Bid-Ask.
→ Fathom pools that already exist for the token are listed right on the card, so liquidity goes where it's needed instead of into a duplicate.
The form comes prefilled: the pair, the fee setup, and the starting price, taken from the live Pons pool or bonding curve the moment you open it. You can change anything before you sign.
Also, as usual for the devs:
→ No new contracts. It's DammHook.createPool and DlmmFactory.createPair, the same permissionless calls as on the Pools page, with the parameters filled in for you.
→ The live Pons price is converted into the pool's sqrtPriceX96 (DAMM) or active bin id (DLMM). On a mainnet fork, a DAMM pool created this way started at exactly the Pons price, and the DLMM pair landed in the bin just below it, 0.14% off and inside one 1% bin.
→ It works for graduated tokens and for tokens still on the curve. We checked that curve-stage Pons tokens move freely between wallets, so a pool can hold them before graduation.
→ If a pool with the same setup already exists, the form points you to it instead.
Anyone can open one. More liquidity for holders, and fees for the LPs who provide it.
DAMM vs DLMM: two ways to LP on Fathom
We get asked this a lot, so here's the answer we'd give a friend over coffee.
Both pool types do the same basic job. You deposit two tokens, traders swap against them, and you earn fees. What's different is how your liquidity is spread across prices, and how much you want to think about it.
DAMM: the ramp
DAMM is a Uniswap v4 pool with our hook on top. Your liquidity sits on one smooth curve. By default it covers every possible price (full range), so it's always in range and always earning. You deposit and go live your life.
The "dynamic" part is the fee:
• The pool creator picks a base fee between 0.05% and 1%.
• When the price starts moving fast, a volatility surcharge is added on top. It fades back to zero about ten minutes after things calm down. The total is capped at 5%.
• New pools can turn on an anti-snipe schedule. The fee starts high (up to 50%) and slides down to the base fee over up to an hour. The bots that buy in the first block end up paying LPs for it.
The catch: full range spreads your capital across prices that may never trade, so each dollar earns less than it would in a tight position. Custom ranges are there if you want them.
DLMM: the staircase
DLMM is a Liquidity Book–style design we wrote from scratch. Instead of one curve, price is cut into bins, like the steps of a staircase. Each step has a fixed size, the bin step, anywhere from 0.01% to 1%.
A few things follow from that:
• Only one bin trades at a time, and inside it a swap has zero price impact. The price only moves when a bin runs dry and the next one takes over.
• You choose exactly which bins get your liquidity and how much each gets. Spot spreads it evenly, Curve piles it up around the current price, and Bid-Ask weights the edges so you buy dips and sell rips as the price moves through.
• Bins above the price hold only one token and bins below hold only the other. A DLMM position works a lot like a ladder of limit orders that earn fees while they fill.
The base fee scales with the bin step (a 10 bps step pays 0.1%), and a variable fee rises with volatility.
The catch: if the price walks out of your range, you stop earning and you're holding 100% of one token until it comes back or you move your bins. That's the cost of the extra efficiency. If you don't want to babysit it, our DLMM vaults do the rebalancing for you: a keeper re-centres the range once the price drifts far enough.
So which one?
• Launching a token, or LPing something new and wild → DAMM. Set a fee, switch on anti-snipe, go full range, done.
• LPing a pair you know, like WETH/USDG, and you want every dollar working near the current price → DLMM.
• You want DLMM efficiency without watching charts → a DLMM vault.
Both are permissionless, so anyone can open a pool. Both pay out the same way: 80% of every swap fee goes to LPs and 20% goes to the protocol, which buys back and burns $FATHOM. Both sit behind the same Router, so traders never have to care which kind of pool they're hitting.
For the devs reading: DAMM sets its fee per swap through the v4 dynamic-fee override, and the protocol share is taken as a hook delta. On the DLMM side, adding an unbalanced mix to the active bin pays a composition fee, so mint-then-burn can't be used as a free swap.
Pick your pool at https://t.co/GW8H82uN0J
Dev Update: Liquidity Shapes are live on Fathom.
Until now, every DLMM deposit on Fathom was spread evenly across your range. That works, but it's only one view of the market. Now you choose the shape.
→ Spot: even across your range. The all-rounder.
→ Curve: concentrated around the current price. The most fees while the price stays close.
→ Bid-Ask: weighted to the edges of your range. It buys the dips and sells the rips as the price moves through.
Pick a shape, set how many bins each side (3 to 35), and the chart shows exactly where your liquidity will land, drawn over the pool's existing liquidity, before you sign anything. Single-sided deposits work with every shape too.
Also, for the devs out there:
→ No new contracts. https://t.co/TSsi9bQrEC has always accepted a per-bin distribution. The app now computes that distribution for you instead of always sending a flat one.
→ Curve is a gaussian around the active bin, with σ at half your range. Bid-Ask is the same curve mirrored to the edges. Every bin in the range gets a non-zero share, so a mint never reverts on an empty bin.
→ On two-sided deposits, the active bin now takes half its weight from each side, so the shape holds across the whole range. Spot is now truly flat. Before, the active bin quietly got a double share.
→ Before shipping, we checked every shape and range width against the pair's minting rules, then minted real positions against the deployed contracts on a mainnet fork.
Same position NFT. Same pools. Withdrawals work exactly as before. You just get more control over where your liquidity works.
We're building Fathom into the Meteora of Robinhood Chain, one update at a time.
Try it: https://t.co/GW8H82vkQh → Pools → any DLMM pair
We’ve shown how to open and close a DLMM position with ETH and USDG.
Now, here’s Fathom’s stock liquidity in action.
In this example, we add liquidity to a tokenized stock DLMM pool on Robinhood Chain. Choose a pool, set the price range where you want your liquidity to be active, review the amounts, and confirm in your wallet.
Your position then appears under Positions, where you can monitor or withdraw it.
The transaction is on-chain for anyone to inspect: https://t.co/jEVprQj2ZR
Stocks deserve liquidity built for how they trade. That’s what we’re building at Fathom.
Why we believe Fathom can become for Robinhood Chain what Meteora became for Solana.
Meteora didn't win on Solana by being first. It won by building the right pools for how people actually trade: bins for fast-moving tokens, fees that adjust to the market, and tools that let new tokens launch without being drained in the first block. As Solana grew, it became one of the places where the chain's liquidity lives.
We see the same opening on Robinhood Chain. Here's why we're building for it.
1. The chain is early
Every major chain ends up with a core liquidity layer. On Robinhood Chain, that layer is still being decided. The protocol that's already live, already useful and still shipping when the activity arrives is the one that grows with the chain.
2. The product is already here
This isn't a roadmap. DLMM pools with bins. DAMM pools with dynamic fees and anti-snipe launches. Stock pools. A router that connects all of it, plus Pons bonding curves and public Uniswap v4 pools, in a single swap. It's live today.
3. This chain has something Solana didn't start with
Robinhood Chain is built around tokenized stocks. Stocks need pools that know when the market is closed and stay locked to the real price. We built exactly that. No memecoin DEX was designed for this problem, and we think it's one of the biggest opportunities on this chain.
4. Distribution from day one
More than 9,000 graduated Pons tokens are tradable through Fathom right now, along with the tokens still on their curves. We didn't wait for projects to come to us. We plugged into where the activity already is.
5. Built to earn trust
No proxy contracts. Withdrawals that can never be paused. Every contract open source. Liquidity only comes to a protocol people trust, and we'd rather earn that with code than with promises.
6. Aligned with usage
20% of every swap fee goes to buying back and burning $FATHOM. If Fathom grows, that growth flows back to the token through real volume, not hype.
Will it happen overnight? No. It didn't for Meteora either. Liquidity is built pool by pool, trader by trader, LP by LP.
But the chain is early, the foundation is live, and we know exactly what we're building toward.
https://t.co/GW8H82vkQh
Here's something you should never have to think about: where the liquidity is.
On Robinhood Chain, liquidity for a token can sit in many places. A DLMM pool. A dynamic-fee pool. A stock pool. A Pons bonding curve, if the token hasn't graduated yet. A plain Uniswap v4 pool someone else created.
Nobody should have to check all of that before every trade. So we built the Fathom router to do it for you.
When you swap on Fathom, the router can go through:
→ DLMM pools
→ DAMM pools
→ Stock pools
→ Pons bonding curves
→ Public Uniswap v4 pools, not just ours
→ ETH ↔ WETH wrapping, automatically
It can chain up to three swaps in one transaction. Say you hold ETH and want a token that only trades against USDG. The router goes ETH �� USDG → token, and you sign once.
A few things we were strict about:
→ The router takes 0% on top. You only pay the pools' own fees.
→ You set a minimum output. If you'd get less, the whole trade reverts.
→ No partial fills. Either your full swap goes through, or nothing does.
One box. One signature. Every venue on the chain.
https://t.co/rQBZVzTeNF