stocksplit Loading

stocksplit docs

Split one share into price & yield

stocksplit is a non-custodial protocol on BNB Chain that splits Ondo tokenized stocks into two tokens you can hold and transfer separately: a price leg that tracks only the stock, and a perpetual dividend leg. These docs cover how it works, where the contracts live, who can do what, and the risks of using it.

Overview

Ondo Global Markets issues hundreds of tokenized US stocks and ETFs on BNB Chain (NVDAon, QQQon and more), each backed by real shares held at a broker. They are total-return tokens: dividends are reinvested automatically, so holders can neither see nor withdraw that yield.

stocksplit keeps it simple:

  • Deposit a stock token and the protocol mints an equal amount of price leg p and dividend leg d at the current share count.
  • Every time Ondo reinvests a dividend, the added value goes entirely to dividend-leg holders, claimable any time.
  • Hold equal amounts of p and d to merge back into the original stock token whenever you like.
  • Every split, merge and claim pays a 0.5% fee, used entirely to buy back and burn $SPLIT.
In one line: p + d = 1 share. Buy p to trade only the price; buy d if you want the cash flow.
NetworkBNB Chain
UnderlyingOndo Global Markets tokens (20 live, 149 dividend-paying assets on the roadmap)
Fee0.5% on split / merge / claim — a contract constant that cannot be changed
ContractsNon-upgradeable, no pause switch, no admin withdrawal function

Core concepts

sValue: shares per token

Ondo's SyntheticSharesOracle records a multiplier sValue for each asset: 1 token = sValue shares. QQQon's sValue is about 1.00335, meaning roughly 0.335% in dividends has been reinvested since listing. Routine dividends nudge sValue up in small steps (Ondo caps each update at 3%); corporate actions like stock splits go through a pause window and then jump.

Price leg p

1 p = the price of 1 share, without future dividends. Its fair value = share price − present value of future dividends, so it trades slightly below the stock — ideal for traders who only want price exposure. p can't be redeemed on its own; its price is set by the market.

Dividend leg d

1 d = all future dividends of 1 share, paid in the underlying stock token and claimable any time. d is freely transferable; dividends accrued before a transfer stay with the sender.

Merging

Equal amounts of p and d can always be merged back into the underlying stock token, which anchors p + d to the stock price.

User guide

  1. Get a stock token. Acquire an Ondo tokenized stock (e.g. NVDAon) through Ondo or on PancakeSwap, plus a little BNB for gas.
  2. Connect your wallet. Click “Connect wallet” in the split tool. MetaMask, OKX Wallet, Binance Web3 Wallet and other browser wallets work; the site switches you to BNB Chain automatically.
  3. Split. Pick an asset and enter an amount. The first time, “Approve” the token, then click “Split”. You'll see the p / d you receive and the fee before confirming.
  4. Hold or trade. p and d are standard BEP-20 tokens — transfer them, trade them on a DEX, or provide liquidity.
  5. Claim dividends. While you hold d, your pending dividends grow with every Ondo reinvestment. Claim them in one click on the “Claim” tab.
  6. Merge. With equal p and d, get the stock token back on the “Merge” tab.

How it's calculated

The protocol tracks just two numbers: tokensPerUnit (stock tokens backing 1 price unit) and accDividendPerUnit (stock tokens accrued per dividend unit).

Split

fee = deposit × 0.5%
units = (deposit − fee) × sValue  (this many p and d each; 1 unit = 1 share)

Dividend accrual

when sValue rises from s₀ to s₁ (≤ 10%):
tokensPerUnit ← tokensPerUnit × s₀ / s₁
dividend per d unit += old tokensPerUnit − new tokensPerUnit

Merge & claim

merge returns = units × tokensPerUnit × (1 − 0.5%)
claim pays = pending dividends × (1 − 0.5%)

Example

Deposit 100 QQQon at sValue = 1.00335: the fee is 0.5 QQQon and you get 99.5 × 1.00335 ≈ 99.83 pQQQon and 99.83 dQQQon. Ondo then reinvests a 0.5% dividend (sValue × 1.005). Those 99.83 d accrue about 99.5 × (1 − 1/1.005) ≈ 0.495 QQQon, while the 99.83 p still track the price of 99.83 QQQ shares.

Every division rounds down, so the contract always holds at least what it owes users — verified by an invariant test over 256,000 random operations.

