v12PredictPot(owner, salt?, kitchen?) derives a Pot’s address without reading a chain, potSalt and DEFAULT_POT_SALT give its salt, and kitchenExecutionFee() builds the read of the Kitchen’s fee per cook. sqrtPriceX96FromPrice and priceFromSqrtPriceX96 convert between a price and a pool’s sqrtPriceX96.
@eco-incorp/sauce.
potSalt
Function · @eco-incorp/sauce
The salt of the Pot an owner names label: keccak256(utf8(label)).
An owner has one Pot per salt. The zero salt (DEFAULT_POT_SALT) is the convention
for the one Pot an owner has by default, and a label names any other:
v12PredictPot(owner, potSalt("treasury")). Hashing gives any label a full 32-byte salt, the
same everywhere: the sauce command’s --salt treasury is this. An exact salt needs no helper;
pass the 32 bytes to v12PredictPot as they are.
DEFAULT_POT_SALT
Variable · @eco-incorp/sauce
The salt of an owner’s default Pot: zero.
A Pot is fixed by its (owner, salt) pair, so this is not a namespace: whoever calls
Kitchen.deployPot(owner, 0) creates this same Pot, owned by owner, and nobody can create a
different one there.
v12PredictPot
Function · @eco-incorp/sauce
CREATE2(kitchen, keccak256(abi.encode(owner, salt)), initCodeHash) - the formula
V12Deployments.json records, applied. kitchen defaults to the pinned release’s Kitchen proxy,
the Pots’ deployer; the init-code hash is always the pinned release’s, never a constant here.
Chain-independent, like every CREATE2 address: the same owner and salt give the same Pot on every
chain the Kitchen is deployed at that address on. A Kitchen upgrade that moves the init-code hash
moves every Pot minted after it - the reason this reads the hash from the release.
kitchenExecutionFee
Function · @eco-incorp/sauce
Kitchen.executionFee(), as a request plus its decoder.
ExecutionFeeCall
Interface · @eco-incorp/sauce
