Liquidity in bins, not on a curve.
Ilyris is a bin liquidity engine on Robinhood Chain. Deposits sit in discrete price bins, so a swap that stays inside the active bin fills at one price, with zero slippage. The market runs around the clock, and nothing in the swap path calls an oracle.
01 · Pools
Live pools
One pool per pair per bin step, deployed from the factory. The pair and bin step are fixed at creation; every other figure is read from the chain when the page loads.
Reading chain 4663…
| Pool | Bin step | Base fee | Liquidity | Active price | |
|---|---|---|---|---|---|
| WETH/USDG0xeEc7…24D7 | 10 bps | — | — | — | Trade |
| WETH/YRIS0xcbb5…F8Ad | 250 bps | — | — | — | Trade |
Source: BinFactory and BinPoolLens, read over JSON-RPC. Liquidity is depositor-owned reserves valued in the pool's quote token; a dollar figure marked ≈ is routed through WETH/USDG rather than quoted directly. Two factory pools created at an inverted starting price are hidden here, in Pools and in the quote API: they hold nothing and should not be routed to.
02 · Mechanism
Why bins, not a curve
A constant-product AMM spreads every deposit across prices from zero to infinity, and most of it never trades. A bin engine holds the same capital only where trading happens.
Three ways to place a deposit, and a Hybrid that blends any two
Equal depth in every bin across the range. The neutral choice with no view on where price goes next.
Most depth at the active price, thinning outward. Earns the most while price stays close; most exposed if it leaves.
Depth at the edges, light in the middle. Buys into weakness and sells into strength as price crosses the range.
- 01
One price per bin
Bin
iholds reserves at exactly(1 + step / 10000)i. A swap that stays inside the active bin fills at that price; a larger swap crosses into the next populated bin and moves the price by one step. - 02
Fees stay with the bin
Swap fees accrue to the bin that filled the trade and are claimable per bin. The protocol takes 10% of the swap fee, a share of the fee and not of the trade; the rest belongs to the depositors in that bin.
- 03
Nothing external in the swap path
The market guard makes no external calls: no oracle, no calendar, no sequencer feed. No upstream failure can close a pool.
03 · Staking
Staking: deployed, not funded
FeeStaking is live on chain 4663. It takes YRIS and pays WETH from the protocol's share of swap fees, once a reward period is funded. No rewards have been funded so far, and unstaking has a 72h cooldown: staking today would lock YRIS for three days to earn nothing. Nothing on this page asks you to. The figures beside this are read from the contract.
- Contract
- 0x868a…7183
- You stake
- YRIS, the Ilyris token
- You earn
- WETH, per second, once a period is funded
- Total staked
- —
- Reward rate
- —
- Cooldown
- 72 hours from unstake to withdraw
Your own position and the funding history are at Stake, which reads the same contract.
04 · Contracts
Verified on Blockscout
Six contracts on Robinhood Chain, all source-verified. Each address links to its Blockscout page.
| Contract | Role | Address |
|---|---|---|
| BinFactoryDeploys one pool per pair per bin step | Deploys one pool per pair per bin step | 0x3Bf7…5C4D |
| BinPoolLensOne-call pool state and quotes | One-call pool state and quotes | 0x306d…9090 |
| BinPool WETH / USDGPool, 10 bps | Pool, 10 bps bin step | 0xeEc7…24D7 |
| BinPool WETH / YRISPool, 250 bps | Pool, 250 bps bin step | 0xcbb5…F8Ad |
| FeeStakingStake YRIS, earn WETH | Stake YRIS, earn WETH | 0x868a…7183 |
| YRISERC-20, the Ilyris token | ERC-20, the Ilyris token | 0xD6af…683E |
05 · Integrators
For routers and aggregators
Quote on-chain through the lens, or over HTTP if your pipeline prefers it. Both return the same number. A quote makes no external calls and does not consult the market guard, so it is deterministic for a block; a swap does consult it, so check tradable before routing.
On-chain 0x306d…9090
getPoolState(pool, radius)Tokens, decimals, bin step, base and total fee, active id and price, reserves over active ± radius, guard and owner. One call.getBins(pool, from, to)Every populated bin in the range with its price. Discovery for a router that has never seen the pool.quoteExactInWithGas(pool, xForY, amountIn)amountOut, fee, bins crossed and a gas hint. Rank routes with the hint; set the limit witheth_estimateGas.
HTTP ilyris-quote-api.ilyris.workers.dev
GET /health—GET /poolsEvery routable pool with its tokens, bin step, fee and guard.GET /quote?tokenIn&tokenOut&amountInamountIn in wei. Returns amountOut, feeAmount, binsCrossed, gasEstimate, tradable and the pool to call; 422 insufficient_liquidity when no pool can fill that size.
No API key. CORS open. Chain 4663 only. Rated for 100 requests per second per client. Field-level detail in the docs.
06 · Risk
What the operator key can do
The operator key owns the pools and the market guard. Stated plainly, so you can decide with it in view.
It can
- Pause swaps, and new deposits, through the market guard
- Change a pool's fee parameters
- Replace the market guard contract
It cannot
- Withdraw or move deposited principal
- Take fees already earned by depositors
- Change a pool's bin step or token pair
The contracts are unaudited. An audit is planned once the protocol is feature-complete; auditing it now would mean auditing something still changing. Deposit only what you can afford to lose.