Fees & buyback

  • Split, merge and claim all pay 0.5%, collected in the stock token. The rate is a contract constant nobody can change.
  • Fees accrue inside StockSplitter; anyone can call flushFees(asset) to push them to the $SPLIT vault (StockSplitVault, see below). So even if the buyback breaks, users can still merge and claim.
  • The vault runs the buyback itself: every hour its heartbeat (run by the Flap Trigger Service) sells one stock token's fees for WBNB through Flap's FlapVaultEx, buys $SPLIT on PancakeSwap and sends it to the dead address 0x…dEaD. No keeper picks routes or timing.
  • Each buyback is capped at a small share of pool depth (0.25% of the PancakeSwap WBNB reserve, at most 1 BNB per run), which makes front-running it unprofitable. A large balance is spent over many hours.
  • The fee recipient is locked: since launch, StockSplitter has been owned by StockSplitterFeeLock, which has no way to change it.
  • Total burned is live on the homepage and via totalBurned() on the vault.
  • Before launch, fees went to BuybackBurner, run by a keeper. It is retired: it receives no fees and holds no funds.

$SPLIT token

$SPLIT (Split) is the community token of stocksplit, fair-launched on flap.sh as a Flap tax token. It represents no equity or claim on the protocol. Its links to the protocol: every tool fee is used to buy $SPLIT on the open market and burn it forever, and the $SPLIT trading tax is split between more buybacks, BNCB dividends for holders, and the team.

NameSplit
Ticker$SPLIT
NetworkBNB Chain
Launchflap.sh fair launch; graduated from the bonding curve and now trades on PancakeSwap V2
Supply1,000,000,000 (flap.sh standard)
Contract0x6b69746ac1ca1881bd88ddb50833adac1da07777
On flap.shToken page ↗ · Vault (TaxInfo) ↗
Burn0.5% fee on split / merge / claim → swapped to BNB → buys $SPLIT → sent to 0x…dEaD
Tax2% on buys, 2% on sells, 100% routed to the $SPLIT vault
Tax split50% buy back & burn $SPLIT · 20% BNCB dividends to holders · 30% team & operations
Vault factory0x6F2ff7452186538345e1E0c9D2f169087928Ce18
Approved by Flap
Vault0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0
The only official $SPLIT is the CA shown here and in the navigation bar. Any other contract using the name is not ours.

Tax & the vault

