Content-addressedstorage,backedbyliquidity.
Every pool is a piece of content. Liquidity is the bond. A swap is pay & receive bytes.
Six primitives. One graph.
Git, IPFS and Uniswap accounting share a merkle tree at their core. Merkleswap stitches them through that shared shape — content addressing, with a market underneath.
Pool = storage cell
PoolKey detereministically derived from a CID. The address of the pool is the address of the data.
Liquidity = bond
Adding liquidity economically obligates the LP to store the content off-chain and respond to retrievals.
Retrieval = swap
payment_token → DATA_token → bytes. v4 hooks verify Proof of Retrievability inside beforeSwap.
Commit = pool
Each commit is its own pool with parent refs. Branches are named heads, forks split the bond.
Merge = ⨁ liquidity
Custom accounting hook joins liquidity from both parents pro-rata to weights.
Fork = ↯ history
New pool inherits history by reference but gets an independent collateral envelope.
Attach any ERC-20. See the chain breathe.
Paste a contract address. We connect through public mainnet RPCs, pull every standard ERC-20 read, and stream Transfer events on a 5-second loop. Supply is normalised to 1,000,000 units; everything else is raw on-chain truth.
- awaiting events…
- scanning Transfer events…
The protocol's pulse.
Live WebSocket feed of pool activity — pool openings, swaps, commits, and slash events. Your own actions surface here within seconds.
- waiting for events… make sure the API is up:
pnpm dev:api