Skip to content

Position parameters

Parameters governing each Position contract — supply or borrow (PositionSupervised).

Defaults

IDParameterRangeNotes
0x1CAP0 – 2¹¹² − 1Cap limit for the position. Setting above type(uint112).max reverts with TooLarge.
0x2UTIL0 – <100%Target utilisation rate. Must be ≥ RATE.
0x4RATE0 – <100%Target interest rate at UTIL. Must be ≤ UTIL.
0x8SPREAD0 – 50%Half-spread between supply and borrow APR. Caps LOCK_BONUS and LOCK_MALUS.
0x10MIN_HOLDERS0 – Constant.MIN_HOLDERSMinimum holder count below which certain redistribution paths gate.
0x20LOCK_BONUS0 – SPREADSupply-rate increase for locked supply.
0x40LOCK_MALUS0 – SPREADBorrow-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.

Where to go next