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 Arc a program compiles and simulates, and the sauce command and the MCP server build its transactions and send them.

Notes

Arc pays gas in USDC, and has one USDC balance at two decimal scales: the native coin (msg.value, eth_getBalance, gas) has 18 decimals, and the ERC-20 USDC at 0x3600000000000000000000000000000000000000 has 6. Sending native value and calling USDC.transfer move the same money.
  • A Pot that spends its whole USDC balance and also pays a native fee from the program (a bridge’s or a messenger’s fee) runs out: that fee comes from the same balance. Leave room for it.
  • An ordinary cook’s Kitchen fee is attached value from the owner’s wallet: native USDC at 18 decimals, paid on to the Kitchen before the program runs. An owner-signed cook may instead pay it from funds already in the Pot.
  • balanceOf is the native balance divided by 10^12 and rounded down, so less than 10^12 wei reads as 0. Compare a native amount with a token amount only after converting one to the other’s scale.
  • In a program, pot.USDC is the Pot’s 6-decimal USDC token balance and pot.balance its 18-decimal native one: the same money at the two scales.
  • Every native amount has 18 decimals: an execution fee or a cook’s value. 1_000_000 of native value is 10^-12 USDC, not 1 USDC.
  • A transaction whose maxFeePerGas is below the minimum base fee (the table above) is never included: it can stay pending with no receipt, or be refused as underpriced. Arc’s own documentation asks for a maxFeePerGas of at least that fee, and a tip of 0 is accepted.
  • There is no canonical wrapped native, and nothing needs wrapping. WETH is bridged ETH, with no deposit() or withdraw(), and Uniswap’s Arc periphery reports a WETH9() that always reverts, so the ETH paths of its routers revert too. Wrapping, unwrapping and staking the native coin are refused for Arc.
  • Native value sent to the zero address, to or from a blocklisted address, or to a self-destructed account reverts, also when a contract forwards it.

In a program

Compiled with --chain arc, a program names Arc’s tokens and contracts with no import; the same file compiled for another chain resolves each name there, or fails where the chain does not have it.

Tokens

Protocols

Every protocol the registry records here, each contract with how a program names it: its namespace contract, or its ABI imported from ./protocols/<slug>/<Export>.json and bound to the address.

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.