16 Solidity contracts | Solidity ^0.8.24 | OpenZeppelin v5.x | Hardhat
contracts/sol/
├── core/ — Game logic
│ ├── PlayerRegistry.sol — Player accounts, XP, levels, prestige, vault
│ ├── GameEngine.sol — Actions, energy, DUST minting, cooldowns
│ └── PvPArena.sol — PvP combat (bounties, raids, heists)
│
├── economy/ — Token & DeFi layer
│ ├── DustToken.sol — $DUST ERC-20 (mintable, 10% burn tax, daily limits)
│ ├── DustRedemption.sol — Burn $DUST → receive ETH (cash-out)
│ ├── DustStaking.sol — Stake $DUST → earn ETH yield
│ ├── DustValueEngine.sol — Floor price, lockup, LP burn, milestones
│ ├── Treasury.sol — Revenue distribution (8 pools, 48h timelock)
│ ├── CapoToken.sol — $CAPO ERC-20 (100M fixed supply, transfer limits)
│ ├── CapoStaking.sol — Stake $CAPO → earn ETH from 5% revenue
│ ├── CapoBuyback.sol — Auto buyback & burn $CAPO
│ └── DustToCapoSwap.sol — Burn $DUST → receive $CAPO (level-gated)
│
├── governance/ — DAO voting
│ └── CapoGovernor.sol — Proposal + vote with $CAPO (quorum from votable supply)
│
├── nft/ — Soulbound achievements
│ └── AchievementNFT.sol — Non-transferable ERC-721 (tiered: Common→Mythic)
│
├── utility/ — NFT power system
│ └── NFTUtility.sol — XP/DUST/cooldown/staking/PvP boosts from NFTs
│
└── automation/ — Keeper bot
└── CryptoCapoKeeper.sol — Chainlink-compatible upkeep (6 maintenance tasks)
npm install
npx hardhat test # 308 tests, ~15s- OpenZeppelin AccessControl (role-based: MINTER, BURNER, GAME_ENGINE, OPERATOR, DISTRIBUTOR)
- ReentrancyGuard on all external-facing functions
- Pausable on Treasury, DustToCapoSwap
- 48h timelock on Treasury recipient changes
- 10% burn tax on $DUST player transfers; game contracts whitelisted
- Daily transfer limits scaled by player level
- Max wallet cap (2% of total minted)
- Soulbound NFTs (non-transferable)
- Level-gated DustToCapoSwap (min level 5)
@openzeppelin/contractsv5.xhardhat+@nomicfoundation/hardhat-toolbox- Target chains: Base (8453), Base Sepolia (84532), Polygon, Arbitrum, etc.
This package contains zero private keys, API keys, or .env files.
The hardhat.config.ts has been sanitized — all key references show REDACTED.