One mint. No minter.
The entire supply of VERD is created in a single constructor call to one distributor address. After that transaction the token contract has no owner, no mint function, no pause, no blacklist and no upgrade path — so the supply schedule cannot be altered by governance, by us, or by anyone holding a key.
| Property of VERD.sol | Value | What follows from it |
|---|---|---|
| TOTAL_SUPPLY | 1,000,000,000e18 | A constant. Minted once in the constructor, to one distributor address. |
| mint() | does not exist | Not gated, not owner-only, not timelocked. The function is absent from the ABI. |
| owner() | does not exist | VERD is not Ownable. There is no privileged role to compromise or to renounce. |
| pause / blacklist | does not exist | No transfer hook can stop, tax or reverse a transfer. |
| proxy / upgrade path | none | Deployed as a plain contract. The bytecode at the address is the bytecode forever. |
| burn(uint256) | ERC20Burnable | Supply can fall and can never rise. Holders may always exit supply voluntarily. |
| CLOCK_MODE() | "mode=timestamp" | ERC20Votes checkpoints by timestamp, not by block number. See below. |
A project says “fixed supply” and then describes a 36-month staking emission. Those two statements are compatible only if the emission is a distribution — tokens moving out of an allocation that was minted at genesis and has been sitting in a contract ever since. If instead the emission calls mint, the supply is not fixed and the first sentence was marketing.
Ours is the first case, and it is enforced rather than asserted: AccessVault.notifyReward takes tokens by transferFrom and reverts if the stream is not already covered by tokens the contract holds that are neither principal nor a prior reward. It cannot conjure a token, because nothing on this chain can conjure a VERD.
Where the billion sits
Five destinations, each with a contract or a multisig behind it. The distributor address forwards every allocation to its home in the deployment transaction; it does not hold the supply afterwards.
| Allocation | Share | VERD | Held by | Release |
|---|---|---|---|---|
| Liquidity (DEX) | 40% | 400,000,000 | Uniswap pool, paired at launch | In the pool from block one. Nothing to unlock. |
| Staking + Bond Vault incentives | 25% | 250,000,000 | AccessVault.notifyReward | 36 months, decaying curve. A distribution, not an emission. |
| Infrastructure fund | 15% | 150,000,000 | Multisig, public spend report | Spent against nodes, colocation and audits as they are incurred. |
| Team | 15% | 150,000,000 | TeamVesting | 180-day cliff, then 730-day linear. Not revocable. |
| Ecosystem grants | 5% | 50,000,000 | Governance | Released per proposal. Unspent tokens stay unspent. |
| Total | 100% | 1,000,000,000 | equals TOTAL_SUPPLY, 1,000,000,000 VERD | |
TeamVesting has no revoke, no clawback and no accelerate. The beneficiary can be transferred — a multisig has to be able to rotate — and that is the only lever that exists.
A revocable team vest reads as a protection and is the opposite. Whoever holds the revoke key can cancel their own colleagues’ schedule, or their own, and take the tokens back early under whatever pretext. It tells a buyer nothing about how long the team is locked, because the lock is optional for the only party it applies to. The 180-day cliff and 730-day linear schedule here are immutable constructor arguments; the only thing anybody can do about them is wait.
The staking allocation is streamed in periods through notifyReward(amount, duration), each period smaller than the last. Rewards accrue per second while a period runs, and leftovers from an unfinished period roll into the next rate rather than being stranded.
The curve exists because early stakers carry the risk of a product that has not proven its revenue yet, and because a flat emission across three years pays the last cohort the same as the first for a fraction of the exposure. When the allocation is exhausted, staking rewards are whatever the buyback bought that month, and nothing else.
Three things the token is wired to
Each one is a contract call, not a roadmap item.
- AccessVault
Staking unlocks a service tier.
250,000 VERD held for the warmup period unlocks Pro; 2,000,000 unlocks Turbo. The same tiers are purchasable monthly in ETH or USDG, because a product that forces you to hold a token to use it is selling the token, not the product. How staking works →
- FeeRouter
A published share of revenue is routed to buyback, and the bought tokens stream to stakers.
Customers pay for turbo RPC, the feed relay and bundle submission in ETH and USDG. Those payments land on-chain in FeeRouter and are split by the routes below. The buyback share leaves for an executor address; a keeper swaps it and calls notifyReward, so the tokens reach stakers as a stream rather than a lump.
- ERC20Votes
Holders decide when the Bond Vault activates.
Converting depositor WETH into a validator bond is a real power and should not be a key we hold alone. The vote clock is timestamp-based: CLOCK_MODE() returns "mode=timestamp". Robinhood Chain targets a block roughly every 100 ms and we measure a p50 of 76 ms, so a seven-day voting period expressed in blocks is both unreadable and wrong — it is a different length every week, because block production is not a clock. The Bond Vault →
Revenue lands on-chain and is split by published routes
The split is a fixed array of recipients and basis points that anyone can read. distribute() is permissionless — pushing already-committed funds to already-published destinations does not need an access check, and making it permissionless means nobody has to trust us to press the button.
| Route label | bps | Recipient | Note |
|---|---|---|---|
| buyback | 4,000 | buyback executor | A keeper swaps, then calls AccessVault.notifyReward. The swap is not in this contract. |
| infra | 3,500 | infrastructure fund | Nodes, colocation, the L1 gas that anchoring the daily roots costs. |
| treasury | 2,500 | treasury multisig | Absorbs the rounding dust on every distribution, so no residue is stranded. |
These are the routes the deployment script installs at construction. The authority is FeeRouter.routes() read on-chain. Current address: not deployed.
A new split must be proposed, waited out and only then executed. The default delay is 7 days, bounded at 2 days minimum and 30 days maximum, and RoutesProposed is emitted the moment a change is filed — so anybody watching the contract gets the whole delay to react.
The reason is narrow and worth stating: redirecting revenue is the single most valuable thing an attacker could do with a compromised owner key. It steals a stream rather than a balance, and it can go unnoticed for a long time. A timelock does not prevent that, it makes it loud.
A fee router that calls a DEX inline is a fee router with slippage, an oracle dependency and a sandwich surface, and it fails closed on the day that pool has no liquidity. Every one of those is a property of the swap, not of the split, and the split is the part that has to be trustless.
So the buyback share is forwarded to a dedicated executor address and a keeper does the swap separately. The split is on-chain and permissionless; the execution is boring and replaceable.
What VERD is not
These are the four claims adjacent tokens make that we cannot make on this chain.
- 01
It does not buy a place in the queue.
The sequencer orders strictly by arrival and eth_maxPriorityFeePerGas returns 0x0 — there is no fee auction to win. Staking VERD raises your rate limits and removes the feed delay. It moves nothing ahead of anything. The full list →
- 02
It is not the validator bond.
Arbitrum’s BoLD stake is denominated in the rollup’s own stake token, which on this chain is WETH. A bond has to be a thing the protocol already values; a token the bonded party issues is not collateral, it is a promise. The Bond Vault therefore holds WETH, and VERD does not sit behind it.
- 03
It does not carry a yield promise.
Buyback volume is a function of revenue, and revenue is a function of how many people buy latency from us. There is no rate, no APR target and no floor. Before the Bond Vault activates there is no validator income at all, and none is reported.
- 04
It is not required to use the product.
Every tier is purchasable in ETH or USDG at the listed monthly price, and both paths land in the same table. Attestations, the assertion ledger, the daily roots and chain status need no token and no key, ever.