Sauce turns onchain transactions into programs, with encoded logic that executes at runtime. Advanced routing with zero-block latency, for superior execution.
Live in beta
1const [a, b, c] = await Promise.all([2 quote(in, out, amt, poolA),3 quote(in, out, amt, poolB),4 quote(in, out, amt, poolC),5]);6return swap(in, out, amt, best(a, b, c));Sauce is a Turing-complete runtime for the EVM and SVM. Write transaction logic in TypeScript, compile it to bytecode, and execute it atomically against live state — all within a single block.
We built Sauce as a protocol for automating and optimizing Eco's routing and liquidity strategies. Now available as an SDK to select partners.
The route is decided in block N against stale state, and lands in block N+1 or later. The chain has moved.
Quote, decide, execute — inside the same inclusion the user signed. Zero blocks between observation and execution.
Every block of latency is worse pricing and missed routes — Sauce removes the block.
Runtime branching and loops, on-chain. if/else, while, recursion — every decision evaluated against live state at inclusion.
TypeScript in, VM bytecode out. Same selectors, same gas as hand-written Solidity or Rust.
All-or-nothing execution. The whole script is one transaction — if any step reverts, everything reverts. No partial fills, no orphaned approvals.
Compilation runs locally and execution is a normal onchain call — no backend to provision. Run a template in the browser first, then wire the same flow into your own code.
The compiler and runtime, with typed ABIs. Works in the browser and in Node.
Each template is a complete, runnable Sauce script. Open one to read the source, then adapt it to your use case.
Compile the script to bytecode and pass it to the Sauce contract's cook() entry point. Try it in a playground against live Base state before you ship.
import { compile } from "@eco-incorp/sauce-sdk/compiler";// Your script's TypeScript, compiled to EVM bytecode segments.const { bytecode } = compile(source, { contracts, args });// Pass the segments to the Sauce contract's cook() entry point.const result = await walletClient.writeContract({ address: SAUCE_ADDRESS, abi: SAUCE_COOK_ABI, functionName: "cook", args: [bytecode],});Compose Sauce TypeScript directly. Full programmability, your own scripts in your own repo — compiled by the Sauce toolchain, executable on Solana or any EVM chain where Sauce is deployed.
Eco hosts the Studio templates and a growing library as routing API endpoints. Call them like any payment or trading API — we compile and execute on inclusion against live state.