Proposing changes
The on-chain process for changing a governable parameter.
The flow
The supervisory contracts (PoolSupervised, PositionSupervised, OracleSupervised, VaultSupervised) implement parameter changes via a target mechanism: a parameter has a current effective value plus a scheduled target with a timestamp.
- Schedule. A holder of the matching
_SET_TARGET_ROLE(or_TMP_TARGET_ROLEfor short-window overrides) calls the access-managed setter on the supervised contract via Acma. Acma applies its execution-delay timer. - Verify bounds. The supervisor checks the new value against absolute bounds (e.g.
SPREAD ≤ 50%) and the per-cycle multiplicative bounds (≤ 2× / ≥ 0.5×). - Verify rate limit. The supervisor checks this parameter hasn't already moved within the current cycle.
- Wait out the delay. During the Acma execution-delay window, a
_GUARD_ROLEholder maycancel(...)the scheduled change. - Execute. When the delay elapses, anyone may call
execute(...). The asymptotic transition begins from the prior value to the scheduled target. - Cycle ends. At cycle end, the new value is fully effective. The next scheduling for the same parameter can move it again.
What "the cycle" means
The cycle is the rate-limit window. By default it's Constant.MONTH = YEAR / 12 ≈ 30.44 days. A given parameter can change at most once per cycle.
The cycle is per parameter, not global. So you can change WEIGHT_SUPPLY in one cycle and SPREAD in another, with their cycles overlapping.
Approval at the multisig / DAO level
The on-chain process described above is the enforcement layer. Above it sits whatever approval mechanism the _ADMIN_ROLE holders use — multisig signatures, DAO vote, etc. The protocol doesn't dictate this.
In practice:
- At launch, the relevant
_ADMIN_ROLEs are held by a multisig (BOSS). Proposals are off-chain coordination → on-chainschedule(...)call. - As the protocol matures, those admin roles will likely be re-assigned to a DAO contract with on-chain voting.
Frontrunning
Because changes follow the asymptotic transition, there's no "single block" where the change happens. So frontrunning a proposal doesn't yield exploitable arbitrage.
The transition starts the moment the scheduled change executes. By the time observers can react, the change has already begun. But the magnitude is bounded — they can't react after the cycle ends, when ~95% of the change is done.
Where to go next
- Parameter catalog — what's governable
- Role hierarchy — who can do what
- CLI and tools —
banq acmafor live inspection