The three tokens
Investors Center has exactly three protocol tokens. You can hold any of them, and you can move between them at any time.
| Token | Role | Decimals |
|---|---|---|
| INVEST | The native token. Minted only against treasury value; a plain ERC-20 that moves exactly what was sent. | 9 |
| SHARES | Staked INVEST — rebasing (sOHM mechanics). | 9 |
| gINVEST | Governance INVEST (gOHM mechanics) — a non-rebasing ERC20Votes wrapper on a timestamp clock. | 18 |
The ERC-20 names are "Investors Center", "Investors Center Shares" and "Governance INVEST" respectively.
INVEST
The base asset. Its supply is not arbitrary: the Treasury is the only minter, and it will only mint against excess reserves — value above what already backs the circulating supply. The two ways new INVEST enters circulation are staking emissions and bond payouts, and both draw on the same excess gate.
INVEST is a plain ERC-20. Every transfer moves exactly what was sent: there is no transfer
hook, no registered-pair key and no exemption list, and sending, holding or receiving INVEST costs
nothing beyond gas. One Transfer event per transfer, for the full amount — nothing an indexer has
to reconcile.
The protocol's revenue comes from the venues instead. The Treasury owns five Uniswap V4 pools — the INVEST/USDG anchor, which holds all of the protocol's cash liquidity, and four one-sided INVEST sell walls quoted in RCAT, WYFI, HIMS and DJT. Each charges 500 bps on the input currency of every swap through it: the pool's other token on a buy, INVEST on a sell. So a buy in the RCAT pool pays the treasury in RCAT. The rate is pinned into each pool's own identity and cannot be changed. See The flywheel.
SHARES
SHARES is staked INVEST with sOHM mechanics: emissions rebase into your balance rather than into a claim. You do not claim rewards; the number in your wallet increases by whatever the epoch emitted.
That amount is zero whenever there are no excess reserves — which is the state the protocol launches in. A rebase with nothing to distribute runs cleanly and pays nothing; your balance is unchanged. See How to stake and the flywheel.
The epoch length is set at genesis and is governor-tunable afterwards within
[10 minutes, 24 hours]. A change applies at the next roll, and the Distributor's per-epoch rate
is rescaled at the same time — so the tokens emitted per unit of time do not depend on the
cadence.
gINVEST
gINVEST is the same value, expressed differently: a non-rebasing wrapper whose index tracks accrued rebases. Your balance stays constant and each token becomes worth more INVEST.
It is also the only voting token. gINVEST is an ERC20Votes token with a timestamp clock (the
Orbit block.number problem again), and a fixed set of protocol-held addresses — the Treasury,
Staking, the bond depository, the redemption module and the Timelock — is excluded from the
supply that quorum is measured against. That exclusion set is fixed in the constructor and cannot be
changed.
Bond payouts vest as gINVEST notes, so bonding is already denominated in the governance token.
Moving between them
- Staking takes INVEST and mints either SHARES or gINVEST — your choice at the time. Minting gINVEST directly means acquiring voting weight never needs a separate wrapping step.
- Wrapping converts SHARES ↔ gINVEST in either direction, at any time.
- Unstaking goes back to INVEST.
Units, everywhere
The decimal mismatch is the single most common integration bug on this chain. Every quote path must normalise explicitly:
| Thing | Decimals |
|---|---|
| INVEST, SHARES | 9 |
| gINVEST | 18 |
| USDG | 6 |
| Tokenized stock / ETF tokens | 18 |
| Chainlink USD feed answers | 8 |
Chainlink exchange-rate feeds (syrup*, wstETH/stETH, weETH/eETH) | 18 |
| Treasury USD valuation | 9 (1e9 == $1.00) |
| Basis points | out of 10_000 |
| Uniswap V4 LP fee unit | 1e6 == 100%, so bps = fee / 100 |