Protocol
Automation and cranks
Who moves a series forward, and what happens when nobody does.
Design
There is no operator. Every transition after creation is a public function anyone can call once it is due.
Permissionless cranks
| Function | Due when | Bounty |
|---|---|---|
| strike(seriesId) | Close #1 is available | Small USDG |
| observe(seriesId) | Next scheduled close is available | Small USDG |
| settle(seriesId) | Autocall or #13 observed | None |
| BackstopPolicy.fill(seriesId) | Last 24 h of subscription, GUARD > CARRY | Small USDG |
Timing
Cranks become callable once the Chainlink round after the close exists, usually minutes after 16:00 New York time.
Reading the queue
pendingWork(start, count) returns series with a due action, so a keeper needs no indexer.
Lazy execution
A late crank uses the price that was due, so delay never changes an outcome.
SeriesPolicy
Opens the day's series from the eight templates. Anyone may call it once per trading day.
BackstopPolicy
Publishes one fill rule per underlying and sizes each fill within the Backstop caps.
Chainlink-compatible upkeep
The cranks expose checkUpkeep and performUpkeep so an automation network can run them, but nothing depends on one.
Failure handling
If no keeper runs, the series simply waits. Holders can always call the cranks themselves.