Automatic dollar-cost-averaging into tokenized stocks on Robinhood Chain. You set the plan, keepers run it, and an immutable contract makes sure it can only ever move you along your own plan — or back to your wallet. Non-custodial. No admin key. Withdraw anytime.
┌─ PLAN ───────────────────────────────────────── SIMULATED ─┐ │ │ │ AAPLx │ ●···●···●···●··· │ $50 / 7d │ │ NVDAx │ ·●··●··●··●··●·· │ $20 / 3d │ │ SPYx │ ·····●·······●·· │ $100 / 14d │ │ │ │ VAULT │ ████████████░░░░ │ 612.40 USDG │ │ NEXT │ ▸ AAPLx in 2d 04h [ run job ] │ │ │ └─ chain 4663 · block —— · no admin · no rug ────────────────┘
waiting for the first beat…
Buy a little, regularly, ignore the noise. The maths has never been the hard part — showing up every single week is, including the weeks when everything is red.
The usual fix is to hand the job to someone who holds your money, sets the rules, and takes a cut. Crypto's version is often worse: an admin key behind a vault, and a promise.
CADENCE removes the promise. Your USDG sits in your own vault. A plan says what to buy and how often. Anyone can trigger a due plan and earn a small capped fee — and the contract rejects anything that isn't exactly your plan, at a price the chain's own feed agrees with.
“Buy $50 of AAPLx every 7 days.” Any supported asset, any interval of an hour or more. The plan is bound to your address and nobody else's.
Deposit USDG. It stays yours — withdraw the whole balance whenever you like. No lockup, no notice period, no unstaking queue.
When a plan comes due, any wallet can execute it and earn a small bounty you set yourself, capped at 1% of the buy. No allowlist, no staking, no application.
The fill must match your plan and clear a minimum derived from the chain's official Chainlink feed. Anything else reverts. The bought asset goes straight to your wallet.
On your rhythm, whether or not you are paying attention. A late keeper cannot bend the schedule — fills stay on the plan's original grid.
A keeper supplies nothing but your address and a plan number. The asset, the size and the timing all come from the plan you wrote. They cannot invent a trade.
Every fill is measured against the chain's official price feed, with staleness and positivity checks. And the contract measures what your balance actually received — not what the router claims it delivered.
Withdrawals pay you, instantly. The only other outflow is the capped bounty, released only on a valid fill. There is no third path in the code — no admin, no upgrade, no drain.
Nothing here is deployed yet, so there is no address to check and no fills to show. What does exist is a contract that has been run against the real chain. These are the numbers from that run, not projections.
┌─ TEST RUN ────────────────────────────────── REPRODUCIBLE ─┐ │ │ │ unit & fuzz tests ··································· 22 │ │ invariants ··········································· 5 │ │ fuzzed calls ···································· 16,384 │ │ fork tests vs mainnet ································ 5 │ │ mutations caught ································· 3 / 3 │ │ │ │ fill vs oracle ··································· 0.21% │ │ keeper exposure, capped ························ 196 bps │ │ │ └─ forge test ───────────────────────────────────────────────┘
On a fork of Robinhood Chain mainnet, a $50 plan filled 0.15715 AAPLx at a live oracle price of $317.49 — 0.21% from the feed, through a real Uniswap v3 pool, against real 6-decimal USDG and the live Chainlink feed. The invariants were mutation-tested: three deliberately broken versions of the contract were checked to make sure they go red.
┌─ VERIFIED ON-CHAIN ────────────────────────────────────────┐ │ │ │ USDG 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 │ │ AAPLx 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 │ │ price feed 0x6B22A786bAa607d76728168703a39Ea9C99f2cD0 │ │ swap router 0xCaf681a66D020601342297493863E78C959E5cb2 │ │ │ │ Cadence.sol not deployed — pending audit │ │ │ └────────────────────────────────────────────────────────────┘
The pitch was that a keeper can never take more than 1% of a buy. That was true, and it was also beside the point.
A keeper chooses when a plan runs. The only price constraint is the slippage tolerance — so whatever that band allows is what a hostile keeper can keep. Unlike the bounty, nothing else capped it. We measured the exposure at 867 basis points against a 100 basis point bounty ceiling. Nearly nine times more value was reachable through the door nobody was watching.
The ceiling is now 2% instead of 10%, chosen from measurements rather than taste: real fills land 21 bps from the oracle, pool fees run 5–100 bps, and Chainlink's deviation threshold is 50 bps. Residual exposure measures 196 bps, and a test fails if that ceiling ever moves without a decision.
We did not go tighter, because a fill that cannot clear the band simply does not happen — and a missed interval is never caught up. Too tight a ceiling doesn't cost you slippage; it quietly stops you accumulating, which for a DCA product is the worse failure.
Whether 2% suits the thinner tokenized stocks, not just AAPLx — and whether a cumulative per-plan slippage budget would beat a per-fill bound. Both are written up for auditors alongside five other known weaknesses, including the ones that make us look bad.
The contract is written, tested against the live chain, and documented for audit. It is not deployed, and it should not be until someone independent has read it. It is immutable — there is no patch, no pause, and no second chance.
A token comes after that, not before. Fair launch, no pre-mine, no allocation carved out of anyone's rhythm. It will never gate the core DCA, and it will never promise a yield.
┌─ STATUS ───────────────────────────────────────────────────┐ │ │ │ contract written & tested [done] │ │ fork-tested on mainnet [done] │ │ security review published [done] │ │ public repository [next] │ │ independent audit [next] │ │ deployment [ ..] │ │ $CADENCE fair launch [ ..] │ │ │ └────────────────────────────────────────────────────────────┘