Pre-auditThree days of senior audit time for $1,500, credited in full toward your Zealynx audit.3 audit days, credited toward your auditSee how →
L-15·

`payOff()` blocked for option exercise when contract is paused

Not reportedoptionsleverageblack-scholes
TL;DR

The OperationalTreasury.payOff function, used by option holders to exercise their positions after maturity, internally calls the exerciseOrLiquidatePosition function on the PositionInteractionFacet.sol contract.

Severity
LOW
Method
MManual review
CAT.

The OperationalTreasury.payOff function, used by option holders to exercise their positions after maturity, internally calls the exerciseOrLiquidatePosition function on the PositionInteractionFacet.sol contract. The exerciseOrLiquidatePosition function includes the whenNotPaused modifier.

Consequently, if the Pool contract is paused (e.g., by an admin for emergency maintenance, upgrade, or due to external dependency issues), users cannot call payOff to exercise their options. If an option is In-The-Money (ITM) during the pause but becomes Out-of-The-Money (OTM) by the time the contract is unpaused, the user loses the opportunity to realize their profit. This directly impacts the financial outcome for the option holder based on administrative action (pausing).

Explicitly document this behavior and the associated risk for option holders in the protocol's user-facing documentation. Users should be aware that the ability to exercise options might be temporarily suspended if the contract is paused.

02Section · Report provenance

Report provenance

Published by Pashov Audit Group, with Carlos (Bloqarl) participating as a contractor. The source report states that its fixes review was not fully completed; no final remediation disposition is recorded for this finding. Read the full report.

L-15