A perp DEX with no funding cron
Sour is a perp DEX with no funding rate cron. It still has funding payments — funding is the mechanism that keeps a perpetual mark anchored to the spot index, and removing it would break the contract. What Sour removes is the eight-hour cadence and the off-chain keeper that runs it. Funding is computed inside every 1.8-second batch, oracle-anchored, settled atomically alongside fills.
What a funding rate is, briefly
A perpetual is a futures contract with no expiry. To prevent its mark price from drifting permanently away from the underlying spot index, the protocol periodically transfers a payment between longs and shorts. The sign and magnitude of that payment are a function of the basis — the difference between the perp mark and the spot index — and the size of the trader’s position.
When mark trades above index, longs pay shorts; when mark trades below index, shorts pay longs. Over time, the carry pressure pulls mark back toward index. This is not optional. A perp without funding is a different product — usually one with a hard expiry or an unbounded basis.
Why "cron" is a design smell
Most perp DEXes implement funding as a discrete event on a fixed schedule — typically every 8 hours, sometimes every hour. That cadence is a load-bearing artifact of last-decade infrastructure, not a property the trader actually wants:
- PREDICTABLE TIMESTAMPS BECOME MEVA funding cron at 00:00, 08:00, 16:00 UTC announces exactly when carry-sensitive flow will hit the book. Searchers and basis traders position around the print, extracting spread that should belong to LPs and counterparties.
- OFF-CHAIN KEEPERS ARE A LIABILITYMost cron implementations rely on a keeper bot that calls a `update_funding` instruction. That keeper is a centralization vector, an uptime liability, and a source of edge cases when the keeper misses a window or double-fires a payment.
- DISCRETE CADENCE CREATES CARRY ARBITRAGEWhen funding only settles every 8 hours, traders can open and close around the print to receive or avoid the payment. The protocol pays out a discrete coupon to a counterparty that took none of the corresponding risk. Continuous funding eliminates the coupon.
- CRON-WINDOW DRIFTBetween settlements, mark and index can diverge meaningfully. The cron snaps the basis at one instant and applies it for the entire window — a coarse approximation of the continuous-time process funding is meant to integrate.
How Sour does funding instead
Sour computes funding inside every 1.8-second slot as part of the same atomic batch that clears trades. The clearing program reads the oracle index, computes the per-slot funding accrual based on the current basis and open positions, and applies it to long and short balances in the same transaction that settles fills. There is no separate `update_funding` call, no keeper, no cadence. Funding is part of settlement.
In practice this is a continuous-time approximation: 1.8-second slots are short enough that the per-slot funding payment is small and the cumulative drift between mark and index stays tight. The integration is computed by the program from the same oracle the rest of the protocol depends on, with no additional trust surface.
Practical consequences for traders
- NO CRON WINDOW TO DODGEYou can open or close at any time of day. There is no 00:00 UTC print to plan around, no 7:55 UTC closeout to avoid a coupon, no 8:05 UTC reopen to skip one. Funding accrues smoothly as long as you hold.
- CARRY IS LINEAR IN HOLD TIMETwo traders who hold the same position for the same duration pay the same funding, regardless of whether their hold straddles a cron boundary. The product becomes much easier to model and price.
- NO KEEPER FAILURE MODESour does not have a class of bugs in which "funding stopped accruing because the keeper crashed." If the program is settling fills, it is settling funding.
Practical consequences for LPs
- CONTINUOUS YIELD ATTRIBUTIONLP NAV updates with every batch, including the funding flow component. Yield reporting can be exact rather than interpolated between cron prints.
- NO COUPON LEAKAGEClosing-around-the-cron strategies that previously bled basis from the LP are not expressible against Sour, because there is no instant in time at which a discrete coupon is paid.
- FUNDING IS ATOMIC WITH FEESThe flat 3 bps fee per fill (100% to LP) and the per-slot funding settle in the same transaction. There is no inconsistency window where one has been applied and the other has not.
Reference
- FUNDING CADENCE
- Every 1.8s slot, inline with batch clearing
- FUNDING SOURCE
- Oracle-anchored basis (mark vs spot index)
- KEEPER REQUIREMENT
- None
- OFF-CHAIN CRON
- None
- FEE
- 3 bps per fill, 100% to LP vault
- PROGRAM ID
- souryQgnM1xiNuGcmVYLPGT3MKqnGN8QTqP8zk8eape
- SOURCE
- github.com/GageBachik/sour
Funding is a feature. The cron is the bug.