Guide 12 · 5 min read · Updated epoch 137

Contracts and addresses

Every deployed contract, verifiable on the explorer.

Every address, on the explorer

The contracts this protocol runs on. Each links to the explorer, because a claim about a contract is only worth what an independent reader can check. These are read from the deployment file the keeper itself loads, not written into this page, so a redeployed contract cannot leave a stale address in the documentation.

$OMNIA token0x7A3F00…00c91e
FluxConfig · governance registry0xC0f100…000001
FluxTreasury · vault, split and liquidity0x21D000…004b7a
FluxHolders · epochs and claims0x9e4400…000F13
FluxStaking · phase twoPhase two; bound once it accepts deposits
Fee adapter · the launch pool's fee recipient0xfee000…00adA7

The stock token addresses

Every stock the protocol can pay out, with its contract address. Check a payout against these: a token that arrives in your wallet is one of exactly these four contracts, and anything else did not come from this protocol. Resolve a stock by its address, never by its name: the block explorer lists impostor tokens that copy the real names.

S&P 500 ETF · SPY0x117cc2…3B4C0C
NVIDIA · NVDA0xd0601C…0D9EEC
Tesla · TSLA0x322F09…003b2d
Alphabet · GOOGL0x2e0847…AD4FE3

The contracts

ContractResponsibility
FluxConfigThe governance registry: owner with a two-step transfer, the keeper as publisher, the bound token and modules, the pause switch and the clock that unlocks recovery after seven days of continuous pause
FluxTreasuryThe ETH vault; the fixed split between holder payouts, liquidity, staking and operations; the provenance ledger that splits only claimed fees; the Chainlink-guarded stock buys and sells through Uniswap v4; epoch funding; the Uniswap v3 liquidity vault with per-market positions and per-asset daily caps; the authority-only emergency exit; the recovery path
FluxHoldersEpochs, Merkle roots, claims and the claimed record; weighted baskets; publish, fund, activate, claim, push, sweep, close. The holding-time weights are computed by the keeper and published in the epoch file; the chain stores their sum as total_shares
StockCatalogThe stock allowlist: each stock with its Chainlink feed, slippage cap and staleness bound, and the guarded path for replacing a feed
FluxStakingPhase 2. The reward stream with checkpointed accounting; written, not activated
Fee adapterThe permanent fee recipient the launch pool's hook pays. Anyone may sweep the accrued ETH from it into the treasury, which measures what arrived

On chain, and off

  • On chain: the split ratios, the allowlist, the basket rules, the funded-before-active rule, the one-claim-per-leaf rule and the expiry floor. Every position NFT and every balance, owned by the treasury contract; no call can transfer or burn a position NFT. Every destination is re-derived from contract state, never passed in by a caller. Two-step ownership, an event on every authority action, deadlines bounded to five minutes ahead.
  • Off chain: the keeper, one process, one cycle every 30 minutes. Claims fees, distributes, buys, snapshots, folds the snapshot into the last 48 epochs' balance tables to weight every holder by holding time, allocates, builds the tree, writes the epoch file, publishes, funds, activates, pushes, sweeps, closes. Every transaction it sends is journaled before it is signed, so a crash mid-cycle resumes rather than repeats.
  • This site: a Next.js server with a hardened read-only RPC proxy (method allowlist, per-client windows, one shared upstream budget, no broadcasting), the proof-file endpoints and the pages. It holds no key.
  • Robinhood Chain is an Arbitrum-based rollup: the chain's own block number is the layer-one block, so the contracts read the rollup block through the ArbSys precompile where a block matters.

The launch sequence

  • The contracts are deployed and bound to each other first, so the fee adapter exists and can receive ETH before anything is launched. Its address is what the launch names as the fee recipient, and that name is written into the hook once and can never be changed, so it is checked twice before the launch call is signed.
  • One degen.zone launch transaction mints the whole supply into the hooked Uniswap v4 pool, registers the fee recipient and opens trading. There is no bonding phase: the pool is tradeable from the launch block.
  • The stock allowlist and the reward roster are filled after each address is checked on chain, by address, never by name. The keeper starts; the first epoch publishes when the first cycle has something to distribute. Protocol pools open one at a time, each gated on depth.
  • The site reads a deployment file and a launch manifest from a mounted volume. Until the manifest says active and names a reviewed release, every page shows the pre-launch state. Flipping to active is a file write plus a chain read; no rebuild.

Source and verification

The contracts, keeper and this site are in one public repository, linked from the footer. Contract addresses are published in the deployment file the site reads. Tests are not an audit.

Contracts and addresses · Omnia