Plume Plume
$PLM

© 2026 Plume. All rights reserved.

Esc

Exercise and assignment

The two mechanisms that make American-style exercise possible without ever looping over a list of writers on-chain — which matters, because an unbounded loop is both a gas problem and a way to make a contract permanently stuck.

Exercising: a right, not an obligation

Any holder can exercise any amount of their position, at any time before expiry, by calling one function. The contract reads the current oracle price, checks it's recent enough to trust, computes the payoff using the exact same formula that governs expiry settlement, and pays it out immediately from locked collateral. The holder's series tokens are burned in the same transaction.

The freshness check matters: the oracle price used must have been updated within the last thirty minutes, or the transaction reverts. This is deliberate. Compare it to what would happen otherwise: someone could exercise against a price that's technically on-chain but hours old, extracting value the true market price would never have allowed. A short pause during a genuinely stale window is a small cost for closing that door.

Assignment: who pays when someone exercises

A series can have several writers, each having sold different amounts, at different times. When a holder exercises, the contract has to decide whose collateral pays for it — fairly, without favoring whoever wrote first or last, and without iterating over every writer.

The mechanism is a cumulative assignment index, a well-established pattern for proportional distribution. The contract keeps one running number per series — the cumulative payout per option — which only ever goes up, by exactly the payout-per-option amount, every time any exercise happens. Every writer's outstanding obligation is then just: how many options did I write, times how much has the cumulative number grown since I last checked. No loop. Whether a series has two writers or two thousand, the cost of computing any one writer's share is identical.

A worked example

Maria and Sam both write NVDA $160 calls into the same weekly series. Maria writes 6, Sam writes 4 — ten options total, ten NVDA tokens locked between them. Dev buys all ten.

Wednesday, NVDA trades at $200. Dev exercises 5 of his 10 options.

Payout per option = (200 − 160) / 200 = 0.2 tokens
Total for 5 options  = 5 × 0.2   = 1.0 NVDA token

Maria wrote 60% of this series (6 of 10), Sam wrote 40% (4 of 10). Their share of any assignment always splits the same way, automatically:

  • Maria is assigned 60% of the 1.0-token payout: 0.6 tokens come out of her collateral.
  • Sam is assigned 40%: 0.4 tokens come out of his.

Neither had to do anything. Both keep the full premium they were originally paid — assignment only ever touches locked collateral, never premium already collected. If a third writer had joined mid-week, their share of the index only starts accruing from the moment they wrote — they're never retroactively assigned for exercises that happened before they existed in the series.

Buying to close

A writer who wants their collateral back before expiry doesn't have to wait. They can buy back options equal to their own unassigned outstanding amount on the open market, and burn them directly against their own position — releasing the corresponding collateral immediately. A writer can only buy-to-close as much as they still have outstanding after accounting for whatever's already been assigned to them. This keeps the accounting exact, and the conservation law holds through every combination of exercise and close, in any order.

Why this is safe to have running constantly

Every payout computed by exercise uses the identical formula used at expiry — the one proven, on the invariant page, to always stay below what's locked. Running that formula on a Wednesday afternoon is no more dangerous than running it on a Friday. The only genuinely new surface this adds is the assignment index itself, which is why it was built, and is tested, before anything that depends on it.