Contracts
Every contract Split's options use on Robinhood Chain (chain id 4663). Values below were read on chain at block 88,582,788 (14 October 2026). Explorer: robinhoodchain.blockscout.com.
Pools can be replaced. The app reads the current set from its market registry (GET https://split.markets/api/markets). Check an address there before sending funds.
Live markets
| Market | Pool (CashSettledPool) | Price feed (Chainlink proxy) | maxStaleness | settleDelay |
|---|---|---|---|---|
| BTC daily | 0x8b71c6a373cba2244473aa780eecd92188abeb4a | 0xa2c5184bF03d373Dc9dE4876eb4Bce595B460251 BTC / USD | 28,800 s (8 h) | 60 s |
| ETH daily | 0xad9fc0d73e907dfe1fa14537e62079d8586485e1 | 0x78F3556b67E17Df817D51Ef5a990cDaF09E8d3A9 ETH / USD | 14,400 s (4 h) | 60 s |
State at the read:
| BTC | ETH | |
|---|---|---|
| Phase | Trading | Trading |
| Epoch | 27 | 29 |
| Maturity | 2026-10-15 00:00 UTC | 2026-10-15 00:00 UTC |
| Free USDG | 3,299.74 | 1,983.38 |
| Committed USDG | 58.04 | 0 |
| Allocation headroom | 2,628.18 | 1,586.71 |
| Bands this epoch | 8 call spreads | 8 call spreads |
Parameters common to every pool
| Getter | Value | Meaning |
|---|---|---|
usdg() | USDG | Collateral and payout token |
pricer() | 0x7cE46DCDC49D0903ce6100dFd0198f5745490714 | Address whose EIP-712 signature the pool accepts for quotes and NAV. Owner can rotate it with setPricer. |
feeBps | 0 | Protocol fee on premium and sell proceeds. Contract maximum is 500. |
maxAllocBps | 8000 | At most 80% of pool value (free + committed USDG) can back open series. |
MAX_STRIKES | 8 | Bands per side per epoch |
twapRounds | 1 | Settlement uses the latest round only |
maxDeviationBps | 1000 | Only applies when twapRounds > 1, so inactive here |
sequencerUptimeFeed | 0x0 | No sequencer check |
requireUniqueNonce | false | Quote nonces are not burned |
owner() | 0x5c97458BC2F8E6EF2336C8B34a713993F78D7d63 | Opens rounds (startEpoch). Can rotate the pricer, fee recipient and owner, change the allocation cap, and toggle nonce burning. Cannot withdraw collateral. |
oracle, maxStaleness, settleDelay, twapRounds, maxDeviationBps and the sequencer settings are immutable. Changing them means deploying a new pool.
Shared contracts
| Contract | Address | Notes |
|---|---|---|
| USDG (Global Dollar) | 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 | 6 decimals. EIP-1967 proxy. |
CashSettledVaultFactory | 0x8b2af014df363b03b2a42C86230Cc25a92784248 | Deploys one vault clone per band |
| Vault implementation | 0x2F69E177FA86B084d6946aB6f48d5940554Af728 | CashSettledVault, cloned with EIP-1167 |
| Leg token implementation | 0xbA04dC1084E52a816882Ff607c1e2c23d3199d6a | ERC-20 leg, cloned twice per band |
Position tokens
Each band is its own CashSettledVault clone with two ERC-20 legs (18 decimals):
- N (
csN, "CashSettled N"): the Up leg. Paysmin(max(S − K, 0), W). - P: the writer leg. Pays
W − N. The app sells it as Down throughbuyDown/sellDown.
A position is identified by the pool, the epoch and the series index (callVaultAt(epoch, id)). New vault and leg addresses are created every epoch. Read them from the pool, not from this page.
Vault getters: strike(), cap(), capPayout() (= W), maturity(), N(), P(), settled(), settlePrice(), intrinsicPerUnit(). Prices and widths are USDG (6 decimals) per 1e18 of the leg, i.e. per one unit of the underlying.
Anyone can call mint(amount) on a vault before maturity: it locks ceil(amount × W / 1e18) USDG and mints amount of both N and P. redeemPair(amount) burns both and returns the USDG.
Current BTC epoch 27 bands (strike to cap, USD):
| # | Vault | Band | Width |
|---|---|---|---|
| 0 | 0xe104…95d1 | 79,360.31 to 81,012.35 | 1,652.04 |
| 1 | 0x824b…367D | 81,012.35 to 82,192.37 | 1,180.03 |
| 2 | 0x293b…95BF | 82,192.37 to 83,035.25 | 842.88 |
| 3 | 0x4B83…1C8F | 83,035.25 to 83,637.30 | 602.05 |
| 4 | 0xCB3F…267E | 83,637.30 to 84,239.35 | 602.05 |
| 5 | 0x0206…6E6b | 84,239.35 to 85,082.23 | 842.88 |
| 6 | 0xE9D5…6dd4 | 85,082.23 to 86,262.25 | 1,180.03 |
| 7 | 0x7030…D54F | 86,262.25 to 87,914.29 | 1,652.04 |
Each band starts at the previous band's cap. Bands are narrowest at the centre.
Price feeds
Both live feeds are Chainlink DualAggregator 1.0.0 behind a proxy, 8 decimals.
| Feed | Proxy | Aggregator | Deviation | Heartbeat |
|---|---|---|---|---|
| BTC / USD | 0xa2c5…0251 | 0xc584…eEC | 0.5% | 24 h |
| ETH / USD | 0x78F3…3A9 | 0x6091…2721 | 0.5% | 24 h |
Deviation threshold and heartbeat are feed configuration and are not readable on chain. The values above match the feeds' round history (getRoundData).
Settlement
- After
epochMaturity + settleDelay, anyone can callcloseEpoch()on the pool. It settles every band, claims the pool's own legs back into free USDG, emitsEpochClosed, and returns the pool to Idle. settle()on each vault readslatestRoundData()once. It requires a positive answer, a complete round (answeredInRound ≥ roundId) andblock.timestamp − updatedAt ≤ maxStaleness. If any check fails it reverts with no state change, and can be called again.- Holders claim with
claimNAndWithdraw(amount, to)(Up) orclaimPAndWithdraw(amount, to)(Down). Both callsettleIfNeeded()first. There is no claim deadline.
Events to index:
| Contract | Events |
|---|---|
| Pool | EpochStarted, BoughtCall, BoughtDown, SoldCall, SoldDown, EpochClosed, Deposit, Redeem, PricerSet, CapSet |
| Vault | Mint, RedeemPair, Settled(settlePrice, intrinsicPerUnit, capPayout), ClaimN, ClaimP, ClaimUsdc |
V2 engine
| Contract | Address | Status |
|---|---|---|
OptionEngineV2 | 0x6340ca58b02113c3c8de99d106c9465d8ffd47fe | Series keyed by a hash of their terms. Permissionless issue(terms, amount) locks full collateral and mints both legs. |
SplitPositions1155 | 0x1f0a2fb44342c3dc43e7461e820c6d025b1f17ef | ERC-1155 positions for the V2 engine |
ExchangeV2 | 0x8e83d989ddb5a1fe3a487c97bea5f02a36ab5766 | Signed-quote exchange for V2 positions |
The V2 engine settles on the last oracle round at or before expiry. It is deployed on Robinhood Chain; the app's markets trade on the V1 pools above.
Other deployed pools
Same CashSettledPool code, no open round: AAPL 0x5853…ee43, ORCL 0xbce8…1480, SPCX 0x6a3f…c020, NVDA 0x60b7…5aec, QQQ 0xd054…cf9c, SPY 0x703a…7c7c, SPY FOMC 0x540c…97c3, DELL 0xcbc2…b73f.
