Position parameters
Parameters governing each Position contract — supply or borrow (PositionSupervised).
Defaults
| ID | Parameter | Range | Notes |
|---|---|---|---|
0x1 | CAP | 0 – 2¹¹² − 1 | Cap limit for the position. Setting above type(uint112).max reverts with TooLarge. |
0x2 | UTIL | 0 – <100% | Target utilisation rate. Must be ≥ RATE. |
0x4 | RATE | 0 – <100% | Target interest rate at UTIL. Must be ≤ UTIL. |
0x8 | SPREAD | 0 – 50% | Half-spread between supply and borrow APR. Caps LOCK_BONUS and LOCK_MALUS. |
0x10 | MIN_HOLDERS | 0 – Constant.MIN_HOLDERS | Minimum holder count below which certain redistribution paths gate. |
0x20 | LOCK_BONUS | 0 – SPREAD | Supply-rate increase for locked supply. |
0x40 | LOCK_MALUS | 0 – SPREAD | Borrow-rate decrease for locked borrow. |
How LOCK_BONUS / LOCK_MALUS interact with SPREAD
Both bonus and malus are bounded above by the current SPREAD. Reducing SPREAD automatically caps these (the supervisor refuses any new SPREAD value below either bonus or malus). At LOCK_BONUS = LOCK_MALUS = SPREAD, full lock adoption produces zero protocol margin (solvent but unprofitable).
Reading from the contract
solidity
ISupplyPosition supply = pool.supplyOf(IERC20(APOW));
(uint256 spread,) = supply.getTarget(supply.SPREAD_ID());
(uint256 bonus,) = supply.getTarget(supply.LOCK_BONUS_ID());UTIL and RATE together define the IR-model target. Other coefficients of the rate function live in the pool / IR-model struct rather than as standalone parameters.