$SPLIT is a Flap tax token with its own vault. Every buy pays 2% and every sell 2%; Flap sends the tax (after its protocol share) to our vault contract, StockSplitVault, which splits it by fixed shares of all tax ever received:

  • 50% buyback & burn — joins the tool fees in the same buyback: $SPLIT is bought on flap's bonding curve (PancakeSwap after migration) and sent to 0x…dEaD. Each buyback is capped at a small share of pool depth, which makes front-running it unprofitable in our tests.
  • 20% BNCB dividends — swapped into BNCB (CEA Industries' securities token, 0x4902C5ebc598265Ed2212b559B042De8a5Eeec3f) through FlapVaultEx and deposited into $SPLIT's own Flap Dividend contract as soon as the swap settles (at most 1 BNB per purchase).
  • 30% team — paid in BNB to the team wallet 0x2355C95531bA2826a32D52f3946960268b0d5b5f; it funds development and operations.

The shares are fixed in the vault contract and can't be changed. The vault runs itself: every hour the Flap Trigger Service executes its heartbeat — one capped buyback, one BNCB purchase and the dividend deposit — and the heartbeat books the next run for as long as there is work (buyback funds of at least 0.1 BNB, or dividends to buy or deposit). If it ever stops, anyone can restart it with kick(). Money can only go where its share says. Upgrades are reserved to Flap's Guardian.

Claiming BNCB dividends

  • Just hold $SPLIT in your wallet — no staking. Each deposit is shared pro rata among everyone holding $SPLIT at that moment.
  • Liquidity pools, the burn address and Flap's own contracts are excluded, so $SPLIT in a DEX pool earns nothing.
  • Claim through the Flap Dividend contract (withdrawDividendsFor(your address), callable by anyone for you). You receive real BNCB.
  • You only earn deposits made while you hold; buying after a deposit doesn't earn it retroactively.

Corporate actions

Stock splits and reverse splits also change sValue, but they shouldn't count as dividends. The rules:

sValue up ≤ 10%Treated as a dividend; the added value goes to the dividend leg
sValue up > 10%Treated as a split; neither leg changes (1 p becomes N post-split shares, same value)
sValue down > 10%Treated as a reverse split; neither leg changes
Small dip in sValueIgnored, keeping the high-water mark, so a dip-and-recover is never paid out twice
Ondo pause / asset removedOnly new splits pause; merging, claiming and transfers always work

To keep dividends and splits from landing in the same update, the keeper calls the permissionless sync(asset) after every Ondo update.

Contract addresses

All addresses are on BNB Chain. Click any address to view source and transactions on the block explorer. Only interact with the addresses listed here — beware of impersonators.

Protocol contracts

ContractAddressRole
$SPLIT token0x6b69746ac1ca1881bd88ddb50833adac1da07777Community token launched on flap.sh; target of every buyback.
StockSplitter0xbf12917A51A9357264Afe369aA14D70b5e00552cCore contract: split, merge and dividend accounting. Holds all deposited stock tokens.
StockSplitterFeeLock0x2eC83e31CB39b59893CfA0Bb64823839e415f7eBOwner of StockSplitter since launch. It can only list new assets; it has no way to change the fee recipient or hand over ownership, so tool fees stay locked to the vault.
StockSplitVault0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0Flap tax vault: splits the $SPLIT tax 50 / 20 / 30 and burns tool fees.
StockSplitVaultFactory0x6F2ff7452186538345e1E0c9D2f169087928Ce18Vault factory, reviewed and approved by Flap. Created the $SPLIT tax vault at launch (single use).
BuybackBurner0x4725039A0277f88e0d7b2EaFB99a1658f4cB310dRetired. Ran the fee buyback before launch; it no longer receives fees and holds no funds.

Price-leg / dividend-leg tokens

UnderlyingPrice leg pDividend leg d
NVDAon
0xA9eE28C80f960B889dFbd1902055218cBa016F75
pNVDAon
0x84AF8BF0F75b64172B961d26dbed7C0d0A9Bc41a
dNVDAon
0x952C44840887f7cb122786Df8D09b5F39E217A4D
QQQon
0x0cdE6936d305d5B34667fC46425E852efd73559a
pQQQon
0xFE288A2b87798DDa9B48B7D2Ec98F95059962492
dQQQon
0xE5386b760916af62Be924e06F0a18E3EaE7a25Ad
SPYon
0x6a708EAD771238919D85930b5a0f10454E1C331a
pSPYon
0x8bAaE2a551f721f3b57E6c03CD4381B52A04000d
dSPYon
0x6663a15Cdccf7583C06F4F338404A9CFb621FB9A
AAPLon
0x390a684EF9cADE28A7AD0DFa61AB1Eb3842618c4
pAAPLon
0x885Bf83AC98be9aa3dd5B334A88D11F927466F37
dAAPLon
0xb171866715a158E8Eab4cA5e9f37Dd352D9a7717
MSFTon
0x6Bfe75D1ad432050eA973C3A3DcD88F02e2444C3
pMSFTon
0xd719bcaA9b32C023A57C8c7F9e01143C7d808a42
dMSFTon
0x7C0AB181e68f56Fa93B1DdaA74d53de935cCEc87
GOOGLon
0x091FC7778e6932d4009B087B191D1EE3bac5729A
pGOOGLon
0xd94650352C54DC0ed4Be1a1D06A61cc65F296AFc
dGOOGLon
0xD81d136d1c8Bbb42E639774c1391674601f8F042
TQQQon
0xe42CfB20e00912409B77A602B5BDcfF3c7aCC5F4
pTQQQon
0xc9a29065818C699C9AEf621B963306f713A8B155
dTQQQon
0x6d38e57951e711c1CCc5bB423BCDA984C2cD53e0
JDon
0xE92bE960aE64F6a914Ca77014CaC9E56DE7f36C1
pJDon
0x1BD1AC41d450D8b22B4B461440cc7dEdc7D0217c
dJDon
0x6534CF38FbFf5F31655EFd5778f82BEC78099CFc
AVGOon
0x0ED2E3180EDf393e6bf8Db124bD15DDD54dE150A
pAVGOon
0x31d7c3333Dbc0Dc22e0C2ec257bbA1821A5c8D92
dAVGOon
0x5d2808C20998A4A4F1CfD449c7886453898e0811
SGOVon
0xc008c5F579ec1450F20099c39F587547e27c7523
pSGOVon
0xdD3668776Dd73875f6DAAcCfa576CAf7ea6b9828
dSGOVon
0xE22343EcBC17AC7FBE8705E8945D3f06935bd2d0
FXIon
0x9b8E987e6fEc8Cf1380C4dcA7071e2C7853AEEA1
pFXIon
0x2e491C58A329e6aB0BAdEb6CC16febd308cA0630
dFXIon
0x4451e0a247f2536Eb3E01d49a008130DD6dCCEAE
MRVLon
0x1501EC83FFEf405B4331CC4f73277a40fb0C627d
pMRVLon
0x2F05f98bd3DAe0ED1e3f8D164075e51180a6ab25
dMRVLon
0xdf643058b0a61Cb3f7cC974e5e79A57B6d36B8C0
ORCLon
0x03E4bd1Ea53f1da84513da0319D1f03dD1BBCf93
pORCLon
0x42c0FD8e12DEcA11cae2302Ba4563CB4ca249F1A
dORCLon
0xddD96E8Da7574Cdfcf629a09d7Fd1F28FcA9dfCC
MUon
0x8b6ACf6041A81567f012Ff6A4C6D96d5818d74bF
pMUon
0x2cB32728793FD16cB1270AAbE05F7B2B34EA3012
dMUon
0x4C18dfF45088A4864b7bC03b5859A98cd53f9267
QCOMon
0xfBD4D681C92ead6Af0E49950c8B2e47EeAcbB2dB
pQCOMon
0x72907F59Ba7079CBA2d3c9FdB6788FFb1df6Fc81
dQCOMon
0x48214AeF74582909D63c219A7038B8B07aa2578c
BABAon
0xd5964f3fcee8D649995AB88F04b8982539c282D2
pBABAon
0x1B6a622CD58c64a4033D51917dF8F8f04c334365
dBABAon
0xF2F125a9B3F47F89Ae35a85d52463a1E38e47cCE
TSMon
0xC37042A7a4fa510D8884a433762aB87257B91965
pTSMon
0x26C78c18946839D07FDaB059Dea7bd3B1a92A278
dTSMon
0x7e4eDe6aA2564303C6a60dE4575A96bd29b7E5f0
SQQQon
0x17515B68378d86C38F394c666e79907dA05dcBA9
pSQQQon
0xD69Bc45d1bAEe90C1BB8306D910e3b03bf4b7504
dSQQQon
0x18EBBc32340b7A334562e41BA70e57a7b9F17D18
NVOon
0x08a513779f46FFb7A34F16094a94016d010128a8
pNVOon
0xa0B6AF31C2C4b6874609fe27Af614e45f2c9aE74
dNVOon
0x191BD24F5886746753A2C1F0FfBfE91c96c9Be82
NKEon
0x04b5E199F2eC84f78B111035F57b16BeE448dB6F
pNKEon
0xAA06153Aa2f3b7ea31Eb78042894c2495FD8e0e0
dNKEon
0x6c7EBa5fD681da432367639BF04a39ff80960839

External dependencies

ContractAddressPurpose
Ondo SyntheticSharesOracle0xF4Fd8a1B412633e10527454137A29Db7Aa35F15eOndo's official oracle for the shares-per-token ratio (sValue). Dividends and corporate actions show up here.
flap.sh Portal0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De0Used for buybacks while the token is still on flap's bonding curve.
PancakeSwap V3 SwapRouter0x1b81D678ffb9C0263b24A97847620C99d213eB14Swaps fees (stock tokens) to BNB, and buys back the token after it migrates to a DEX.
PancakeSwap V2 Router0x10ED43C718714eb63d5aA57B78B54704E256024EUsed if the token migrates to PancakeSwap V2 (flap tax tokens).
WBNB0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095cIntermediate asset for buybacks.
USDT (BSC)0x55d398326f99059fF775485246999027B3197955Intermediate asset on the stock-token swap route.

Permissions & security

Who can do what

RoleCanCannot
StockSplitter owner (StockSplitterFeeLock)List new Ondo assets, through its operator or Flap's GuardianChange where fees are sent; hand over ownership; withdraw or freeze deposited stock tokens; change the 0.5% fee; pause or upgrade the contract
KeeperCall sync(asset) after Ondo updates (anyone can)Touch any funds
Team wallet ($SPLIT vault)Receive the 30% team share; change the team wallet addressTouch buyback or dividend money; change any share or parameter
Flap Guardian ($SPLIT vault)Backup buyback; manual dividend deposit (normally automatic); repair the team wallet; if BNCB becomes unusable, move the dividend reserve into the buyback; upgrade the vault (Flap's safety net)—
AnyoneSplit, merge, claim; call sync and flushFees; restart the vault's heartbeat with kick(); after 12 hours without a heartbeat, push a capped buyback (fallbackBuyback)—
Fee trust assumptions, removed at launch. Before the $SPLIT launch, ① a keeper chose BuybackBurner's route and minimum output, and ② the StockSplitter owner could change the fee recipient. Both only ever affected fees, never user deposits, and neither applies any more: tool fees go to the $SPLIT vault, whose buybacks run through Flap's Trigger Service with on-chain depth caps (no keeper routing), and StockSplitter is owned by StockSplitterFeeLock (0x2eC83e31CB39b59893CfA0Bb64823839e415f7eB), which can only list new assets and has no way to change the fee recipient (isLocked() returns true). The fees stay locked to the vault for good.

Testing & review

  • 30 unit tests covering split, merge, dividends, transfer settlement, corporate actions, oracle pauses and asset removal.
  • Invariant test: 256,000 random operations verify the contract always holds ≥ what it owes every user, and that p and d supplies always match.
  • BSC mainnet fork tests: the full flow runs against real NVDAon / QQQon, the Ondo oracle, PancakeSwap and the flap Portal; all 149 roadmap assets were verified listable.
  • One independent code review completed; its findings (fees blocking exits, oracle dips misread as dividends, and more) were fixed with added tests.

Risk disclosure

  • Smart-contract risk: the contracts may contain unknown bugs.
  • Underlying-asset risk: Ondo can pause its tokens or blocklist addresses; if StockSplitter is blocklisted, deposited assets are frozen.
  • Oracle risk: dividend accounting depends on Ondo's sValue; corporate actions are detected with a ±10% rule that can misclassify edge cases (e.g. a special dividend above 10% goes to the price leg).
  • Liquidity risk: p and d prices are set by the market and may be hard to sell at a fair price without liquidity. p cannot be redeemed alone.
  • Market risk: share prices and dividends fluctuate; past dividends don't guarantee future yield.
  • Token risk: $SPLIT is a meme token. It carries no ownership or claim on the protocol, and its price can go to zero.
  • Dividend risk: $SPLIT dividends depend on trading volume and are not guaranteed. BNCB is bought through Flap's FlapVaultEx executor; if a purchase can't be filled, the BNB stays reserved for dividends until it can. BNCB is an issuer-controlled securities token: its issuer can pause transfers, change its compliance rules or upgrade its contract. While BNCB can't be bought or deposited, dividends pause and the money waits in the vault; Flap's Guardian can move that reserve into the $SPLIT buyback instead — it can never be paid to any wallet.

FAQ

Why is the price leg cheaper than the stock?

Because it gives up all future dividends. In theory p = share price − present value of future dividends; the higher the dividend, the wider the gap.

Can I redeem just the price leg?

No. It's a perpetual design: only equal p + d can be merged back into the stock token, which keeps the dividend leg's income fully backed.

How often are dividends paid?

Whenever Ondo reinvests them — usually following the stock's payout schedule (quarterly or monthly). Once reinvested, they show up in your pending balance, claimable any time.

If I transfer my dividend leg, who gets the earlier dividends?

You do. Transfers settle both sides' pending dividends first; only dividends after the transfer go to the new holder.

What happens on a stock split?

A split isn't a dividend. Your p and d balances stay the same; 1 unit simply maps to N post-split shares, at the same value.

Do I need KYC?

stocksplit is a permissionless contract and collects no personal data. Holding Ondo tokens is subject to Ondo's terms — check your own eligibility.

Where do the fees go?

All of them buy back $SPLIT on-chain and send it to the dead address. You can check every buyback on the $SPLIT vault (StockSplitVault) contract or its flap.sh vault page.

Brand kit

  • Logo (logo.svg)
  • Key visual (hero.svg)
  • Cream #FFF5EF · Ink #000000 · Blue #0028FF · Orange #FF5A00

The logo: one share (the circle) cut in two — black is the price leg, blue with the star is the dividend leg.