OTC for any ERC-20 pair, wallet to wallet: a single call moves both sides, and you read every parameter first. Open the board

Module rules

A module is a rule a maker signs into one order. The desk enforces it at fill time. Nothing global can switch it on or off.

Picked per order

Modules are fields of the signed order, each off when zero. The desk publishes the mask it enforces as SUPPORTED_MODULES, and the order form offers nothing outside that mask.

The five modules

ModuleSigned fieldsA fill reverts when
Expiry windowstartsAt, expiryit is before the start or at or after the expiry
Price bandfeed, bandLow, bandHigh, maxFeedAgethe feed fails, is too old, or reads outside the band
Taker allowlisttakerRootthe taker has no valid proof
Size capmaxFillnever: the fill is clamped to the cap
Maker feefeeBps, feeRecipientthe recipient cannot receive; the share is capped at 10%

The feed in a price band is whichever one the maker names, and the order page always shows its address. Read it before you fill.

The roster

OrbuModuleRoster is a public list of what each module does, and a set of signal values. Only the council can write to it. The desk never reads it, so retiring an entry changes what the site offers, not any signed order.

Read-only views

Pool activity and Liquidity strategy are screens over public pool data. They move nothing and have no contract behaviour.

The OTC deskA signature, a link, then one call that moves both sides.