Concepts
Multipliers and corporate actions
Stock Token balances never change when a corporate action happens. The token’s multiplier does.
The multiplier
A multiplier is the number of underlying shares one token represents. Stock Tokens implement
ERC-8056, which exposes it onchain as an 18-decimal fixed-point value: 1000000000000000000 means
exactly one share.
When nothing is pending, newUIMultiplier() equals uiMultiplier() and effectiveAt() keeps the
time of the last change. StockSync therefore reports a pending change only when the new value
differs and its effective time is after the block it read.
Registry and contract
The registry publishes its own currentMultiplier, and StockSync can read the contract at a single
block. getMultiplierState returns both with an agreement of match, mismatch or
unavailable.
- A mismatch produces a
MULTIPLIER_MISMATCHwarning. One side may not reflect a recent corporate action yet. - A registry pending change whose effective time has passed produces
PENDING_MULTIPLIER_PAST_EFFECTIVE_TIME, because the contract may already use it.
Corporate actions
getCorporateActions returns the actions Robinhood has processed, newest process date first. The
live API does not sort them, so StockSync does.
Types StockSync does not recognize yet are returned as unrecognized with the original
upstreamType and untouched details, plus a warning.
Status is in-progress, completed, unspecified or unrecognized.
Process date
processDate is Robinhood’s scheduling date for the action. For splits it is the date the multiplier
changes. For dividends it is not the payable date. In-progress actions may have no date yet.
Identifiers
The upstream id of a corporate action is the affected asset’s uid, not a unique action id, so
StockSync exposes it as assetId. Do not use it to deduplicate actions.