Skip to main content
Supported. Sauce supports transactions on Ethereum, Base, Arc and Solana, and the testnets Arc Testnet, Base Sepolia, Ethereum Sepolia, Solana Devnet and Solana Testnet. On Solana a program compiles and simulates, and the sauce command and the MCP server build its transactions and send them.

Notes

The release’s engine and Kitchen are deployed on mainnet, devnet and testnet. Each test cluster is a chain of its own: --chain solana-devnet and --chain solana-testnet resolve the chain id and token symbols to that cluster’s. An endpoint does not change solana’s compile-time chain identity or mainnet token symbols; ctx.chainId() reads the running cluster’s chain id. Devnet and testnet report 1399811150, with zero execution fees. Local simulation selects the released engine build from the endpoint’s cluster. The SDK’s venues are mainnet-only; the engine and Kitchen being on a test cluster does not deploy venues.

In a program

Compiled with --chain solana, a program names Solana’s mints with no import: a symbol is the mint’s 32-byte key, a value the @sauce/token functions take. A token account is an Account parameter (Solana).

Tokens

And 1799 tokenized stocks, each a Token-2022 mint named by its symbol in the same way: they are in Solana stock tokens, with their mints.

Venues

Each venue, by the namespace a program swaps at one of its pools with, its protocol then its program: at a price, Orca.Whirlpool.swap(pool, tokenIn, tokenOut, amountIn, priceLimit, minOut), which returns 0 having moved nothing where the pool cannot trade and reverts below minOut. Its pool is found by key, Orca.Whirlpool.pool(USDC, WSOL, 4), where the venue finds pools by one: a key with no pool there is skipped. The pool’s accounts, and the Pot’s, are derived when the cook is built (@sauce/router on Solana). Meteora.DLMM’s swap is an exact input, its venue’s own with no price limit: Meteora.DLMM.swap(pool, tokenIn, tokenOut, amountIn, minOut) pays all of amountIn or fails the cook, and reverts below minOut.

Accounts

The accounts a program writes where it uses them, each added to main, derived when the cook is built (so what it is made of is known then) and checked on chain at the top of main to be the account it names. Each is read-only unless .writable() or .signer() gives it that role.

Protocols

The registry records no protocol deployment on this chain.

Next steps

  • Chains: every other chain, with its support.
  • Names and registries: how a name in a program becomes an address on the chain it is compiled for.
  • Glossary: the words these pages use, in plain terms.