Sounder Liquidity (@SounderLiq) header
Sounder Liquidity (@SounderLiq) profile picture

Every liquidity pool has a bottom. Cross-venue depth on Robinhood Chain, read straight from pool state. 0x4214e44c97865858d78e37d5d4ee3262acf30406

Joined September 2026
Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)Photo by Sounder Liquidity (@SounderLiq)
Major news: Sounder is going to audit. We've been quiet this week on purpose. Every page was polished, every contract page rewritten, so that what a reviewer opens is what a user opens. That work is done. Now the process starts. We are selecting the firms that will read the code: SounderExecutorV3, which holds the floor and the burn on every fill; SounderOrders, which escrows limit orders and lets anyone fill them; SounderLens, the reading on chain. Three contracts, source published, 21 tests against the real pool bytecode. Full scope, no shortcuts. Findings get fixed before anything else ships, and the report goes up in full next to the code it reviewed. We are building this to scale, and that means being reviewed before it does. sounderliq.app/contracts 0x4214e44c97865858d78e37d5d4ee3262acf30406
6
6
5
28
5,389
A note on the name, for those asking. V3 reaches: the venues the scoreboard named as the gap, with the same reading and the same floor. Each version kept the last. Nothing about how we measure changes; what changes is how far the order can go. nitter.cf/SounderLiq/status/2113…
We have a huge update to share: Sounder V3 is on its way. For three weeks the scoreboard has told us, every hour, exactly where the other routers beat us and why. We have been building against that list, not around it. Every venue on the chain, reached. The audit. The app.
1
3
461
We have a huge update to share: Sounder V3 is on its way. For three weeks the scoreboard has told us, every hour, exactly where the other routers beat us and why. We have been building against that list, not around it. Every venue on the chain, reached. The audit. The app.
3
1
2
7
1,075
6,480 orders in. The gap has names. Eight days of the scoreboard, both sides on chain, every hour. KyberSwap's route paid more on 3,299 orders, ParaSwap's on 2,590. We said we would keep the board whichever way it went, so here it is. What eight days showed: the reading held. Their quotes drifted up to 15 bps from what the chain actually paid; ours did not. What is missing is reach, and reach gets built. Every venue behind their edge is now named on the board, in the order we take it on: Elfomo, Ramses, two prop AMMs, hooked pools, an off-chain market maker. The board stays on while we close it. The rows we win will show up in the same table, measured the same way.
9
1
17
1,121
New in Sounder: the gap, explained. The scoreboard now says where the other routers' edge comes from. Every venue in their routes is counted, ranked by how often it sits in an order they paid more on, and marked by whether our router can reach it. Each row lists the venues their transaction went through. What it says: most of the gap is liquidity we cannot route through yet. Elfomo, two prop AMMs, Ramses, hooked Uniswap v4 pools, an off-chain market maker. Where they win on Uniswap alone, it is the split, and that one is ours to fix. The table is public because it is the order we are working through it.
2
1
14
888
Communication Statement: We’ve heard your feedback, and you’re right. Going forward, we’re increasing the frequency of our communications. Until now, our approach has been to build several updates over the course of one or two weeks and release them together. This allowed our engineering team to stay fully focused on development, ship, and then iterate based on feedback. However, we understand that periods of limited communication can create uncertainty and a sense of lacking transparency. From now on, smaller improvements, adjustments, and updates will be communicated as they happen, giving the community much greater visibility into our progress. Building the best possible product remains our priority, but strong communication with the community is just as essential. Thank you for the feedback. We’re listening and improving.
10
2
18
943
For those asking what we have been polishing and building. Three things, live today. The audit, in the open. sounderliq.app/audit is the full scope of the first independent review, published before the firm is chosen: the four contracts with their addresses, the six invariants that must always hold, what was done before handing it over, the budget set aside, and where the engagement stands. The report goes on the same page when it exists. Scoreboard and sign, in the terminal. Type scoreboard and every router on the chain is run beside ours, with today's tally. Type sign NVDA 25k and the reading is taken, sealed, signed by your wallet and kept at its own link, without leaving the prompt. The scoreboard, for agents. Any MCP client pointed at sounderliq.app/api/mcp reads the board and the day's tally before it sends an order. Next: the firm. 0x4214e44c97865858d78e37d5d4ee3262acf30406
1
2
13
558
You only get one first audit. Why we spent weeks polishing before booking it: an auditor's time is the scarce thing. Two weeks at $3,500 to $5,000 buys a fixed number of hours, and every hour spent on a naming slip, a missing comment or a test that mocks the chain is an hour not spent on the one bug that matters. Findings get counted, not weighed: forty lows read worse than two mediums. So we cleared the noise ourselves, fixed the scope at six contracts and 1,250 lines, and named every external call. What remains for the reviewer is the real list. Why the first result is the one that counts: it becomes the public record. The first report is the one every integrator, listing and counterparty reads, and a second audit fixes code but never replaces the first impression. It is also the contract people route money through: the executor holds nothing between transactions and enforces the floor on chain, and the audit is the independent confirmation of exactly that, or it is not. We will publish it in full. Findings, fixes, and what we chose to leave as is, with the reasons. Until then: new, and not audited yet. nitter.cf/SounderLiq/status/2107…
Audit update: Everything is ready. We have spent the last weeks polishing Sounder on the points third-party reviewers look at first. The scope is fixed: six contracts, about 1,250 lines. No owner, no admin, no upgrade path, and nothing held between transactions. The floor is enforced on chain by the contract itself. Every test runs against the chain's real bytecode, not mocks. Every external call is named and written down beside the code. The budget is chosen: between $3,500 and $5,000 for an independent review. Next step is picking the firm. Once the engagement is signed, the firm's own estimate is about two weeks to the report, which we will publish in full: findings, fixes, and what was left as is.
2
15
478
Audit update: Everything is ready. We have spent the last weeks polishing Sounder on the points third-party reviewers look at first. The scope is fixed: six contracts, about 1,250 lines. No owner, no admin, no upgrade path, and nothing held between transactions. The floor is enforced on chain by the contract itself. Every test runs against the chain's real bytecode, not mocks. Every external call is named and written down beside the code. The budget is chosen: between $3,500 and $5,000 for an independent review. Next step is picking the firm. Once the engagement is signed, the firm's own estimate is about two weeks to the report, which we will publish in full: findings, fixes, and what was left as is.
2
1
17
818
Update. Two new things on Sounder. The scoreboard. Every hour, twelve names at three sizes go through our executor and, identically, through KyberSwap and ParaSwap: their transaction built, run on chain, beside ours. What the chain paid on their route sits next to what it paid on ours. Yesterday: 432 orders, 12 boards, kept whichever way they went. sounderliq.app/scoreboard Signed readings. Sound a ticker, press sign, and your wallet signs the reading in plain words. Sounder seals the numbers before you sign, so nobody can publish a reading the instrument did not take. It lives at sounderliq.app/s/ and eight characters, for good.
5
2
15
837
Sounder on Android, in four steps. 1. Open sounderliq.app/app/sounder.a… on your phone. 4 MB, one permission: internet. 2. Tap the file and allow installs from your browser, once. Android asks because the build comes from us. 3. Open Sounder. Every screen is the live instrument, read from the chain at request time. Nothing is stored on the phone. 4. Read from anywhere. To sign a fill, open the same page inside your wallet's browser. The SDK underneath is one file with zero dependencies and no key: import it from sounderliq.app/sdk.mjs, call route, send the fill. The app calls it. So can a wallet, a bot or an agent.
3
13
586
Sign what you saw. Sound any ticker at your size, press sign, and your wallet signs the reading in plain words: the fill, the venue, the spread, the capacity, the block. Sounder seals the numbers before you sign them, so nobody can publish a reading the instrument did not take, and nobody can put your name on one you did not see. It lives at sounderliq.app/s/ and eight characters, with its own card, for good.
3
2
17
589
Gm! We put every router that quotes Robinhood Chain on a public scoreboard. Against us. Every hour, thirty-six orders. Each one is written and measured through our executor. Then the identical order goes to KyberSwap and ParaSwap, their transaction is built, and the chain runs that too. Same staging, same block. What the chain paid on their route sits beside what it paid on ours. Kept whichever way it goes, including the rows where they win. Today that is most of them, and the reasons are on the board. sounderliq.app/scoreboard
2
2
13
486
Quoted, estimated, measured. Three words that get used as one. They are not. Quoted: a price someone stored. True for somebody, at some size, at some point. You do not know which. Estimated: a number a quoter computed from a model of the pool. Close on a normal day. Wrong exactly when it matters: a hook, a thin tick, a stale index. Measured: the chain ran your order and reported what it paid, before you sent it. The same call the fill sends a second later. Every number on Sounder is the third kind, at a named block, with a floor the contract enforces.
1
3
14
480
The fee tier is not the cost. Same name, same size, same block. Seven pools fill NVDA at $25k. The 0.00% pool costs 36 bps. A 0.05% pool costs 6.6. The 0.35% pool costs 67. The fee is one term. Depth at your size is the rest, and it is the term a fee table never shows. Sounder ranks by what the chain actually pays, and the fee tier lands where it lands.
2
14
556
Update: venues NVDA 25k. One line in the terminal lists every pool on the chain that quotes a name, ranked by what it would pay at your size: venue and pair, fee tier, capacity before the wall, the fill, and the cost over spot. The pools that cannot take the size sit at the bottom marked wall. NVDA at $25k, block 74,317,512: 16 pools quote it, 9 fill it, Uniswap v3 wins at 6.6 bps. This is the reading behind every route the terminal writes, laid open so you can see why one pool won and the others did not.
16
421
Sounder, built for Android. The native app is compiled and running on a phone: the terminal, the swap card, holdings, every reading from the chain at request time. WalletConnect handles the signing, so your keys never touch us. 4 MB, one permission, internet. What sits underneath it is the part anyone can use today. The Sounder SDK: one file, zero dependencies, no key. sound, route, sell, fill, approvals, orders, depth. Typed, verified byte for byte against the contract, live at sounderliq.app/sdk.mjs. The app calls it; a wallet, a terminal, a bot or an agent can call it the same way and get the same measured fill and the same enforced floor. Android first, iOS next. The SDK is ready now.
4
5
1
21
781
Two pools read cheaper than the one we chose. Both paid less. NVDA, $25,000, block 73,052,896. A hooked v4 pool read 31.6 bps better and paid 35.5 bps worse. Another v4 pool read 76.6 better and paid 77.6 worse. A quoter sends you to exactly those pools. Sounder runs every candidate through the executor, takes what the chain actually pays, passes the others over and prints why. The fill it chose carries a floor of 110.670794 NVDA, enforced on chain. Against the average of the two, $136.03 kept. sounderliq.app/sounding?tick…
2
2
12
610
What broke this week, and what we did. First of a series. Our Uniswap v4 pool index was built on 7 September and never moved. This chain makes hundreds of pools an hour. Two weeks later our venue table showed v4 with 48 readable pools and 8 wins at $10k. The real numbers were 141 and 31. We found it rebuilding the registry: names plainly deep on v4 kept walling. Their pool keys were not on file, so to us the pools did not exist. The fix is an incremental refresh from the file's last block to the head, every key verified by hashing it back to its own id. 829,581 keys, zero gaps. A number that names its block can be checked. One that changes should be explained. sounderliq.app/venues
4
17
587
Six positions. Five sink. One does not. A price ticker multiplies your balance by the last trade and calls it your net worth. Try to sell, and the chain answers differently: most of a bag goes through, and one position meets a wall nothing on the chain absorbs in one fill. Sounder sounds your holdings before you find that out the expensive way. Paste any address, or connect a wallet, and every position is sold whole in simulation: what spot says, what the chain would actually pay, and the haircut between them. Nothing moves. The most careful wallet we measured loses 474 bps to that gap. The least careful, 2,664.
2
5
16
666
A Uniswap v4 pool has no address. It is a hash of its key: two currencies, a fee, a tick spacing, a hook. Nothing can be read until the key is known, and guessing fees fails on this chain, which uses over twelve thousand distinct ones. So we recover every key from the singleton's Initialize events, hash each one back to its own id to prove it, and read the pool's slots straight out of the singleton. 829,581 keys on file, every one verified. 32,893 pools traded in the last two million blocks; 15,239 carry a hook. A pool not in the file is not missing, it is new. The file is refreshed to the head, not rebuilt. Check sounderliq.app/docs
1
1
16
599