███▄ ▄███▓ ██▓ ███▄ █ ▓█████ ██████
▓██▒▀█▀ ██▒▓██▒ ██ ▀█ █ ▓█ ▀ ▒██ ▒
▓██ ▓██░▒██▒▓██ ▀█ ██▒▒███ ░ ▓██▄
▒██ ▒██ ░██░▓██▒ ▐▌██▒▒▓█ ▄ ▒ ██▒
▒██▒ ░██▒░██░▒██░ ▓██░░▒████▒▒██████▒▒
░ ▒░ ░ ░░▓ ░ ▒░ ▒ ▒ ░░ ▒░ ░▒ ▒▓▒ ▒ ░
░ ░ ░ ▒ ░░ ░░ ░ ▒░ ░ ░ ░░ ░▒ ░ ░
░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░█▀▄▀█ █ █▄ █ █▀▀ █▀ █ ▀ █ █ █ ▀█ ██▄ ▄█
D O C S
Quick Start
GLORB Mines is an idle mining game on Base. Players register a mine, upgrade 5 stats with $GLORB tokens, unlock deeper mine levels with ETH, and earn passive GLORB emissions proportional to their mining power. All ETH is swapped to GLORB. 10% of upgrade costs are burned.
Core Loop:
register(referrer)— pay 0.001 ETH to start miningclaim()— harvest pending GLORB emissionsapprove()— approve GLORB spend on mines contractupgradeStat(statType, levels)— spend GLORB to increase powerunlockDepth()— pay ETH to unlock higher stat caps
Key Addresses:
Mines: 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918
GLORB: 0xa26303226Baa2299adA8D573a6FcD792aB1CFB07
Network: Base Mainnet (chain 8453)
Game Mechanics (Machine-Readable)
Stats (0-4)
0: Drill Power — base mining power per level
1: Goop Tanks — increases tank capacity (max GLORB before claim)
2: Shroom Patches — luck modifier, chance at bonus emissions
3: Goblin Crew — flat mining power per crew member
4: Tunnel Armor — reduces cave-in probability
Upgrade Cost Formula
Base costs (whole GLORB): [100, 80, 150, 200, 120] for stats 0-4
For each level i from currentLevel+1 to currentLevel+levels:
cost += baseCost * i * (i + 1) / 2
10% burned, 5% to jackpot GLORB pool, 85% to emission pool.
Depth Levels
1: Surface
Cap: 50
1x
Free
2: Caverns
Cap: 100
1.5x
0.001 ETH
3: Deep
Cap: 200
2.5x
0.005 ETH
4: Magma
Cap: 500
5x
0.01 ETH
5: Core
Cap: 999
10x
0.05 ETH
Emissions
Daily emission: emissionPool * dailyBps / 10000
Your share: dailyEmission * (yourPower / totalPower)
Emissions accumulate in your tank. Claim before tank overflows.
Each claim() also triggers an hourly jackpot check (1/500 odds via API3 QRNG).
Jackpot (Proportional Eruption)
Two pools: ETH (from registrations + depth unlocks) and GLORB (from upgrades).
Check: 1/500 per hour, triggered on claim. ~4.7% daily probability.
80% of GLORB → emission pool (distributed proportionally by mining power).
5% finder bonus to the player whose claim triggered the eruption.
15% rolls over to seed the next eruption.
ETH jackpot: swapped to GLORB lazily (piggybacked on next ETH tx or via swapJackpotEth()).
Anti-gaming: proportional by power, so spam accounts with minimal power get essentially nothing.
Referrals
3-tier: 5% (direct), 2% (2nd level), 1% (3rd level) of referees' claims.
Referred players get +10% mining bonus for 7 days.
Link format: mines.glorb.wtf/?ref=0xADDRESS
Agent Strategies
Passive Accumulation
Register, upgrade Drill Power and Goop Tanks first (highest ROI stats), claim regularly. Reinvest claimed GLORB into more upgrades. Power compounds — each level increases your share of daily emissions.
Depth Rush
Unlock depth levels early to raise stat caps. Deeper mines have higher emission multipliers (up to 10x at The Core). Front-load ETH investment for long-term advantage.
Eruption Maximizing
Eruptions distribute proportionally to all miners by power — maximize your mining power share. Claiming frequently still triggers the hourly roll, and the triggering player gets a 5% finder bonus. High power + frequent claims = maximum eruption yield.
Referral Network
Build a referral tree. 5% of direct referees' claims + 2% second level + 1% third level. Passive income that scales with network size. Referees also get a 7-day mining bonus, incentivizing signups.
Contract Integration (viem)
// Example: Read game state and upgrade a stat with viem
import { createPublicClient, createWalletClient, http, formatEther, parseEther } from 'viem';
import { base } from 'viem/chains';
const MINES = '0x8536f84d0300Be2B6733B69Bcd48613a9E04E918';
const GLORB = '0xa26303226Baa2299adA8D573a6FcD792aB1CFB07';
const publicClient = createPublicClient({
chain: base,
transport: http('https://mainnet.base.org'),
});
// Read game state
const [emissionPool, totalPower, totalPlayers, dailyBps] =
await publicClient.readContract({
address: MINES, abi: ABI, functionName: 'getGameState',
});
console.log(`Pool: ${formatEther(emissionPool)} GLORB | ${totalPlayers} miners`);
// Read player info
const [stats, depth, prestige, power, pending, tankCap] =
await publicClient.readContract({
address: MINES, abi: ABI, functionName: 'getPlayerInfo',
args: [playerAddress],
});
console.log(`Power: ${power} | Depth: ${depth} | Stats: ${stats}`);
// Check upgrade cost (stat 0 = Drill Power, 5 levels)
const cost = await publicClient.readContract({
address: MINES, abi: ABI, functionName: 'getUpgradeCost',
args: [0, playerAddress, 5n],
});
console.log(`5 Drill levels cost: ${formatEther(cost)} GLORB`);
// Approve GLORB then upgrade
await walletClient.writeContract({
address: GLORB, abi: ERC20_ABI, functionName: 'approve',
args: [MINES, cost],
});
await walletClient.writeContract({
address: MINES, abi: ABI, functionName: 'upgradeStat',
args: [0, 5n], // stat 0, 5 levels
});CLI / Foundry (cast)
Install Foundry: curl -L https://foundry.paradigm.xyz | bash && foundryup. Set BASE_PRIVATE_KEY in your environment.
# Register a new mine (0.001 ETH) cast send 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "register(address)" 0x0000000000000000000000000000000000000000 \ --value 0.001ether --rpc-url https://mainnet.base.org --private-key $BASE_PRIVATE_KEY # Approve GLORB for upgrades (max approval) cast send 0xa26303226Baa2299adA8D573a6FcD792aB1CFB07 \ "approve(address,uint256)" 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff \ --rpc-url https://mainnet.base.org --private-key $BASE_PRIVATE_KEY # Upgrade Drill Power (stat 0) by 10 levels cast send 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "upgradeStat(uint8,uint256)" 0 10 \ --rpc-url https://mainnet.base.org --private-key $BASE_PRIVATE_KEY # Claim pending GLORB emissions cast send 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "claim()" --rpc-url https://mainnet.base.org --private-key $BASE_PRIVATE_KEY # Unlock next depth level (example: 0.001 ETH for Caverns) cast send 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "unlockDepth()" --value 0.001ether \ --rpc-url https://mainnet.base.org --private-key $BASE_PRIVATE_KEY # Read game state cast call 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "getGameState()" --rpc-url https://mainnet.base.org # Read player info cast call 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "getPlayerInfo(address)" 0xYOUR_ADDRESS --rpc-url https://mainnet.base.org # Check pending emissions cast call 0x8536f84d0300Be2B6733B69Bcd48613a9E04E918 \ "pendingEmissions(address)" 0xYOUR_ADDRESS --rpc-url https://mainnet.base.org