Tokenized stocks now transfer onchain 24/7 while NYSE is open 32.5 hours a week. The
state that determines whether one of these tokens can be safely valued or used as
collateral — is the reference market open, is it halted, is the valuation feed stale
because it’s Sunday or stale because it’s broken, can anyone actually redeem right
now — is not observable through ERC-20, and today every issuer exposes it differently:
Ondo has an offchain HTTP status API, Robinhood Chain tokens have a proprietary
oraclePaused(), most others have a bare paused(). Every lending market listing
these tokens hand-rolls this per listing.
Human curators can absorb that for five listings. Liquidation bots, 4337 policy
modules, and agents holding tokenized equities cannot — and they’re becoming the
dominant consumers. The first time a lending market liquidates borrowers against a
Friday-stale price during a Sunday-night gap, this stops being theoretical.
This draft proposes a small, ERC-165-discoverable set of token-level views — one
mandatory function, three optional extensions:
IAssetStatus(mandatory): program lifecycle + operational statusIReferenceMarketStatus: session (REGULAR/EXTENDED/AUCTION/CLOSED) × interruption
(NONE/PRICE_CONSTRAINED/ASSET_HALTED/VENUE_HALTED), orthogonal dimensions, plus a
marketId(ISO 10383 MIC) so claims can be cross-checked against public calendarsIReferenceValuationStatus: distinguishes “stale because no update is due” from
“stale because something is wrong” — the distinction a feedupdatedAtcan’t expressIAssetPrimaryStatus: issuance/redemption window availability (incl. NAV cutoffs)
Design invariants: every enum has UNKNOWN = 0 (zeroed proxy storage can never decode
as a healthy state), views never revert, no msg.sender dependence, no events (session
transitions happen on wall clocks, not transactions), and every status is explicitly
advisory — the ERC standardizes the questions, not the trust.
It deliberately composes with, and does not overlap, ERC-8056 (split multipliers),
ERC-7943/3643 (compliance/transfer control), and feed-level market status products
(a valid implementation may source session state from an oracle report).
What I’m specifically asking for
This spec has been stress-tested against non-US market structure on paper (HKEX lunch
breaks, mainland price-limit locks, Xetra volatility interruptions, LSE periodic-
auction securities, Gulf trading weeks, NAV-cutoff funds) — but paper isn’t
production, and I’d rather find the breakage here than after Final.
- Issuers (Robinhood, Superstate, Ondo, Backed, Securitize, Dinari and anyone
else shipping these tokens): is this implementable as a thin adapter over state you
already maintain? Where does it fight your architecture? Several of you have
already built the semantics this standardizes — I’d genuinely welcome co-authors. - Curators and lending-market teams: would you consume this to set LTVs and
liquidation logic? What’s missing for that to be real? - Market-structure review: the
AUCTIONmapping rules and the scope of
PRICE_CONSTRAINED(limit-locks, special quotes, partial constraints like
program-trading sidecars) are the two places I’m least certain the enums carve
reality at the joints. If you know a venue whose states these can’t encode, please
break them. - The
marketIdencoding (MIC, right-padded bytes32) — sufficient, or does
cross-listing/OTC need more?
Two scope decisions worth flagging so they don’t surprise anyone: corporate-action
economics are deliberately excluded (ERC-8056 owns splits; mergers/spinoffs deserve
their own ERC — this spec only exposes their operational shadow), and there is
deliberately no aggregate “safe/unsafe” verdict — safety is a property of the
consumer’s use case, not the asset.
Reference implementation with a Foundry test suite (including the zeroed-proxy and
interface-ID assertions) is in progress and will accompany the PR.