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; carries the 500 bps tax on pool trades. | 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 carries an immutable 500 bps transfer tax, but only on transfers that touch a registered pair address. A wallet-to-wallet transfer is free. Buys (pair → wallet), sells (wallet → pair) and router-mediated liquidity adds/removes are all taxed — the router is deliberately not exempt.
Two mechanical details worth knowing:
- A taxed move executes as two real sub-transfers (
from → taxCollectorfor the fee, thenfrom → tofor the remainder) plus aTaxPaidevent. So "received plus taxed" always equals "sent", and any tool summingTransferevents must process both legs. - A transfer of fewer than 20 base units rounds the fee to zero and is untaxed.
SHARES
SHARES is staked INVEST with sOHM mechanics: your balance grows every epoch as emissions rebase in. You do not claim rewards; the number in your wallet increases.
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 |