CollectibleTrust Β· DAO LLC Β· Dinosaur Vault Protocol
The definitive reference for minting, evolving, battling, and thriving in the DINO ecosystem.
- What Is DINO Vault?
- Getting Started
- Minting Your Dinosaur β The Commit-Reveal Process
- The Five Biomes β Lore, History and Bonuses
- All 28 Traits Explained
- Rarity System β Genus Groups and Scarcity Scores
- The Aging System β Your Dinosaur Evolves Over Time
- Trait Mutation β Changing Your Dinosaur's Anatomy
- Cybernetic Grafting β Alloy Finishes via Uniswap V4
- The 2015 Collectible Coin Badges
- TWAP Aura β The Living Market Indicator
- PvP Battle Arena
- Inter-Biome Battle Advantage
- Biome Migration
- Leaderboard and Volume Tracking
- Achievement Badges β Soulbound Proof of Legend
- Biome Loyalty Streaks
- Liquidity Provider Features
- Extinction Events β Survive or Be Fossilized
- Conservation Pledge β The Aye-Aye Fund
- Adaptive Contrast System β How the Art Stays Readable
- Wrapped DINO ERC-20 β The Protocol Token
- On-Chain Art β What You Are Actually Seeing
- Marketplace and Rarity Tools
- Frequently Asked Questions
- Quick Reference β All Trait Values
DINO Vault is a fully on-chain, upgradeable NFT collection of 24 dinosaur genera living across 5 distinct biomes, each tied to a specific Uniswap V4 liquidity pool with real historical lore. Every DINO is:
- Born with fair randomness β a two-step commit-reveal scheme prevents any miner, validator, or front-runner from predicting or manipulating traits before you reveal.
- Rendered entirely on-chain β the SVG art and JSON metadata live inside the blockchain itself. No IPFS, no server, no single point of failure. Your DINO looks exactly as designed forever.
- Genuinely evolving β traits change visually based on how long you hold, what you do on-chain, and what happens in the wider DINO economy.
- Grounded in real 2015 history β each biome corresponds to a specific 2015 Ethereum token with documented historical significance. The lore is real.
| Contract | Role |
|---|---|
DinosaurVault |
ERC-721 NFT vault β minting, mutation, aging, biome logic |
DinosaurArtEngine |
On-chain SVG + JSON metadata renderer |
DinoStructures |
Shared type library β all enums, structs, traits |
DinoSwapHook |
V4 hook β graft, battle, leaderboard, TWAP |
DinoLiquidityManagerHook |
V4 hook β LP gating, loyalty, conservation |
DinoPoolRegistryHook |
V4 hook β biome assignment on pool creation |
DinoBattleArena |
PvP battles settled by Chainlink VRF v2.5 |
DinoAchievements |
Soulbound ERC-1155 milestone badges |
DinoExtinctionTracker |
Epoch survival tracking, Merkle-proof extinction |
DinoLeaderboard |
Swap volume accumulator |
WrappedDinero |
ERC-20 DINO token (symbol: DINO) wrapping legacy Dinero 2015 |
- An Ethereum wallet (MetaMask, Rabby, Coinbase Wallet, or any EIP-1193 compatible wallet)
- ETH for gas fees
- 0.005 ETH incubation fee (mint fee)
- 0.002 ETH per trait mutation (optional, post-mint)
To mint a DINO you must specify which Uniswap V4 pool you are minting into. This permanently assigns your biome. The five launch pools are:
| Pool | Biome | Symbol |
|---|---|---|
| DINO/ETH | The Primordial Forge | π |
| DINO/USDC | The Crystal Vault | π |
| DINO/CC | The Frontier Ruins | π |
| DINO/WMC | The Standard Origin | βοΈ |
| DINO/WAAC | The Nocturnal Wilds | π¦ |
DINO Vault uses a two-step commit-reveal minting process. This is not a single transaction β it is a deliberate two-block design that guarantees manipulation-resistant randomness.
If minting used a single transaction, a validator could see your transaction in the mempool and delay it until a block where the randomness gives them a desirable NFT. The commit-reveal scheme prevents this entirely.
- Choose a secret random number as your seed. Keep it private.
- Compute the commit hash off-chain:
Most front-ends do this automatically and store the seed in your browser.commitHash = keccak256(abi.encodePacked(yourSeed, yourWalletAddress)) - Call
commitSeed(commitHash)onDinosaurVault. Gas cost only β no ETH fee. - Note the block number. You have at most 256 blocks (~51 minutes at 12s/block) to reveal before your commit expires.
- In a different block than your commit (at least 1 block later, at most 256 blocks later), call:
revealAndIncubate(yourSeed, poolId)yourSeedβ the exact number from Step 1poolIdβ the bytes32 ID of the V4 pool whose biome you want
- Attach exactly 0.005 ETH.
- Your DINO is minted with traits derived from
keccak256(seed, block.prevrandao, tokenId).
| Biome | Automatic bonus |
|---|---|
| Primordial Forge (DINO/ETH) | +5% on top-tier rarity roll |
| Crystal Vault (DINO/USDC) | 2Γ chance of TRANSPARENT finish |
| Frontier Ruins (DINO/CC) | CC badge guaranteed |
| Standard Origin (DINO/WMC) | WMC badge guaranteed |
| Nocturnal Wilds (DINO/WAAC) | WAAC badge guaranteed; COMPOUND eyes minimum |
If your wallet holds at least 1 legacy Dinero 2015 token at the moment of revealAndIncubate, your DINO automatically receives the DINO badge β no extra action required.
Call commitSeed again with a fresh hash. The old commit is worthless once 256 blocks have passed.
Each biome is permanently assigned at mint based on your chosen pool. The biome determines your SVG background, certain trait probabilities, guaranteed badges, and battle advantages. It is the single most consequential permanent choice in the protocol.
Lore: The genesis pool. ETH is not merely a token β it is the lifeblood of Ethereum itself, born when the genesis block was mined on July 30, 2015, the day the EVM first breathed. This is the origin of all blockchain. DINOs born here carry the mark of the first flame. The lava beneath them is the very code that created everything.
SVG: Near-black red background with a radial ember glow at the centre. Animated lava sparks drift upward from the base β always present, always moving.
Bonuses:
- Genesis rarity uplift β the top-tier rarity roll threshold is reduced by 5 points. A Theropod normally needs roll β₯ 980 for PLASMA_GLOW; Forge DINOs need only β₯ 975. This is the best pool for chasing legendary finishes.
- Epoch grace β Forge holders receive one free epoch survival per calendar year. The DAO excludes Forge wallets from the extinction Merkle root for one epoch per year automatically.
- Lava spark animation β unique animated SVG layer not present in any other biome.
Adaptive rim light: Amber #ffdd88 β warm volcanic glow applied to dark body finishes.
LP gate: Must hold β₯ 0.1 ETH at time of LP deposit.
Lore: Stable, precise, unwavering. USDC represents Ethereum's maturation from an experimental network into genuine financial infrastructure. DINOs born here are carved from crystal: cold, geometric, perfectly preserved. The Vault aesthetic reflects USDC's role as Ethereum's bedrock of stability β the pool that never crashes, never moons.
SVG: Deep blue-black background with geometric crystal formations rising from the bottom and cold white light shafts descending from above. No animation β deliberate stillness.
Bonuses:
- Transparent finish bonus β DINOs in the Crystal Vault have a 2Γ increased probability of rolling TRANSPARENT finish (the rarest ghost-like aesthetic). TRANSPARENT normally occupies approximately 5% of outcomes; Crystal Vault pushes it to ~10%.
- No extinction grace β Stability demands consistent engagement. Crystal Vault holders receive no epoch grace at all.
Adaptive rim light: Ice blue #aaddff.
LP gate: Must deposit β₯ $100 USDC-equivalent.
Lore: CurrencyCoin was deployed just 40 days after Ethereum's launch, making it a verifiable relic from the earliest "Frontier" era. The EIP-20 proposal officially cites its source repository as a direct building block to the ERC-20 standard. DINOs born here are archaeologists. They walk among ruins of the first smart contracts, where Vitalik's original currency.sol commits still echo in the bytecode.
SVG: Dark purple-black background with broken stone arches on either side. Ancient Ethereum bytecode etched into the walls in faint purple monospace text: 60806040526004361061003f..., function transfer(address to, uint256 value). A floor-level ground layer separates the ruins from the sky.
Bonuses:
- CC badge guaranteed β every DINO born in the Frontier Ruins receives the CC (CurrencyCoin) badge regardless of their rarity roll. You cannot mint here without earning this badge.
- Fossil acceleration β when a Frontier Ruins DINO is marked extinct, it is eligible for the Fossilized state in 90 days rather than 180. The ruins accelerate decay into permanence.
Adaptive rim light: Violet #cc88ff.
LP gate: Must hold β₯ 1 CC token at time of LP deposit.
Lore: MistCoin was deployed on November 3, 2015 by Fabian Vogelsteller and Alex Van de Sande as a prototype to test the concept of standardised token creation. Sixteen days later, Vitalik Buterin and Fabian proposed the ERC-20 standard. Every standard token on Ethereum β USDC, UNI, LINK, and billions more β traces back to this code. WMC liquidity is locked until November 3, 2115. DINOs born here inherit the standard.
SVG: Dark blueprint-blue background covered with a precise orthogonal grid of thin lines. Schematic annotation lines point to body parts with labels: "ERC-20 origin", "balanceOf()". The aesthetic is an architectural blueprint β the schematic that built everything.
Bonuses:
- WMC badge guaranteed β every DINO born here receives the WMC (Wrapped MistCoin) badge automatically.
- 25% mutation discount β tail and mouth mutations cost 25% less for Standard Origin DINOs. The fee is calculated as
mutationFee Γ 75 / 100. Fabian's standard was about reducing barriers to participation. - Centennial LP prestige β LP badges in this pool display a "Centennial LP" variant in the achievement system, honouring the 100-year liquidity lock.
Adaptive rim light: Teal #44ffee.
LP gate: Must hold β₯ 1 WMC token at time of LP deposit.
Lore: AyeAyeCoin was the first memecoin on Ethereum, deployed on August 20, 2015 β just three weeks after Ethereum's launch. Named for the aye-aye, a rare nocturnal lemur from Madagascar with enormous eyes and a long middle finger, its entire supply of 6 million coins sat dormant in a faucet for nearly nine years. On May 26, 2024, a rediscovery post ignited a rush that over three days made the faucet contract one of the biggest gas consumers on Ethereum. DINOs born here are survivors. They waited in the dark for nine years before the jungle found them.
SVG: Near-black green background with a dark canopy silhouette along the top edge. Two pairs of amber aye-aye eyes watch from the far-left and far-right shadows at low opacity β always present, always watching. Five animated bioluminescent firefly particles pulse in and out across the scene at randomised intervals.
Bonuses:
- WAAC badge guaranteed β every DINO born here receives the WAAC (Wrapped AyeAyeCoin) badge automatically.
- COMPOUND eyes minimum β the aye-aye is famous for its enormous eyes. All Nocturnal Wilds DINOs are born with at least COMPOUND eyes (rolls of ROUND or SLIT_PUPIL are automatically upgraded). GLOWING_RED eyes are 3Γ more likely.
- 9-Year Sleeper β Nocturnal Wilds DINOs reach CHRONO_TITAN age bracket after 9 continuous years of holding in the same wallet, not the standard 1 year. This is the only CHRONO_TITAN path that honours the aye-aye's legendary 9-year dormancy. At 9 years, the SVG gains additional visual markers matching the discovery moment.
- Animated fireflies β five unique bioluminescent particle animations not present in any other biome.
Adaptive rim light: Lime #ccff88.
LP gate: Must hold β₯ 1 WAAC token at time of LP deposit.
Every DINO has exactly 28 traits stored in a single 32-byte EVM storage slot. All 28 are exposed in the OpenSea/marketplace attributes panel and indexed for rarity filtering.
| Trait | Values | Mutable? |
|---|---|---|
| Genus | 24 dinosaur species | No |
| Biome | 5 (pool-assigned) | Via migration only |
| Tail Shape | 5 values | Yes (traitId=0) |
| Mouth Type | 6 values | Yes (traitId=1) |
| Limb State | 6 values | No |
| Alloy Finish | 12 values | Via cybernetic graft |
| Primary Hide Color | HSL hue 0β359 | No |
| Underbelly Color | HSL hue 0β359 | No |
| Rarity Score | 0β100 | No |
| Trait | Values | Notes |
|---|---|---|
| Eye Type | 6 values | Biome-influenced in NOCTURNAL_WILDS |
| Skin Texture | 6 values | Visible as SVG texture overlay |
| Headgear | 7 values | Rendered above skull in z-order |
| Eyewear | 6 values | Rendered over eye layer |
| Mouth Accessory | 6 values | Cigarette/pipe have animated smoke |
| Body Gear | 6 values | Chain, armour, hoodie, etc. |
| Footwear | 5 values | Sneakers, boots, rocket boosters |
| Wrist Accessory | 5 values | Watch, bracelet, hologram band |
| Trait | Set by |
|---|---|
| Age Bracket | Computed dynamically from hold time β never stored |
| Cybernetic Unlocked | Cybernetic graft (swap hookData) |
| TWAP Aura | Chainlink oracle via DinoSwapHook.afterSwap |
| Extinct | DinoExtinctionTracker.claimExtinction |
| Fossilized | Reserved (future) |
| Badge | Set by |
|---|---|
| hasWaac | Mint in Nocturnal Wilds, OR Theropod roll β₯ 940 |
| hasWmc | Mint in Standard Origin, OR Sauropod roll β₯ 960 |
| hasCc | Mint in Frontier Ruins, OR any genus roll β₯ 995 |
| hasDino | Holding β₯ 1 legacy Dinero 2015 token at time of mint |
Your genus index (0β23) determines which rarity table applies at mint:
Theropod Group (genus 0β5: T-Rex through Dilophosaurus)
| Roll range | Finish | Score | Notes |
|---|---|---|---|
| 975β999 (2.5% with Forge bonus) | PLASMA_GLOW | 99 | Forge pool lowers threshold by 5 |
| 900β974 (7.5%) | CARBON | 75 | |
| 0β899 (90%) | NONE | 10 |
Sauropod Group (genus 6β11: Brachiosaurus through Camarasaurus)
| Roll range | Finish | Score |
|---|---|---|
| 995β999 (0.5%) | GOLD | 100 |
| 950β994 (4.5%) | CHROME | 80 |
| 0β949 (95%) | WOOD | 25 |
Armoured/Horned Group (genus 12β23: Ankylosaurus through Protoceratops)
| Roll range | Finish | Score |
|---|---|---|
| 990β999 (1%) | MULTICOLORED | 95 |
| 920β989 (7%) | BRICK | 60 |
| 0β919 (92%) | NONE | 15 |
Crystal Vault DINOs whose roll falls between 600β699 (inclusive) and is an even number have TRANSPARENT finish applied instead of the table result, with a score of 88. This gives approximately a 5% additional probability of TRANSPARENT on top of natural outcomes.
All 12 AlloyFinish values can be applied post-mint via Cybernetic Grafting, including GOLD, MULTICOLORED, and TRANSPARENT. Post-mint finishes also set cyberneticUnlocked = true, adding the cyan ring SVG overlay permanently.
A GOLD Sauropod (0.5% roll Γ Sauropod genus probability) with a Rarity Score of 100 is the rarest single natural mint outcome.
A DINO with all four coin badges (WAAC + WMC + CC + DINO) β the "Full Set" β is statistically rarer than any single legendary finish, as it requires simultaneous roll conditions AND legacy Dinero 2015 holding at mint time. The badge panel displays a dashed gold outer ring when all four are present.
Your NFT's appearance changes automatically over time without you spending any gas. Every time tokenURI is called (which any marketplace, wallet, or block explorer does when displaying your DINO), the contract computes your current Age Bracket live from block.timestamp - lastTransferTimestamp.
| Bracket | Hold time | Visual markers |
|---|---|---|
| HATCHLING | 0β29 days | Default appearance |
| JUVENILE | 30β89 days | Slight maturity indicators |
| PREDATOR | 90β179 days | Stronger colouring, battle-ready stance |
| ELDER | 180β364 days | Weathered texture markers |
| CHRONO_TITAN | 365+ days (standard) | Full legendary appearance |
Nocturnal Wilds DINOs require 9 continuous years in the same wallet to achieve CHRONO_TITAN β honouring the aye-aye faucet's own 9-year dormancy. At 9 years, additional SVG visual markers appear matching the discovery moment lore. Standard pools reach CHRONO_TITAN in 1 year.
lastTransferTimestamp resets whenever your DINO is transferred to a new address. This includes:
- Selling on a marketplace
- Transferring to any other wallet (including your own hardware wallet)
It does not reset when you:
- List for sale without completing a transfer
- Approve a marketplace contract
- Call
tokenURIor view the NFT
After minting, you can change your tail shape or mouth type by paying the mutation fee.
Call mutateAnatomy(tokenId, traitId, newValue):
traitId |
Trait | Valid newValue |
|---|---|---|
0 |
Tail Shape | 0β4 |
1 |
Mouth Type | 0β5 |
If your DINO's biome is STANDARD_ORIGIN, the mutation fee is 25% less β automatically applied by the vault. The effective fee is mutationFee Γ 75 / 100.
| Value | Name | Rarity indication |
|---|---|---|
| 0 | STRAIGHT | Common |
| 1 | CURVED | Common |
| 2 | BOBBED | Uncommon |
| 3 | SCARRED_WHIP | Rare |
| 4 | THAGOMIZER | Rare |
| Value | Name |
|---|---|
| 0 | CLOSED |
| 1 | SMILEY |
| 2 | MISSING_TOOTH |
| 3 | GOLD_GRILLS |
| 4 | LIQUIDITY_JAWS |
| 5 | CRUSHING_BEAK |
Cybernetic Grafting lets you change your DINO's Alloy Finish to any of the 12 possible values β including GOLD, MULTICOLORED, and TRANSPARENT β by including special data in a Uniswap V4 swap. It also permanently sets cyberneticUnlocked = true, adding a cyan ring overlay to the SVG.
hookData must be exactly 128 bytes, ABI-encoded:
abi.encode(
uint8 action, // 0 = graft
uint256 tokenId, // your DINO's token ID
uint256 alloy, // AlloyFinish index (0β11)
uint256 epochId // current extinction epoch ID, or 0
)const hookData = ethers.AbiCoder.defaultAbiCoder().encode(
['uint8', 'uint256', 'uint256', 'uint256'],
[0, myTokenId, 11, currentEpochId] // action=graft, alloy=MULTICOLORED
);| Index | Finish | Rarity |
|---|---|---|
| 0 | NONE | Common |
| 1 | CHROME | Uncommon |
| 2 | ANODIZED | Uncommon |
| 3 | CARBON | Rare |
| 4 | PLASMA_GLOW | Very Rare |
| 5 | GOLD | Legendary |
| 6 | BRICK | Rare |
| 7 | WOOD | Uncommon |
| 8 | FLUORESCENT | Rare |
| 9 | BLUESCREEN | Rare |
| 10 | TRANSPARENT | Very Rare |
| 11 | MULTICOLORED | Legendary |
The four coin badges are a unique collectible-within-a-collectible mechanic honouring the specific 2015 Ethereum tokens whose pools form the DINO ecosystem. Each badge is a bool stored in the NFT's anatomy and rendered in a dedicated panel below the dinosaur body on the SVG canvas β never overlapping the body art.
The badge panel occupies y=760 to y=900 on the 1050-height canvas, separated from the body by a thin biome-accent coloured dividing line. Badge positions adapt automatically to how many badges a token holds:
| Count | Badge positions (cx values) |
|---|---|
| 0 | Dashed empty placeholder: "No badges earned" |
| 1 | Centred at cx=400 |
| 2 | cx=320, cx=480 |
| 3 | cx=240, cx=400, cx=560 |
| 4 | cx=176, cx=336, cx=464, cx=624 with outer dashed gold ring |
WAAC β Wrapped AyeAyeCoin (gold, #bf953f)
- First memecoin on Ethereum, August 20, 2015
- Awarded: mint in Nocturnal Wilds (DINO/WAAC pool), OR Theropod genus with roll β₯ 940
- Visual: gold foil radial gradient, "WAAC" text, sub-label "AyeAye"
WMC β Wrapped MistCoin (steel blue, #1a4a80)
- Prototype for ERC-20, November 3, 2015
- Awarded: mint in Standard Origin (DINO/WMC pool), OR Sauropod genus with roll β₯ 960
- Visual: steel blue fill, "WMC" text, sub-label "MistCoin"
CC β CurrencyCoin (plasma purple, #2a0060 + neon glow)
- Deployed 40 days after genesis, direct ERC-20 building block
- Awarded: mint in Frontier Ruins (DINO/CC pool), OR any genus with roll β₯ 995
- Visual: purple plasma fill with neon glow filter, "CC" text, sub-label "CurrencyCoin"
DINO β Wrapped Dinero 2015 (neon green, #002200 + #39ff14 stroke)
- The protocol's own 2015 legacy token
- Awarded: hold β₯ 1 legacy Dinero 2015 token at the moment of
revealAndIncubate - Visual: dark green fill with neon green border and text, "DINO" text, sub-label "Dinero 2015"
- This is the only badge that proves protocol participation β not pool selection or lucky randomness
When all four badges are present, a dashed gold outer ring encloses all four badges. Off-chain rarity tools flag this combination as the rarest achievable configuration in the entire collection.
The TWAP Aura is a collective, oracle-driven visual feature. After every swap in a DINO V4 pool, DinoSwapHook.afterSwap reads the Chainlink DINO/ETH price aggregator. If the price meets or exceeds the DAO-configured threshold and your hookData includes a tokenId, your DINO's twapAuraActive is set true β triggering a pulsing purple double-ring aura in the SVG art.
Two concentric purple circles with animated opacity (0.55 β 0.9 β 0.55, 2.5 second cycle) surround the body. The aura ring pulses continuously when active.
Include your tokenId in the second slot of swap hookData:
abi.encode(
uint8(0), // action = graft (or any action)
myTokenId, // id1 = tokenId for TWAP update
0, // id2 = not used for TWAP
epochId // epochId for extinction survival
)When afterSwap fires, if tokenId != 0, the oracle is read and the flag is updated accordingly.
If the DINO/ETH price drops below the threshold, the next swap with your tokenId in hookData will set twapAuraActive = false and the aura disappears. This is a live market signal β not a permanent cosmetic.
The Battle Arena lets two DINO holders challenge each other to a fight settled by Chainlink VRF v2.5 randomness. Neither side can predict or manipulate the outcome.
Include battle hookData in a V4 swap:
const hookData = ethers.AbiCoder.defaultAbiCoder().encode(
['uint8', 'uint256', 'uint256', 'uint256'],
[1, challengerTokenId, defenderTokenId, currentEpochId]
// action=1 (battle), id1=your token, id2=opponent's token
);Settlement happens asynchronously β 3β5 blocks after challenge when Chainlink delivers the random word. Watch for the BattleSettled(vrfRequestId, winnerId, loserId, biomeAdvantageApplied) event.
- Winner:
battleWins[tokenId]++β permanent on-chain record - Loser:
battleLosses[tokenId]++β loss record. Your NFT is never taken or burned - Battle records are permanent and indexed by rarity tools
When two DINOs from different biomes battle, the biome advantage cycle gives the winning biome +5 percentage points of VRF weight. This shifts the effective 50/50 roll toward 55/45.
PRIMORDIAL_FORGE β beats β CRYSTAL_VAULT (fire melts crystal)
CRYSTAL_VAULT β beats β FRONTIER_RUINS (preservation defeats decay)
FRONTIER_RUINS β beats β STANDARD_ORIGIN (older code beats prototype)
STANDARD_ORIGIN β beats β NOCTURNAL_WILDS (code beats nature)
NOCTURNAL_WILDS β beats β PRIMORDIAL_FORGE (the wild predates the forge)
Same-biome battles are pure 50/50. The advantage applies automatically in DinoBattleArena.rawFulfillRandomWords using the biomes stored in both NFTs' anatomies.
- If you want to challenge someone in STANDARD_ORIGIN, bring a FRONTIER_RUINS DINO for the edge
- Maintain a NOCTURNAL_WILDS DINO specifically for challenging Forge holders
- The cycle is symmetric β every biome has one it beats and one it loses to
You can migrate your DINO to a new biome by paying the incubation fee (0.005 ETH) while your wallet is participating in the target pool. Migration is limited to once per epoch.
Call migratePool(tokenId, newPoolId) with 0.005 ETH attached.
- SVG background switches to the new biome immediately
- Badge guarantees from the new biome do not retroactively apply β the badge booleans are set at mint and are permanent
- Biome loyalty streak resets β migration is the antithesis of loyalty
- The 9-Year Sleeper bonus (Nocturnal Wilds) applies to current hold time, not past
All other traits β genus, finish, cosmetics, existing badges β are unchanged.
DinoLeaderboard tracks cumulative swap volume (in absolute token units) for every address that swaps in any DINO V4 pool. Volume is recorded automatically by DinoSwapHook.afterSwap on every swap β no extra action required.
Query userVolumeAccumulated(address) on DinoLeaderboard.
Top-10 volume wallets per pool per epoch are eligible for pool-specific "Alpha" badge variants (e.g. "Forge Alpha", "Wilds Alpha") β awarded as soulbound ERC-1155 tokens by the DAO after each epoch closes. Alpha badges appear alongside coin badges in the 2015 COLLECTIBLES panel.
Badges are soulbound ERC-1155 tokens β permanently linked to the earning wallet, never transferable or sellable. All badge art is fully on-chain SVG.
| Badge ID | Name | How to earn |
|---|---|---|
| 1 | First Swap | First swap in any DINO V4 pool |
| 2 | Veteran Swapper | 10 swaps |
| 3 | Apex Trader | 100 swaps |
| Badge ID | Name | How to earn |
|---|---|---|
| 4 | Liquidity Provider | First successful LP deposit in any DINO pool |
| Badge ID | Name | How to earn |
|---|---|---|
| 6 | Biome Loyal | 3 epochs of continuous loyalty to one biome |
| 7 | Biome Devoted | 7 epochs of continuous loyalty |
| 8 | Born of the Biome | 10 epochs β the rarest badge in the collection |
Loyalty streaks are computed off-chain from BiomeLoyaltyStamped events emitted by DinoLiquidityManagerHook. The DAO calls mintLoyaltyBadge(user, badgeId) when thresholds are confirmed.
Reserved for a future release. Will be awarded by the battle system to holders with exceptional win records.
Biome loyalty is measured in epochs. An epoch is a DAO-defined time period (typically 6 months). To maintain your loyalty streak, you must:
- Hold a DINO NFT from the same biome for the entire epoch
- Provide liquidity in that biome's pool at least once during the epoch
- NOT migrate to a different biome during the epoch
| Epochs | Badge | SVG effect |
|---|---|---|
| 3 | Biome Loyal | Biome-accent glow border around the classification label |
| 7 | Biome Devoted | Biome-accent crown ornament variant in classification area |
| 10 | Born of the Biome | Permanent distinctive SVG frame unique to that biome |
Migrating your DINO resets your loyalty streak to zero for the new biome.
You must hold at least one DINO NFT to add liquidity to any DINO V4 pool. The hook verifies your NFT balance in beforeAddLiquidity. If your balance is zero, the transaction reverts with HookEcosystemStakingGated.
After adding liquidity, you cannot remove it from that specific pool for 3 days. Each pool has its own independent lock β adding to Pool A does not affect Pool B's lock.
Re-adding liquidity to a pool resets only that pool's 3-day lock.
If you attempt early withdrawal, the transaction reverts with HookLoyaltyLockActive.
Badge 4 (Liquidity Provider) is minted automatically on your first successful afterAddLiquidity in any DINO pool.
Extinction Events are seasonal community challenges run by the DAO. During an active epoch, you must perform at least one swap with the active epochId in your hookData. Wallets that do not swap during the epoch may be permanently marked extinct.
- DAO opens epoch via
DinoExtinctionTracker.openEpoch(epochId) - During epoch: every swap with epochId in hookData slot 4 records your survival automatically
- DAO closes epoch: sets a Merkle root of all non-surviving tokenIds via
setExtinctionRoot - Claiming extinction: anyone can call
claimExtinction(epochId, tokenId, proof)to mark a specific token
const hookData = ethers.AbiCoder.defaultAbiCoder().encode(
['uint8', 'uint256', 'uint256', 'uint256'],
[0, 0, 0, activeEpochId] // epochId in slot 4 β graft/battle slots can be zero
);A single swap with the correct epochId is sufficient to survive for all DINOs owned by that wallet.
Survival is tracked per wallet, not per token. One swap covers all DINOs owned by that address.
Forge holders receive one free epoch survival per calendar year β the DAO excludes them from the extinction Merkle root for one epoch automatically.
isExtinct = true is set permanently. A large red "EXTINCT" stamp with diagonal crossed lines overlays the SVG. Your DINO is NOT burned or removed from your wallet. Extinct DINOs become historically significant collectibles β each one is a timestamped record of a specific epoch.
isFossilized is reserved for a future upgrade that will activate some time after extinction. Frontier Ruins DINOs fossilize at 90 days post-extinction; all others at 180 days (these timelines are DAO-governed).
Honouring the AyeAyeCoin community's real-world aye-aye conservation efforts, DINO/WAAC pool participants can opt in to direct a share of LP fees to aye-aye conservation organisations.
Call DinoPoolRegistryHook.pledge() from any wallet.
conservationPledge[yourAddress]is set totrue- On every subsequent LP deposit, the hook emits a
ConservationLpStampedevent - Future art engine upgrades will read this flag and render a πΏ leaf overlay on your DINO's SVG β a permanent, visible, on-chain record of ecological contribution
- Fee routing to conservation organisations is governed by the DAO
Call DinoPoolRegistryHook.revokePledge() at any time.
Certain DINO body finishes (NONE, CARBON, WOOD, BLUESCREEN) are very dark in colour. Without intervention, these bodies would visually blend into the near-black biome backgrounds. The art engine applies an automatic contrast system for these cases.
- Biome spotlight β a radial gradient ellipse behind the body zone lifts local background luminance without affecting the rest of the scene
- Rim stroke β the body SVG paths receive a biome-accent coloured stroke (2.5px) instead of the default dark stroke
- Directional lighting β the
fePointLightlighting colour shifts to the biome accent
| Biome | Rim colour | Character |
|---|---|---|
| Primordial Forge | #ffdd88 |
Warm amber β volcanic light |
| Crystal Vault | #aaddff |
Cold ice blue |
| Frontier Ruins | #cc88ff |
Ancient violet |
| Standard Origin | #44ffee |
Blueprint teal |
| Nocturnal Wilds | #ccff88 |
Bioluminescent lime |
This system operates entirely inside the view function β zero gas cost, no new contracts.
WrappedDinero (symbol: DINO, name: Wrapped Dinero) wraps legacy 2-decimal Dinero 2015 tokens into standard 18-decimal ERC-20 form.
Legacy Dinero 2015 : 2 decimal places
Wrapped DINO : 18 decimal places
Gap : 18 - 2 = 16 decimal places
SCALING_FACTOR = 10^16
1 legacy unit = 10,000,000,000,000,000 DINO wei
Displayed: 1.00 legacy DINO β 1.00 DINO (human-readable values match)
Call wrap(legacyAmount) where legacyAmount is in legacy units (2-decimal). Pass 100 for 1.00 legacy DINO. Approve the WrappedDinero contract first.
Call unwrap(wrappedAmount) where wrappedAmount must be exactly divisible by 10^16. Indivisible amounts revert with WrapperIndivisibleAmount.
If you wrap legacy Dinero and then mint a DINO NFT while holding the wrapped DINO tokens, you receive the DINO badge. The vault checks legacyDineroAddress.balanceOf(caller) > 0 at mint time β both wrapped and unwrapped legacy balances count if both addresses are registered.
Every DINO is rendered as an 800Γ1050 SVG divided into three vertical zones:
Layers in render order:
<defs>block β all gradients, patterns, filters defined here- Background β biome-specific scene with unique elements per biome
- Ground shadow ellipse β dark oval beneath the body for 3D depth perception
- Body geometry β genus-group-specific skeletal shape (theropod, sauropod, armoured)
- Specular highlight β white semi-transparent ellipse on the lit surface for roundness
- Skin texture overlay β fur strokes, feather curves, crystal spines, or scaly lines
- Eye layers β sclera + iris + pupil + specular dot (4 layers for depth)
- Headgear β drawn above skull in z-order
- Eyewear β overlaid on eye layer
- Mouth accessory β cigarette/pipe include animated smoke puffs
- Body gear β hoodie, chain, armour, etc.
- Footwear β at bottom of body, sneakers include white stripe detail
- Wrist accessory β on arm/limb area
- Cybernetic overlay β cyan circle when
cyberneticUnlocked = true - TWAP aura β animated pulsing purple rings when
twapAuraActive = true - Extinct overlay β red diagonal cross + EXTINCT text when
isExtinct = true
Separated from the dinosaur body by a biome-accent dividing line. Contains the 2015 COLLECTIBLES label and 0β4 coin badge circles. Badges never overlap the body art.
Four lines of monospace text: genus and token ID, biome + finish + rarity score, age bracket + eye type + skin texture, and the CollectibleTrust protocol identifier.
tokenURI returns data:application/json;base64,... containing all 28 attributes.
All 28 traits are exposed as named attributes in the ERC-721 metadata. Marketplaces supporting attribute filtering (OpenSea, Blur, trait.tech, Rarity Sniper) will index and rank DINOs correctly.
Because Age Bracket is computed live at tokenURI call time, marketplaces may cache an older bracket. Use the "Refresh Metadata" button on OpenSea to force a re-fetch. The live bracket is always visible by calling tokenURI directly.
DinoIncubated(tokenId, owner, genus, biome, rarityScore)β mintAnatomyMutated(tokenId, traitId, newValue)β mutationCyberneticGrafted(tokenId, finish)β graftTwapStateModified(tokenId, active)β TWAPBiomeMigrated(tokenId, newBiome)β migrationExtinctionMarkApplied(tokenId)β extinctionBattleSettled(vrfRequestId, winnerId, loserId, advantageApplied)β battleBadgeMinted(recipient, badgeId)β achievementBiomeLoyaltyStamped(provider, poolId, timestamp)β loyalty trackingConservationLpStamped(provider, poolId)β conservation pledge LP
Q: Which pool should I mint in?
A: Primordial Forge for best rarity odds. Nocturnal Wilds for the WAAC badge and firefly art. Standard Origin for mutation discounts. Frontier Ruins for the CC badge. Crystal Vault for TRANSPARENT finish potential. There is no universally "best" choice β every biome has a distinct advantage.
Q: Can I get all four coin badges from one mint?
A: No. Each badge requires either a specific pool mint or a specific roll condition. WAAC requires Nocturnal Wilds OR Theropod roll β₯ 940. WMC requires Standard Origin OR Sauropod roll β₯ 960. CC requires Frontier Ruins OR any roll β₯ 995. DINO requires holding legacy Dinero at mint. The only way to guarantee all four in one DINO is to mint in a coin pool and separately achieve the other conditions β but badge guarantees are biome-specific. The full set strategy requires holding legacy Dinero, then minting in a pool that gives one badge guaranteed, and hoping roll conditions provide the others.
Q: Can I move my DINO to a hardware wallet without resetting the aging clock?
A: No. Any wallet-to-wallet transfer resets lastTransferTimestamp β including moves to your own hardware wallet. If you want to reach CHRONO_TITAN, keep your DINO in one wallet.
Q: Does migrating biomes change my coin badges?
A: No. Coin badges are booleans set at mint and are permanent. Migration changes the SVG background and battle advantage but never removes or adds badges.
Q: Can battle cause me to lose my NFT?
A: Never. Only win/loss counters change. Your DINO is always yours regardless of battle outcome.
Q: What if Chainlink VRF takes too long to settle a battle?
A: The challenge sits in inflightChallenges in a pending state. The swap that initiated it completed normally. Contact the DAO if a challenge is stuck for more than 100 blocks.
Q: How do I know if my wallet is pledged for conservation?
A: Call DinoPoolRegistryHook.conservationPledge(yourAddress) β returns true if pledged.
Q: What gas does minting cost?
A: Approximately 200,000β250,000 gas for revealAndIncubate, plus 0.005 ETH fee. commitSeed costs ~50,000 gas.
Q: Is the DINO badge the same as the DINO NFT collection ticker?
A: No. "DINO" refers to both the ERC-20 token (WrappedDinero, symbol DINO) and the coin badge. Context makes it clear: the badge panel shows the DINO coin badge; the ERC-721 collection ticker is "DINO-NFT".
Theropods (0β5): TYRANNOSAURUS, SPINOSAURUS, VELOCIRAPTOR, ALLOSAURUS, CARNOTAURUS, DILOPHOSAURUS
Sauropods (6β11): BRACHIOSAURUS, DIPLODOCUS, APATOSAURUS, TITANOSAURUS, ARGENTINOSAURUS, CAMARASAURUS
Armoured/Horned/Ornithopods (12β23):
ANKYLOSAURUS, STEGOSAURUS, KENTROSAURUS, NODOSAURUS, SCELIDOSAURUS, MIRAGAIA,
TRICERATOPS, PACHYCEPHALOSAURUS, PARASAUROLOPHUS, IGUANODON, MAIASAURA, PROTOCERATOPS
0 PRIMORDIAL_FORGE (DINO/ETH) β volcanic lava
1 CRYSTAL_VAULT (DINO/USDC) β crystal cave
2 FRONTIER_RUINS (DINO/CC) β ancient bytecode walls
3 STANDARD_ORIGIN (DINO/WMC) β blueprint grid
4 NOCTURNAL_WILDS (DINO/WAAC) β dark jungle + fireflies
0 HATCHLING (<30 days)
1 JUVENILE (30β89 days)
2 PREDATOR (90β179 days)
3 ELDER (180β364 days)
4 CHRONO_TITAN (365+ days standard; 9 years for NOCTURNAL_WILDS)
0 STRAIGHT 1 CURVED 2 BOBBED 3 SCARRED_WHIP 4 THAGOMIZER
0 CLOSED 1 SMILEY 2 MISSING_TOOTH 3 GOLD_GRILLS 4 LIQUIDITY_JAWS 5 CRUSHING_BEAK
0 INTACT 1 MISSING_TOES 2 ONE_ARMED 3 PEG_LEG 4 CYBERNETIC_ALLOY 5 OSTEODERM_ARMOUR
0 NONE 1 CHROME 2 ANODIZED 3 CARBON 4 PLASMA_GLOW 5 GOLD
6 BRICK 7 WOOD 8 FLUORESCENT 9 BLUESCREEN 10 TRANSPARENT 11 MULTICOLORED
0 ROUND 1 SLIT_PUPIL 2 COMPOUND 3 GLOWING_RED 4 LASER_BEAM 5 HETEROCHROMIA
0 BALD 1 SCALY 2 FEATHERED 3 BRISTLE_FUR 4 FULL_FUR 5 CRYSTAL_SPINES
0 NONE 1 BACKWARDS_CAP 2 COWBOY_HAT 3 TOP_HAT 4 CROWN 5 FROG_HAT 6 FLAME_CROWN
0 NONE 1 ROUND_FRAMES 2 AVIATORS 3 MONOCLE 4 VR_VISOR 5 GLASSES_3D
0 NONE 1 CIGARETTE 2 PIPE 3 CIGAR 4 LOLLIPOP 5 TOOTHPICK
0 NONE 1 HOODIE 2 CHAIN_NECKLACE 3 BATTLE_ARMOUR 4 TUXEDO_VEST 5 SPACE_SUIT
0 BARE_CLAWS 1 SNEAKERS 2 BOOTS 3 ROCKET_BOOSTERS 4 ROLLER_SKATES
0 NONE 1 WATCH 2 GOLD_BRACELET 3 HOLOGRAM_BAND 4 SPIKED_CUFF
0 = Cybernetic Graft (id1=tokenId, id2=alloyIndex, epochId=epochId)
1 = PvP Battle (id1=challengerId, id2=defenderId, epochId=epochId)
1 First Swap (1 swap)
2 Veteran Swapper (10 swaps)
3 Apex Trader (100 swaps)
4 Liquidity Provider (first LP deposit)
5 Battle Victor (reserved)
6 Biome Loyal (3 epoch loyalty β DAO-awarded)
7 Biome Devoted (7 epoch loyalty β DAO-awarded)
8 Born of the Biome (10 epoch loyalty β legendary, DAO-awarded)
PRIMORDIAL_FORGE β CRYSTAL_VAULT β FRONTIER_RUINS β STANDARD_ORIGIN β NOCTURNAL_WILDS β PRIMORDIAL_FORGE
(each biome beats the one to its right; +5% VRF weight advantage)
DINO Vault is a CollectibleTrust DAO LLC protocol. All contract interactions are final and irreversible. Always verify contract addresses through official governance channels before transacting.
THIS CODE HAS NOT BEEN AUDITED - USE AT YOUR OWN RISK
Document version: v7 β reflects the complete updated codebase including biome gamification, coin badges, adaptive contrast, cosmetic traits, and full pool system.