How EXDIV works.

EXDIV splits a tokenized stock into two things you can trade separately: the stock itself, and the stream of dividends it earns. This page is the whole mechanism, plainly.

01The split

Robinhood Chain Stock Tokens don't pay cash dividends. When the underlying pays one, it is auto-reinvested and the token's on-chain multiplier (uiMultiplier, ERC-8056) rises — your raw balance never changes, but each token represents more shares. That growth is a yield stream, and EXDIV splits it off.

Deposit a Stock Token and EXDIV mints two ERC-20s, one series at a time (asset × maturity date):

Merge is the anchor: PT + YT always recombines into the underlying token, in full, for free, at any time — before and after maturity. That exit is what keeps PT priced honestly.

"How do I claim my dividend?" You don't — there is nothing to claim, here or anywhere. On Robinhood Chain the dividend is reinvested automatically and lands inside every holder's tokens through the multiplier; it is invisible in a normal wallet, but it is already yours. What EXDIV adds is the ability to see it (the terminal's drip chart and accrued index) and to trade it (yAAPL is that dividend stream as a token). Beware of any site offering to "claim" stock-token dividends for you — there is no such mechanism, and pages built around a claim button are a known scam pattern.

02Where this comes from

EXDIV is not a new financial idea — it is a tokenized rebuild of structures that have traded on Wall Street for four decades. Separating an asset from its income stream is one of the oldest, most proven trades in fixed income and equities.

What EXDIV changes is the rails, not the idea: the claims are ERC-20s over tokenized stocks, the split is self-service, the accounting is on-chain through the token's own ERC-8056 multiplier — and unlike the Americus Trusts, which only recombined round lots through the trust, PT + YT merges back to the underlying at par, free, at any time.

03The math

The accountant tracks a dividend index d that grows only with dividend reinvestments (stock splits move a separate factor and change nothing here). Let d0 = the index when the series opened and dT = the index at maturity.

// split(a): always mints at par a AAPL → a pAAPL + a yAAPL (minus the split fee) // at maturity, per token: PT redeems a · d0/dT AAPL — the baseline, drip removed YT redeems a · (dT−d0)/dT AAPL — the whole term's drip // conservation: the two legs sum to exactly the deposit d0/dT + (dT−d0)/dT = 1

Because PT + YT redeem to exactly what was deposited, the vault is always fully collateralized by construction — it holds precisely the raw tokens deposited, and a stock split scales everyone's share exposure through the token's own multiplier without touching d0 or dT.

04Fees

ACTIONFEENOTES
split10 bpstaken from the deposit, once, on the way in
merge0free, always — free exit is the peg
redeem PT0the baseline is untouched
redeem YT5% of the dripof the dividend growth only, never principal

Where fees go: back into the market, two ways. The treasury recycles protocol fees on-chain — buying the stock token, paring it, and deepening the PT and YT pools, so every split makes the next trade tighter — and routing a share to market-buying and burning $PARE. Protocol revenue becomes protocol liquidity and shrinking supply, across every series.

One line: thin fee in the door, thin slice of the yield. Nothing on exit, nothing on price exposure.

05The pools

Every series ships with two Uniswap v3 pools on Robinhood Chain, and both are quoted in the stock itself, never a stablecoin: PT/stock (pAAPL/AAPL, pSPY/SPY) and YT/stock (yAAPL/AAPL, ySPY/SPY). The prices in the terminal are read straight from those pools.

One line: PT and YT trade against the share they came from, and free merge keeps their sum at one.

06Dividends vs stock splits

The multiplier rises for both dividend reinvestments (adds value → belongs to YT) and stock splits (value-neutral — the share price offsets). Telling them apart is the protocol's one hard problem, and it is enforced on-chain:

Every classified event is public — the terminal's ledger shows each one with its ratio and date.

07Lifecycle

A series runs ACTIVE → MATURED → SETTLED. While active: split, merge, trade. At the maturity timestamp the series is matured; anyone may then call settle() — it is permissionless, but it refuses to run until every multiplier change is classified, freezing dT honestly. Once settled, PT and YT redeem at the amounts above. Merge keeps working through all three states.

08$PARE — supply and distribution

$PARE is the protocol's token on Robinhood Chain. Contract address Address hidden. It is separate from the series contracts: no vault, principal token or yield token depends on it, and holding it is not required to use the protocol.

ITEMSHARENOTES
Total supply1,000,000,000fixed — max supply is the same figure, there is no mint function
Fair launch to liquidity100%every token went to the launch pool, deployed by Pons on Uniswap v4. No allocation, no presale.
Developer wallet2.26%bought on the open market after launch and locked — Address hidden. Counted in circulating supply.
Emissions0no minting function, no staking contract, no vesting schedule

Live supply figures are published at /api/supply, read from the token contract on each request. Circulating supply is total supply less any balance held at a burn address. The developer wallet was bought on the open market and counts as circulating, as do liquidity pool holdings, since anyone can trade against them.

How it was launched. There was no presale, no private round and no team allocation beyond the 2.26% above, which is locked. The entire remaining supply was placed into the launch pool at deployment, so the first buyer and the hundredth bought on the same terms.

Where the revenue goes. The protocol earns from the 10 bps split fee and the 5% fee on the YT drip at maturity, plus swap fees on the liquidity it provides itself. That revenue is directed two ways: deepening the protocol's own PT and YT pools so each series trades tighter, and market-buying and burning $PARE. Both are funded by usage rather than by issuance — there is nothing to print.

What it does not do. Holder fee tiers on splits, priority access to new series and a vote over which equity is listed next are all intended, and none of them are implemented in the deployed contracts today. The split fee is immutable per vault and identical for every address, so fee tiers would require new vaults rather than a settings change. Treat them as roadmap, not as current utility.

09The oracle

Every series runs on a MultiplierAccountant, and the accountant does not need the series. It watches one stock token's ERC-8056 multiplier, records each change, classifies it as a dividend or a stock split using the bands in [06], and holds anything that fits neither for the guardian. All of that is readable by any contract, for free, with no key. EXDIV publishes it as the dividend oracle for Robinhood Chain.

Why a lender should care. A stock token's raw balance never moves; the multiplier does. So a 4-for-1 split and a dividend both look like "the multiplier changed" to anything reading balances. Valuing collateral is the easy half and depends on your feed: Chainlink's Robinhood feeds on this chain price the token with the multiplier already inside, so there it is rawBalance × feed and multiplying by uiMultiplier() again would double count; a per-share feed needs rawBalance × uiMultiplier() × pricePerShare. Either way the feed cannot tell you which corporate action happened, cannot warn you before it lands, and does not refuse a change that fits neither. The accountant does all three. Wire isSynced() into a market pause and you have a circuit breaker against a bad multiplier push, whether it came from a bug or from the issuer, plus the dates of every window in advance.

READRETURNSUSE IT FOR
isSynced()boolfalse while a change is recorded but unclassified — treat the index as stale, pause if you hold the token
dividendIndex()uint256, 1e18 = 1.0cumulative classified dividend growth since genesis
splitFactor()uint256, 1e18 = 1.0cumulative classified split ratio — normalise share counts by this
dividendIndexAt(ts)uint256the index as of any past timestamp, for accruing payouts to depositors
checkpointAt(i)(timestamp, index)the full classified history
pending()(exists, collapsed, ts, old, new)the unclassified change, if any, including composites

What EXDIV commits to. A keeper that calls sync() and classifies within the poll interval, for every accountant listed on the oracle page, and a guardian that resolves held changes inside the two day timelock. Classification is validated by the contract itself, so a keeper fault can cost gas but cannot move value; the worst case for a consumer is a stale flag, which is exactly what isSynced() reports.

Coverage without capital. An accountant can be deployed for a token that has no EXDIV series, no pools and no vault. That is how the oracle grows: one small contract per stock token, whether or not anyone is splitting it yet.

Ex-date handling

The question a lender asks first is what happens in the window between a corporate action landing and the oracle classifying it, and who carries a liquidation that happened inside it. The answer is that the window is announced in advance and the stale signal has no latency, so a correctly wired market is never open inside it.

MOMENTWHAT THE CHAIN SAYSWHAT A MARKET SHOULD DO
Issuer schedules the actionthe token's newUIMultiplier() and effectiveAt() are set, days ahead; the oracle page shows SCHEDULEDread effectiveAt() and plan the pause; nothing is stale yet
effectiveAt passesthe token's uiMultiplier() flips lazily on the next read; in the same block isSynced() returns false, because it compares the live multiplier to the last classified one every time it is calledno liquidations, no new borrows, no withdrawals of that collateral while isSynced() is false
Keeper classifiesa checkpoint is written; the contract itself rejects any tag outside the bands, so a dividend cannot be recorded as a split or the reverse; isSynced() returns truefor a dividend, resume; for a split, resume once the price feed reflects the new share count
Change fits neither bandonly the guardian can resolve it, through the timelock below; isSynced() stays false throughoutstay paused; the clock is public

There is no block in which the oracle reports synced while the multiplier has moved. isSynced() is not a flag a keeper sets; it is a view that reads the token live, so the stale signal is atomic with the change itself. The only thing with latency is the classification, and classification does not change collateral value: rawBalance × feed with a token-priced feed, or rawBalance × uiMultiplier() × pricePerShare with a per-share one, is already correct. What classification tells a market is whether its price feed is about to move by the split ratio, which is why a split waits on the feed and a dividend does not.

Liability, plainly: the oracle is free infrastructure with no service agreement, and EXDIV does not underwrite positions on markets it does not run. What EXDIV gives an integrator is a design in which acting on stale data requires ignoring a signal that is available in the same block, plus the dates of every window in advance. A market that wires isSynced() into its pause has no liquidations inside the window to argue over.

The dispute path

  1. Automatic path. Growth between 0 and 3% is a dividend. A clean small-integer ratio at least 20% away from 1 is a split. The bands cannot overlap, the contract checks this at construction, and the contract rejects any tag outside them. A keeper cannot misclassify; it can only be late.
  2. Anything else is held. A special dividend above the band, an odd ratio, a decrease that is not a reverse split, or two actions landing before the first was classified. None of these can be tagged by the keeper. The guardian proposes an ordered decomposition and its hash is committed on chain with an execution time two days out.
  3. Two days in public. The proposal is readable by anyone before it executes. Holders can exit through merge(), which never depends on the index. The guardian can cancel. Nothing settles and isSynced() stays false until the resolution executes.
  4. The record. Every classification is a checkpoint, readable forever through checkpointAt(i). Every held change emits its proposal and its resolution. Anyone can recompute the whole history from the token's own multiplier and disagree in public with a specific checkpoint.

Accuracy so far. Nine tokens are covered and the record is short. Rather than a percentage that would be made of a handful of events, the record itself is the number: the checkpoint log on each accountant, and the oracle page's last-classified column against each token's own multiplier history. When SGOV's monthly distributions have run for a few months there will be a real series to point at.

10Risks, plainly

NOT INVESTMENT ADVICE. NOT AVAILABLE WHERE ROBINHOOD STOCK TOKENS ARE NOT AVAILABLE.

11Contracts

The audited build (Pashov Audit Group, report), deployed 18 September 2026. Every series matures 31 December 2027 00:00 UTC. Split fee 10 bps, YT yield fee 5%, dividend band ≤3%, split band ≥20%, guardian delay 2 days.

CONTRACTADDRESS
AAPL-DEC27
AAPL Stock Token (issuer)Address hidden
MultiplierAccountantAddress hidden
StripVaultAddress hidden
pAAPL-DEC27Address hidden
yAAPL-DEC27Address hidden
SPY-DEC27
SPY Stock Token (issuer)Address hidden
MultiplierAccountantAddress hidden
StripVaultAddress hidden
pSPY-DEC27Address hidden
ySPY-DEC27Address hidden
QQQ-DEC27
QQQ Stock Token (issuer)Address hidden
MultiplierAccountantAddress hidden
StripVaultAddress hidden
pQQQ-DEC27Address hidden
yQQQ-DEC27Address hidden
PFE-DEC27
PFE Stock Token (issuer)Address hidden
MultiplierAccountantAddress hidden
StripVaultAddress hidden
pPFE-DEC27Address hidden
yPFE-DEC27Address hidden
SGOV-DEC27 — deployed, pools seeded after its first classified dividend
SGOV Stock Token (issuer)Address hidden
MultiplierAccountantAddress hidden
StripVaultAddress hidden
pSGOV-DEC27Address hidden
ySGOV-DEC27Address hidden
Oracle-only accountants (no series)
SCHD accountantAddress hidden
NVDA accountantAddress hidden
MSFT accountantAddress hidden
JNJ accountantAddress hidden

Previous series (launch build, September 2026)

The series from launch day keep running to their own maturities. Merge is open on them at any time; settle and redeem after maturity. Open one in the terminal with ?series=spy-mar27, aapl-mar27, qqq-mar27 or pfe-mar28. They are not the audited build.

SERIESADDRESSES
AAPL-MAR27accountant Address hidden · vault Address hidden · PT Address hidden · YT Address hidden
SPY-MAR27accountant Address hidden · vault Address hidden · PT Address hidden · YT Address hidden
QQQ-MAR27accountant Address hidden · vault Address hidden · PT Address hidden · YT Address hidden
PFE-MAR28accountant Address hidden · vault Address hidden · PT Address hidden · YT Address hidden

Contract source is verified on the block explorer at the addresses above.

Licence

The contracts are published under the Business Source License 1.1 (the SPDX-License-Identifier: BUSL-1.1 header on every verified source). Licensor: AURORA. Licensed work: the StripVault, PYToken, MultiplierAccountant and AuroraMorphoOracle contracts as deployed on Robinhood Chain. Additional use grant: any use that does not deploy the contracts, or a modified version of them, as a competing production protocol. Reading, auditing, testing, integrating with and building on the deployed contracts is permitted. Change date: 18 September 2029, after which the change licence is GPL-2.0-or-later.