How it works
Every number on this page comes out of the contracts. Where something is an estimate or a known rough edge, it says so.
The growth clock
Each plant stores the timestamp it was minted at. Its stage is derived from how long ago that was — nothing is stored per stage, and no transaction advances it. Stage k begins at:
T(k) = k · (3k + 7) / 2 growth units
One unit is an hour on mainnet, which gives thresholds at 0, 5, 13, 24, 38, 55, and 75 hours. k(3k + 7) is always even, so the division is exact — there is no rounding anywhere in the schedule and no accumulated drift.
| # | Visual · Jade Sprig | Stage | Length | Age at entry |
|---|---|---|---|---|
| 00 | Sprout | 5h | 0h | |
| 01 | Seedling | 8h | 5h | |
| 02 | Vegetative | 11h | 13h | |
| 03 | Budding | 14h | 24h | |
| 04 | Blooming | 17h | 38h | |
| 05 | Fruiting | 20h | 55h | |
| 06 | Mature | — | 75h |
Timing uses block.timestamp, never block.number. On an Arbitrum Orbit chain the block number is an approximation of the L1 block and moves in jumps, which would make a block-based clock visibly wrong. Testnet deploys compress the unit to minutes so the whole curve can be watched in under an hour; the frontend reads the unit from the contract rather than assuming it.
Species and rarity
44 species across 8 botanical families. The counts below are exact, not probabilities — the distribution is fixed by construction, so the collection cannot come out lopsided.
| Tier | Species | Tokens | Share | Base weight |
|---|---|---|---|---|
| Common | 16 | 2,220 | 49.95% | 100 |
| Uncommon | 12 | 1,116 | 25.11% | 130 |
| Rare | 8 | 665 | 14.96% | 175 |
| Epic | 5 | 356 | 8.01% | 250 |
| Legendary | 3 | 87 | 1.96% | 400 |
| Total | 44 | 4,444 | 100% |
Why the counts are exact
Species assignment is a permutation, not a dice roll. Each token's position in the collection is computed as:
rank = (tokenId · 3571) mod 4444
3571 is coprime with 4444 (= 2² · 11 · 101), which makes the mapping bijective: every rank is hit exactly once. The rank is then walked into the cumulative species table, so each species gets precisely its allotted count. No storage is written and no seed is involved.
No reveal, and what that costs
There is no germinating phase and no second transaction. Species is assigned in the mint itself, so a plant is finished art — and stakeable at its real rarity weight — in the block it is bought. That also means the map above is public before a single plant is sold, so specific ids can be sniped by watching totalMinted. The trade is deliberate: in exchange there is no seed to trust, nothing to commit, withhold, swap or time. Removing the snipe would need a randomness beacon this chain does not have.
Succulents & Cacti
Thick cotyledons, no true leaves
Jade Sprig · Barrel Cactus · Living Stone
Ferns
Coiled crozier
Lady Fern · Maidenhair · Staghorn
Grasses & Grains
Single monocot blade
Common Wheat · Black Bamboo · Foxtail Barley
Flowering Herbs
Paired dicot cotyledons
Garden Sage · Chamomile · Corn Poppy
Vines & Climbers
Hooked hypocotyl
English Ivy · Passionflower · Jade Vine
Tropicals & Palms
Furled spear leaf
Parlor Palm · Areca Palm · Monstera
Carnivorous
Miniature rosette
Common Sundew · Venus Flytrap · Tropical Pitcher
Trees & Bonsai
Woody seedling with seed coat
Field Maple · Ginkgo · Pine
Farm weight
tokenWeight = rarityWeight userWeight = Σ tokenWeight userShare = userWeight / totalWeight
That is the whole formula. A plant's weight is its rarity weight — a Legendary is 400, a Common is 100 — and nothing else touches it. Not the growth stage, not how many plants you hold, not how long the position has been open. A plant earns exactly the same in its first hour staked as it does in its last.
Growth still happens: the art and the metadata advance through all seven stages exactly as before. It just does not pay differently. Splitting a position across wallets is likewise neutral — the sum of the parts is the sum of the parts.
If every plant were staked at once, total weight would be 607,255. The rates below are computed against that maximum, which makes them floors — with fewer plants staked the same pool is divided by less weight, so everyone staked earns more.
| Tier | Weight | Per hour | Per day |
|---|---|---|---|
| Common | 100 | 70.44 | 1,690.67 |
| Uncommon | 130 | 91.58 | 2,197.87 |
| Rare | 175 | 123.28 | 2,958.67 |
| Epic | 250 | 176.11 | 4,226.67 |
| Legendary | 400 | 281.78 | 6,762.67 |
$BROKERPLANT per staked plant, assuming all 4,444 plants are staked.
The emission schedule
308,000,000 $BROKERPLANT is released at a flat rate across 30 days — no halving, no epochs, no taper. That works out to 10,266,666.67 a day, or 427,777.78 an hour, split across whatever is staked at the time.
Rewards accrue from a closed-form cumulative emission function evaluated at the current timestamp rather than by looping. It is O(1), it cannot drift, and it stops on its own at exactly 308,000,000 tokens. Emission during windows when nothing was staked is never minted to anyone and stays locked in the farm — the owner cannot sweep the reward token, with no exception and no timelock.
Marketplace refresh
Passive growth has a real consequence: no transaction fires when a plant advances, so marketplaces have nothing to react to and will keep showing a stale image. The contract implements ERC-4906, so a batch metadata update can be emitted at major stage boundaries and metadata can be refreshed manually from OpenSea. This site queries the contract on every load, so what you see here is never behind.