Skip to main content
The Sauce contracts have the same address on every EVM chain, and its programs the same id on every Solana cluster, so this page is the one place these docs list them: each chain’s page points here. An address is where the contract is deployed, not proof that it is there: before relying on one, confirm it has code on the chain (eth_getCode returns more than 0x; on Solana, getAccountInfo returns an executable account). In TypeScript each value comes from @eco-incorp/sauce/deployments, by the function its table names. The released EVM engine and Kitchen are deployed on Ethereum Sepolia, Base Sepolia and Arc Testnet. The released Solana engine and Kitchen are deployed on devnet and testnet, with zero execution fees: --chain solana-devnet and --chain solana-testnet. Testnet runs devnet’s engine build, so a program compiled for either reads chain id 1399811150; solana-testnet’s own id, 1399811151, is the SDK’s key for the chain. Engine deployment does not establish venue deployments: the SDK’s Solana venues remain mainnet-only. Each SDK release pins one release set: the compiler, and the engines and Kitchens its output runs on. More than one compiler version can share an engine and Kitchen, and a release that keeps the Kitchen keeps every Pot address: V12 explains the pairing.

EVM chains

Pots

The Kitchen deploys an owner’s Pot under a 32-byte salt, zero unless another is chosen, at CREATE2(kitchen, keccak256(abi.encode(owner, salt)), initCodeHash), with the Pot init-code hash: 0xe8e1f54a0a3c700fedc0e0019c5a7dc7ca08e676862db576b864e744186cd7f2 v12PredictPot(owner, salt) computes a Pot’s address, v12PotDerivation() returns the formula and the hash, and sauce pot --owner <address> prints an owner’s Pot. A Pot deployed with its Router fixed, deployPot(owner, salt, true), has another address for the same owner and salt, under the same init-code hash: CREATE2(kitchen, keccak256(abi.encode(owner, salt, true)), initCodeHash). The Kitchen’s predictPot(owner, salt, true) returns it. The Shared Pot at a salt, deploySharedPot(salt), is CREATE2(kitchen, keccak256(abi.encode(address(0), salt, true)), initCodeHash), and predictSharedPot(salt) returns it.

Solana

The engine owns every Pot, and a program on Solana reads it as ctx.self(). A Pot is the Kitchen’s program address for the seeds "pot", the owner and the 32-byte salt.

Next steps