Skip to content

Pool parameters

Per-token parameters governing a single Pool (PoolSupervised). Each parameter is keyed by token address — a single Pool stores independent values for each of its supported tokens.

Defaults

ID byteParameterRangeNotes
0x11MAX_SUPPLY1 second – 1 yearPer-token rate-limit ceiling on the supply side (smoothed across new deposits).
0x12MIN_SUPPLY1 second – 1 yearPer-token rate-limit floor on the supply side.
0x14POW_SUPPLY0–64PoW difficulty for permissionless supply calls.
0x21MAX_BORROW1 second – 1 yearPer-token rate-limit ceiling on the borrow side.
0x22MIN_BORROW1 second – 1 yearPer-token rate-limit floor on the borrow side.
0x24POW_BORROW0–64PoW difficulty for permissionless borrow calls.
0x44POW_SQUARE0–64PoW difficulty for permissionless liquidate calls (per partial_exp).
0x81WEIGHT_SUPPLY0–255Supply-side weight in the health-factor calculation.
0x82WEIGHT_BORROW0–255Borrow-side weight in the health-factor calculation.

The default v10b deployment uses WEIGHT_SUPPLY = 170 and WEIGHT_BORROW = 255, which gives an effective LTV of roughly 170/255 ≈ 66.67% for a single-asset pair.

Reading from the contract

solidity
IPool pool = IPool(0x172698a18A965c483B1C7e5260e75bB2ca1B9725); // APOW/XPOW
(uint256 weightSupply,) = pool.getTarget(pool.WEIGHT_SUPPLY_ID(IERC20(APOW)));
(uint256 powSupply,)    = pool.getTarget(pool.POW_SUPPLY_ID(IERC20(APOW)));

Each parameter accessor takes the relevant token (or partial_exp for POW_SQUARE) and returns a 256-bit ID; pass that ID to getTarget(id).

Liquidation slice

The fraction of a position taken in a single liquidate call is not a stored pool parameter — it is the per-call partial_exp argument:

solidity
pool.liquidate(victim, partial_exp); // slice = 2^-partial_exp

partial_exp = 1 slices 50%, partial_exp = 2 slices 25%, etc. The protocol additionally lets governance set POW_SQUARE per partial_exp value, so a permissionless 50% slice can be tuned to a different difficulty than a permissionless 25% slice.

Where to go next