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:
Leaving a vault in one token includes a trade.
Fathom's zap-out flow first redeems the vault shares, then swaps the side you do not want through the router. The final amount must meet the minimum specified for the withdrawal. Both operations are part of one transaction, so a failed conversion or an unmet minimum reverts the combined action.
This also explains an important distinction: a direct withdrawal of the underlying pair and a one-token exit depend on different things. The latter needs an executable swap route as well as redeemable shares.
The convenience comes from combining the steps, with their conditions still intact.
Moving a Fathom DLMM position between wallets does not require unwinding every bin. The position is represented by an NFT, and transferring it moves control of the existing liquidity claim.
Underneath that single token are a pair address, a bin range and the position's shares in each bin. The underlying inventory continues to change as the pool trades. Its accrued fees remain part of the reserves represented by those shares.
The recipient receives the position as it stands, rather than a newly opened position at the transfer-time price. Owner authorization or an appropriate approval is then required to increase, reduce or close it.
That makes the NFT operationally significant: sending it is sending control of the liquidity, not just a collectible representing an old deposit.
An automatic vault still needs a transaction to move its liquidity.
Fathom separates the observer from the rules. The keeper watches the active bin and submits a rebalance when its conditions are met. The vault contract checks authorization, range drift, the minimum interval and the allowed movement since the keeper's reference point.
If the keeper is offline, unfunded or unable to submit, the position does not magically move. It remains exposed to its existing range until a permitted rebalance succeeds.
Automation reduces the need to manage each adjustment yourself. Its availability remains part of how the strategy operates.
There is also a useful boundary on the keeper itself: observing a price move does not grant permission to rebalance whenever it wants. The vault enforces its own conditions when the transaction arrives, including movement that occurred after the keeper prepared it.
A familiar ticker is convenient when reading a pool. When a transaction is assembled, Fathom uses the token's contract address to identify the asset and connect the route. Two contracts with the same symbol remain different tokens, with separate balances and pools.
This becomes especially relevant around new launches, where a name can spread faster than its provenance. Displaying metadata does not establish who issued the asset. The address is worth keeping alongside the name.
A swap quote of 1,000 units with a minimum output of 990 gives the transaction a precise condition: deliver at least 990, or revert.
Those are illustrative numbers, but the rule is exactly what Fathom's router enforces after completing the route. A wider tolerance permits a worse result; it does not improve the quote or create more liquidity.
The minimum matters because it becomes part of the instruction executed by the contract.
Another new feature & development update is here guys!
Limit orders are now live on Fathom DLMM.
The part we like most, from the dev side: there's no order book behind them. A limit order is just liquidity sitting in one bin.
Say ETH trades at 2,686 USDG and you want out at 2,713. You set that price, and the app puts your ETH into the one bin that sits at 2,713. Inside a bin the price is fixed, so when the market climbs through it, your ETH sells at exactly that price. And since it's liquidity, every swap that fills you also pays you the pool fee on the way through.
Once the price has crossed the whole bin, our keeper settles the order so it can't trade back if the price turns. Then you claim your USDG. You can cancel any time before that and take back whatever the bin holds for you.
Orders in the same bin are pooled into one position. ETH goes in and comes out natively, no wrapping step. There's no owner and no extra fee, and cancel and claim keep working even if the protocol is ever paused.
Try it on any DLMM pool: Pools → WETH/USDG → Limit order. The contract is verified and in our public repo next to the rest.
A pool can hold plenty of capital and still offer a poor quote for the trade in front of it.
In Fathom's DLMM design, liquidity sits at specific prices. A swap uses the available inventory in one bin, then moves to another when it needs more. Capital far from the current price contributes differently from capital the next trade can actually reach.
For an LP, that makes placement part of the position. For a trader, it makes a quote for the intended amount more useful than a headline liquidity total.
The practical question is how much can trade before the price meaningfully changes.
Adding liquidity on Fathom DLMM is free. There's one exception, and it protects the LPs.
Q: Where can a deposit cost a fee?
A: Only in the active bin, the one bin that holds both tokens. And only when your deposit's mix is different from the bin's.
Q: Why charge anything?
A: Because part of that deposit is really a swap. Withdraw straight away and you'd get back more of one token than you put in. Without a fee, deposit-then-withdraw would be a free swap against the LPs already in the bin.
Q: What does it cost?
A: The normal swap fee, only on the part that acts as a swap. It's the Liquidity Book v2.1 composition fee. It goes to the bin's existing LPs, minus the 20% protocol share. We cover it with a fuzz test.
Q: How do I avoid it?
A: Match the bin's mix, or deposit one-sided, away from the active bin. Our vaults match the mix on every rebalance, so they never pay it.
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