Ditto

Safety

Safety

Ditto only proposes moves you can undo, built from fresh standard calls, with every amount checked before and after.

Decode, don't replay

A stranger's transaction is evidence of which contract real people used. Ditto never re-sends their calldata; it builds a fresh standard call for your wallet.

Exit before entry

Before any plan is signed, the whole round trip (deposit, then take it all out) is simulated at the current block. If getting out fails, Ditto refuses.

Verified deployers only

Anyone can be explained; only contracts from known factories and registries (Aave, Compound, Moonwell, Morpho, Euler, Spark, Fluid, Lido, Uniswap, Aerodrome) can be executed.

Exact permissions

Approvals are set to exactly the amount, never unlimited, and must read 0 after the deposit. Leftover permissions get a one-step reset.

Your wallet, bound

Exits start with a 0-value transaction from your wallet to itself, so a different wallet can never be paid out. Every proof checks who signed.

Signed plans

Ditto signs each plan it checked. An edited amount, contract or wallet is refused. Plans expire after 30 minutes.

What Ditto never does

Borrow, leverage, bridge, unlimited approvals, approvals to anything but the recipe's own contract, transactions on contracts outside its recipes, re-sending a stranger's calldata, or more than one transaction per approval.

Exit classes

FamilyGetting outYou must accept
Lending (Aave, Compound, Moonwell), savings vaultsInstant; simulated now at every step and in every proof—
Lido stakingA withdrawal queue (usually days) or a market salequeued
Liquidity poolsA mix of both tokens that changes with the pricemarket