The dividend oracle for Robinhood Chain.

Stock tokens on this chain apply dividends and stock splits as changes to one multiplier, with no transfer and no event you can act on. PARE runs an on-chain accountant per token that watches that number, classifies every change as one or the other, and refuses anything that fits neither. This page is what those accountants say right now. Any contract can read the same thing.

01Tracked tokens

TokenLive multiplierScheduledDividend indexSplit factorStatusLast classified
reading the accountants…

Status is the thing to wire into a risk engine. SYNCED means the index is current. PENDING means a multiplier change is recorded but not yet classified: treat the index as stale until it clears. SCHEDULED means the token has announced a change that has not taken effect yet.

02What it guarantees

No guessing

A dividend is a multiplier rise of up to 3%. A split is a clean integer ratio at least 20% from 1. The two bands cannot overlap, so the keeper cannot tag a dividend as a split or a split as a dividend. The contract re-checks every tag.

Nothing slips through

A change that fits neither band is held, not classified. isSynced() stays false until a guardian resolves it through a two day public timelock. A market reading that flag has a circuit breaker it did not have to build.

You see it coming

The token schedules its next multiplier with an effectiveAt timestamp. The accountant tracks that schedule, so a value-changing event is visible before it lands rather than after.

03Read it from a contract

// MultiplierAccountant, one per stock token. All views, no fees, no key.
function isSynced()             returns (bool)      // false while a change awaits classification
function dividendIndex()        returns (uint256)   // cumulative dividend growth, 1e18 = 1.0
function splitFactor()          returns (uint256)   // cumulative split ratio, 1e18 = 1.0
function dividendIndexAt(uint256 ts) returns (uint256) // the index as of a past timestamp
function checkpointCount()      returns (uint256)
function checkpointAt(uint256 i) returns (uint64 timestamp, uint192 index)
function pending()              returns (bool exists, bool collapsed, uint64 ts, uint256 oldM, uint256 newM)

// Collateral value that survives a stock split:
//   value = rawBalance * feed                          // Chainlink Robinhood feeds price the token, multiplier inside
//   value = rawBalance * uiMultiplier() * pricePerShare // a per-share feed needs the multiplier
// and pause the market while isSynced() is false.

A JSON mirror of this page is at /api/oracle (add ?token=pfe for one). Reads are served from a public endpoint with no key, cached for 30 seconds. The full list of Robinhood stock tokens on this chain, with which ones are covered, is at /api/rh-tokens.

04Addresses

Every accountant is verified on chain. The keeper that classifies for them is run by PARE; a token can have an accountant without having a series, so coverage does not depend on there being a market for it.

05Request coverage

Building on Robinhood Chain and want a token classified? Say which. Adding one is a single transaction on our side, no capital, and it goes on the page above. Don't put anything secret in here.