> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Glossary

> Plain-language definitions of Sauce, EVM and Solana terms, with links to the detailed references.

Start with **program**, **Pot** and **cook**: you write a program, your Pot executes it, and the transaction that runs it is called a cook. The [introduction](https://docs.eco.com/sauce/introduction.md) explains how they fit together.

The entries below are in alphabetical order. Each links to a more detailed explanation.

## A

**ABI.** A contract's interface: its functions, events and errors, with their argument and return types. A program calls a contract through its ABI, either the registry's, reached by a namespace, or one it imports as JSON. See [Contracts and ABIs](https://docs.eco.com/sauce/contracts-and-abis.md).

**Account manifest.** What compiling for Solana returns beside the bytecode: every account the program needs, in order, with the role each has and how to derive it. A compile for an EVM chain returns none. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**ATA (associated token account).** The token account at the address derived from a holder, the mint and the mint's token program. It is where that holder's balance of that token lives. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

## B

**Bytecode.** The instructions produced by compiling a program for the V12 engine. The output can differ by chain because token and contract names resolve to that chain's addresses. See [Bytecode](https://docs.eco.com/sauce/bytecode.md).

## C

**Chain-qualified name.** A contract name prefixed with a chain, such as `Base.UniswapV3.Factory`. It is that chain's address as a value; calling it from a program on another chain calls that address on the chain the program runs on. Tokens are never qualified. See [Names](https://docs.eco.com/sauce/names.md).

**Code buffer.** On Solana, a Kitchen account that holds a program too large for one transaction. The program is uploaded into it in several transactions, run from it, and the buffer is closed after the cook, returning its rent. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**Compute units.** Solana's measure of a transaction's work. A transaction has a compute budget; a cook fails if it exceeds that budget. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**Cook.** A transaction that runs a Sauce program through a Pot. An unhandled failure reverts the transaction’s state changes. A program can handle some failures on EVM chains and continue. See [cook()](https://docs.eco.com/sauce/cook.md).

**`cook()`.** The Pot's function `cook(engine, program)`, payable, where `program` is the bytecode followed by the encoded entry arguments and the value is the Kitchen fee plus any native coin the program spends. Only the Pot's owner can call it on a private Pot; another account can submit a signed cook instead. See [cook()](https://docs.eco.com/sauce/cook.md).

## E

**Engine.** The V12 engine: the onchain code that executes Sauce bytecode. A cook names it, and on an EVM chain it runs only inside a Pot its Kitchen created. See [V12](https://docs.eco.com/sauce/v12.md).

**Entry arguments.** The values of `main`'s parameters, encoded after the bytecode in each cook, so one compiled program serves every call. They are ABI-encoded by `main`'s parameter types, the one entry encoding, which the compiler reports as `entryEncoding: "abi-v1"`. See [Layout of a program](https://docs.eco.com/sauce/program-layout.md).

## F

**Family alias.** A name that groups a protocol's versions, such as `Uniswap` or `Aave`. It names a contract only when exactly one member has that contract on the chain: `Uniswap.Factory` is ambiguous and does not compile. See [Names](https://docs.eco.com/sauce/names.md).

**forceApprove.** The approval pattern used by EVM token approval helpers such as `USDC.approve(spender, amount)`: read the current allowance, reset a non-zero allowance to zero, then set the new amount. See [Security considerations](https://docs.eco.com/sauce/security-considerations.md).

## G

**Gas.** The measure of work used to price an EVM transaction. The sender pays the network fee in the chain's native coin. A cook consumes gas for the Pot, Kitchen and program execution, and a reverted transaction still consumes gas. See [cook()](https://docs.eco.com/sauce/cook.md).

## I

**`Int256`.** The signed 256-bit integer type, from −2²⁵⁵ through 2²⁵⁵ − 1. Negative literals, ABI `intN` outputs and `Math.signExtend` are `Int256`, and the division, remainder, shift and comparison operators are signed on it. `Int256(x)` and `Uint256(x)` are checked conversions, `.fromBits(x)` reinterprets the bits, and arithmetic that mixes `Int256` and `Uint256` does not compile. See [Types](https://docs.eco.com/sauce/types.md).

**Interface (registry).** A registry ABI with no fixed address, such as `UniswapV3.Pool` or `Erc4626.Vault`. A program calls it with an address in the same expression: `UniswapV3.Pool(pool).liquidity()`. See [Names](https://docs.eco.com/sauce/names.md).

**ISA revision.** The label the compiler reports with each artifact as `isaRevision`: `"stack-v3"`, an opaque label. It does not distinguish engine releases and is not a compatibility check: the SDK's release sets pair each compiler version with exact engine versions, and more than one compiler version can share an engine. See [V12](https://docs.eco.com/sauce/v12.md).

## K

**Kitchen.** The contract that creates Pots, at the same address on every EVM chain it is deployed on, and sets the fee each cook pays. On Solana it is an upgradeable program, with the same id on every cluster, that signs for every Pot; its upgrade authority must be trusted with what Pots hold. See [Kitchen](https://docs.eco.com/sauce/kitchen.md).

**Kitchen fee.** The flat fee each cook pays the Kitchen in the chain's native coin, read on an EVM chain with `executionFee()`. Its owner sets it; a cook carrying less reverts, and a cook that reverts pays none. See [Kitchen](https://docs.eco.com/sauce/kitchen.md).

## L

**Lookup table.** On Solana, an address lookup table: a list of addresses kept onchain that a transaction points into, one byte per account instead of 32, so a cook naming many accounts fits. Its creator pays its rent and owns it, and it stays open until its owner closes it. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

## M

**`main`.** The function a program's execution starts at. Its typed parameters are the program's inputs, passed with `--args`, and its return value comes back from the cook. See [Layout of a program](https://docs.eco.com/sauce/program-layout.md).

## N

**Namespace.** A protocol's name in a program, such as `UniswapV3` or `AaveV3`. `UniswapV3.Factory` is that protocol's contract on the chain the program is compiled for, with its ABI. See [Names](https://docs.eco.com/sauce/names.md).

**Native coin.** The coin a chain charges its fees in: ETH on Ethereum and Base, USDC on Arc, SOL on Solana. The Kitchen fee is paid in it. See [Kitchen](https://docs.eco.com/sauce/kitchen.md).

**Nonce invalidation.** `invalidateNonces(word, mask)` on a Pot created by the current Kitchen: the call that cancels signed-cook authorizations before they are submitted, from the owner or from a cook the Pot runs. `sauce sign --cancel <nonce>` builds it. See [Pot](https://docs.eco.com/sauce/pot.md#signed-cooks).

## P

**PDA (program-derived address).** A Solana address a program computes from seeds, with no private key behind it. Only the program that derived it can sign for it; a Pot on Solana is one. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**Pot.** The account that holds tokens and executes Sauce programs. An EVM private Pot is a contract created for one owner and salt, and calls made by a program come from that Pot. On Solana, a Pot uses a program-derived address. Pot and engine compatibility depends on the release. See [Pot](https://docs.eco.com/sauce/pot.md).

**Pot's Router.** The contract a Pot delegatecalls when a pool calls back during a swap; it pays the pool from the Pot's balances. A new Pot starts on the Kitchen's current Router, and the owner can change it with `setRouter` unless it was fixed at creation. The Router is content-addressed: its address follows from its code, so Routers are compared by address (`v12RouterAddress()`). See [Pot](https://docs.eco.com/sauce/pot.md).

**Presence test.** A registry name in a condition, such as `if (UniswapV3.Factory)`, `!USDT` or `USDT != 0`, which asks whether the chain the program is compiled for has that contract or token. Every registry name is declared on every chain, and one the chain lacks is zero there. The SDK decides the test when the program compiles and leaves out the branch it rules out; any other use of a name the chain lacks is refused at the use, naming the chain. A name no chain has is a compile error. The compiler alone does not know registry names. See [Names](https://docs.eco.com/sauce/names.md#using-a-name-only-where-the-chain-has-it).

**Preview chain.** A registry chain other than the supported chains. Programs compile there and reads work, but the `sauce` command builds and sends no transaction, and a cook simulates only where the release's engine is deployed. See [Chains](https://docs.eco.com/sauce-sdk/reference/chains.md).

**Program.** A SauceScript file, compiled for one chain, that a cook runs. Its form is either a `main` function or a script. See [Layout of a program](https://docs.eco.com/sauce/program-layout.md).

**`program(closure, ...args)`.** A builtin that compiles an arrow function as a separate program, returning `{ code, args }`: its bytecode and its encoded arguments, run with `eval(code.concat(args))`. The arrow's captures of the enclosing function's values are read-only. See [Builtins](https://docs.eco.com/sauce/builtins.md).

## R

**Rent.** In these docs, the SOL reserved in a Solana account to keep it rent-exempt. The required balance depends on the account's size and can be reclaimed when the account is closed. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

## S

**Salt.** A 32-byte value that, with the Kitchen and the owner, determines a Pot's address. One owner has one Pot per salt; the default is zero. See [Pot](https://docs.eco.com/sauce/pot.md).

**SafeERC20.** OpenZeppelin's rules for calling a token, which every Sauce token write follows: a token that returns nothing works, and a `false` return, a malformed return or an address with no code reverts. Writes through a raw `IERC20` binding do not follow them. See [Names](https://docs.eco.com/sauce/names.md).

**SauceScript.** The language of Sauce programs, a subset of TypeScript, in `.sauce.ts` files. See [Introduction to Sauce](https://docs.eco.com/sauce/introduction.md).

**Script (program form).** A program of top-level statements with no `main` function. It takes no arguments. See [Layout of a program](https://docs.eco.com/sauce/program-layout.md).

**Shared Pot.** A Pot with no owner, created by the Kitchen with `deploySharedPot`. Anyone can cook on it and spend what it holds, so it is funded and emptied within one transaction. See [Pot](https://docs.eco.com/sauce/pot.md).

**Signed cook.** A cook the Pot's owner signs as EIP-712 typed data and another account submits, paying the gas, through `cookSigned(engine, program, maxExecutionFee, nonce, deadline, submitter, signature)` on a Private Pot created by the current Kitchen. It runs with the owner's full authority over the Pot, once, until its deadline. `sauce sign`, the MCP server's `sauce_signed_cook` and `sauce_sign`, and `signedCookTypedData` with `encodeCookSigned` in TypeScript build one. See [Pot](https://docs.eco.com/sauce/pot.md#signed-cooks).

**Simulate.** To run a cook against a chain's current state, or a given block, without signing or sending it. `sauce simulate` reports the gas, the return value, every transfer and what stays in the Pot, or the reason for a revert. See [Security considerations](https://docs.eco.com/sauce/security-considerations.md).

**Smallest unit.** The integer unit every token amount in a program is written in: a token with 6 decimals, such as USDC, has 1000000 smallest units per token. On Solana the native coin's is the lamport. See [Types](https://docs.eco.com/sauce/types.md).

**Supported chain.** A chain the `sauce` command builds and sends transactions on: Ethereum, Base, Arc and Solana, and the testnets Arc Testnet, Base Sepolia, Ethereum Sepolia, Solana Devnet and Solana Testnet. See [Chains](https://docs.eco.com/sauce-sdk/reference/chains.md).

## T

**Target.** The kind of chain a program is compiled for: `evm` or `svm` (Solana). A builtin one target lacks is a compile error there. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**Token account.** On Solana, the account that holds one holder's balance of one token. A wallet or Pot can own token accounts; an associated token account is the standard account derived for a holder and mint. A token program refuses a wallet address where it expects a token account. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**Token-2022.** Solana's second token program, with optional extensions such as transfer fees and transfer hooks. `@sauce/token` takes SPL Token and Token-2022, and refuses a Token-2022 mint whose transfer hook names a program. See [EVM and Solana](https://docs.eco.com/sauce/targets.md).

**`Token(address)`.** A token given by its address, for a token the program does not name by symbol. `Token(t).transfer(to, amount)` and the other writes compile to the `@sauce/token` functions, with SafeERC20 behaviour; `Token(t).balanceOf(holder)` reads a balance. See [Names](https://docs.eco.com/sauce/names.md).

**`try`/`catch`.** On an EVM chain, a block that continues after a failure. A block of several statements is atomic: a failure rolls back its calls, storage writes and assignments before the handler runs. A block holding one external call, and `.catch` on a call, catch only that call's failure, not the decoding of its return. The handler receives at most 256 raw revert bytes. Solana has neither. See [Errors and reverts](https://docs.eco.com/sauce/errors.md).

## V

**V12.** The Sauce engine, the virtual machine that runs Sauce bytecode on EVM chains and Solana. See [V12](https://docs.eco.com/sauce/v12.md).

## Next steps

* [Introduction to Sauce](https://docs.eco.com/sauce/introduction.md)
* [Security considerations](https://docs.eco.com/sauce/security-considerations.md)
* [Layout of a program](https://docs.eco.com/sauce/program-layout.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.