# 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.

Language: English · [中文](https://stocksplit.trade/docs.zh.md) · Source: https://stocksplit.trade/docs.md · For AI agents: https://stocksplit.trade/llms.txt

## 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.

- **Network:** BNB Chain
- **Underlying:** Ondo Global Markets tokens (20 live, 149 dividend-paying assets on the roadmap)
- **Fee:** 0.5% on split / merge / claim — a contract constant that cannot be changed
- **Contracts:** Non-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](https://stocksplit.trade/#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.

- **Name:** Split
- **Ticker:** $SPLIT
- **Network:** BNB Chain
- **Launch:** flap.sh fair launch; graduated from the bonding curve and now trades on PancakeSwap V2
- **Supply:** 1,000,000,000 (flap.sh standard)
- **Contract:** [`0x6b69746ac1ca1881bd88ddb50833adac1da07777`](https://bscscan.com/token/0x6b69746ac1ca1881bd88ddb50833adac1da07777)
- **On flap.sh:** [Token page ↗](https://flap.sh/bnb/0x6b69746ac1ca1881bd88ddb50833adac1da07777) · [Vault (TaxInfo) ↗](https://flap.sh/bnb/0x6b69746ac1ca1881bd88ddb50833adac1da07777/taxinfo?lang=en)
- **Burn:** 0.5% fee on split / merge / claim → swapped to BNB → buys $SPLIT → sent to `0x…dEaD`
- **Tax:** 2% on buys, 2% on sells, 100% routed to the $SPLIT vault
- **Tax split:** 50% buy back & burn $SPLIT · 20% BNCB dividends to holders · 30% team & operations
- **Vault factory:** [`0x6F2ff7452186538345e1E0c9D2f169087928Ce18`](https://bscscan.com/address/0x6F2ff7452186538345e1E0c9D2f169087928Ce18)<br>Approved by Flap
- **Vault:** [`0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0`](https://bscscan.com/address/0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0)

> 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`](https://bscscan.com/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`](https://bscscan.com/address/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 sValue:** Ignored, keeping the high-water mark, so a dip-and-recover is never paid out twice
- **Ondo pause / asset removed:** Only 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

| Contract | Address | Role |
| --- | --- | --- |
| $SPLIT token | [`0x6b69746ac1ca1881bd88ddb50833adac1da07777`](https://bscscan.com/token/0x6b69746ac1ca1881bd88ddb50833adac1da07777) | Community token launched on flap.sh; target of every buyback. |
| StockSplitter | [`0xbf12917A51A9357264Afe369aA14D70b5e00552c`](https://bscscan.com/address/0xbf12917A51A9357264Afe369aA14D70b5e00552c) | Core contract: split, merge and dividend accounting. Holds all deposited stock tokens. |
| StockSplitterFeeLock | [`0x2eC83e31CB39b59893CfA0Bb64823839e415f7eB`](https://bscscan.com/address/0x2eC83e31CB39b59893CfA0Bb64823839e415f7eB) | Owner 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. |
| StockSplitVault | [`0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0`](https://bscscan.com/address/0xfadAb474d9ecb1F7a00BeecDc7F8dea77f7934b0) | Flap tax vault: splits the $SPLIT tax 50 / 20 / 30 and burns tool fees. |
| StockSplitVaultFactory | [`0x6F2ff7452186538345e1E0c9D2f169087928Ce18`](https://bscscan.com/address/0x6F2ff7452186538345e1E0c9D2f169087928Ce18) | Vault factory, reviewed and approved by Flap. Created the $SPLIT tax vault at launch (single use). |
| BuybackBurner | [`0x4725039A0277f88e0d7b2EaFB99a1658f4cB310d`](https://bscscan.com/address/0x4725039A0277f88e0d7b2EaFB99a1658f4cB310d) | Retired. Ran the fee buyback before launch; it no longer receives fees and holds no funds. |

### Price-leg / dividend-leg tokens

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

### External dependencies

| Contract | Address | Purpose |
| --- | --- | --- |
| Ondo SyntheticSharesOracle | [`0xF4Fd8a1B412633e10527454137A29Db7Aa35F15e`](https://bscscan.com/address/0xF4Fd8a1B412633e10527454137A29Db7Aa35F15e) | Ondo's official oracle for the shares-per-token ratio (sValue). Dividends and corporate actions show up here. |
| flap.sh Portal | [`0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De0`](https://bscscan.com/address/0xe2cE6ab80874Fa9Fa2aAE65D277Dd6B8e65C9De0) | Used for buybacks while the token is still on flap's bonding curve. |
| PancakeSwap V3 SwapRouter | [`0x1b81D678ffb9C0263b24A97847620C99d213eB14`](https://bscscan.com/address/0x1b81D678ffb9C0263b24A97847620C99d213eB14) | Swaps fees (stock tokens) to BNB, and buys back the token after it migrates to a DEX. |
| PancakeSwap V2 Router | [`0x10ED43C718714eb63d5aA57B78B54704E256024E`](https://bscscan.com/address/0x10ED43C718714eb63d5aA57B78B54704E256024E) | Used if the token migrates to PancakeSwap V2 (flap tax tokens). |
| WBNB | [`0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c`](https://bscscan.com/address/0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c) | Intermediate asset for buybacks. |
| USDT (BSC) | [`0x55d398326f99059fF775485246999027B3197955`](https://bscscan.com/address/0x55d398326f99059fF775485246999027B3197955) | Intermediate asset on the stock-token swap route. |

## Permissions & security

### Who can do what

| Role | Can | Cannot |
| --- | --- | --- |
| StockSplitter owner (StockSplitterFeeLock) | List new Ondo assets, through its operator or Flap's Guardian | Change where fees are sent; hand over ownership; withdraw or freeze deposited stock tokens; change the 0.5% fee; pause or upgrade the contract |
| Keeper | Call `sync(asset)` after Ondo updates (anyone can) | Touch any funds |
| Team wallet ($SPLIT vault) | Receive the 30% team share; change the team wallet address | Touch 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) | — |
| Anyone | Split, 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`](https://bscscan.com/address/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](https://stocksplit.trade/logo.svg) (logo.svg)
- [Key visual](https://stocksplit.trade/hero.svg) (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.
