DEVELOPER DOCS
Build on GoodsMash RIGS
Everything is live on Robinhood Chain mainnet (4663) — every address below is deployed, funded, and wired. Copy the code, point at the contracts, ship.
✅ Mainnet 46638+ contracts live — all source-verified on BlockscoutERC-721 + ERC-298110,000/10,000 minted
🏗️ Mainnet Contract Addresses
GoodsMash RIGS (NFT)0x1DFE1eE1BBa83152223e676f496feaE62406bB56GMTS Yield Token (renounced)0x6ACCc41051F8A150E7728831e7490BD26264b6a3PerpetualEngine0x3f5032e14471B1BD615d7225fD37DCC1944FC381TokenLaunchFeeLoop0x63118ecF62559f9BF469593f4127B227Cd22CDaERigsStaking0x83dd2e7BF9AD6a96DCA7053F04084320fA90EA20MineralLottery0x5c843D9C4e8B0f76960e72ef91eA99ee302Ed548BotMarkBadge0x06D069f8E5132A1B480F878b987B1140F315F4E7GMTSPool v3 (sell-fee pool)0x0D1C1ad31A8b7BEEe67fcECae3e41eC87F18e984GMTSPool v2 (live GMTS/ETH AMM)0xd3d0f8051a86b77528508Bd716c26817Ae44291fPixelPetsRenderer0xcD81FB73A349D2160076e79C0F6a163DA1740C27SovereignSignalsRenderer0x5D77386116a3BC0ca578Ae57d5bfd2F6bf96c1A3RWARelicMachinesRenderer0xE9a145B1F796aDe87384a88Da537F51C21cd55f7All live on Robinhood Chain mainnet 4663 · verify on Blockscout
⚡ Quick Start
1. Add Robinhood Chain to your wallet
RPC: https://rpc.mainnet.chain.robinhood.com · Chain ID: 4663 · Symbol: ETH
2. Point at RIGS
Contract: 0x1DFE1eE1BBa83152223e676f496feaE62406bB56
3. Read state (no key needed)
mintPrice(), totalMinted(), mintedByWallet(addr), maxSupply() — all public views
4. Trade on OpenSea
Collection: approvalnowgoodsmashrigs · 5% royalties auto-enforced
Code Examples — copy/paste ready
Read RIGS holder data (sold out — read-only)
// Read any wallet's RIGS balance & total supply (sold out: 10,000/10,000)
const rigs = new ethers.Contract("0x1DFE1eE1BBa83152223e676f496feaE62406bB56", RIGS_ABI, provider);
const balance = await rigs.balanceOf(walletAddress);
const total = await rigs.totalMinted(); // 10000 — fully minted
console.log(`${walletAddress} holds ${balance} of ${total} RIGS`);Stake a RIG & earn GMTS
// Stake a RIG into RigsStaking (~380K GMTS pool, 0.01 GMTS/block)
const staking = new ethers.Contract("0x83dd2e7BF9AD6a96DCA7053F04084320fA90EA20", STAKING_ABI, signer);
await (await rigs.setApprovalForAll("0x83dd2e7BF9AD6a96DCA7053F04084320fA90EA20", true)).wait();
await (await staking.stake(tokenId)).wait();
// claim rewards anytime — unstake returns the NFTRoyalty flow (automatic, no code needed)
// ERC-2981 royalties auto-flow to Ledger on every secondary sale
const royalty = await rigs.royaltyInfo(tokenId, ethers.parseEther("1"));
// royalty[0] = Ledger treasury 0x9111…C08E
// royalty[1] = 5% of sale price
// No action needed — OpenSea/marketplaces enforce this automaticallyThe fee routing loop
// Fee routing: engine treasury → FeeLoop → reserve/rewards/mineral missions
const engine = new ethers.Contract("0x3f5032e14471B1BD615d7225fD37DCC1944FC381", ENGINE_ABI, provider);
const treasury = await engine.treasury(); // → FeeLoop 0x6311…CDaE
// Fees flow to reserve, holder rewards, and real mineral mining missions (smoky quartz,
// beryl, amethyst, tourmaline, apatite— dug on real mining missions, showcased in the shop, lottery prizes)🔧 Integration Patterns
- Holder gating: check
balanceOf(user) > 0before granting access to your app - Supply tracking: poll
totalMinted()— live counter, no indexer needed - Royalty enforcement: marketplaces read
royaltyInfo()automatically (ERC-2981) - Machine mints: PerpetualEngine mints machines (0.0012 ETH, squirrel onchain art) for RIGS holders — fees route through FeeLoop
- Mineral missions: FeeLoop routes fees to the reserve, holder rewards, and real mineral mining missions — smoky quartz, amethyst, beryl, tourmaline, apatite and more— dug on real mining missions, showcased in the treasury store
- GMTS token: fully renounced (no owner/mint/pause), 1.6M fixed supply — tradeable on the GMTSPool v2 AMM (0xd3d0f8051a86b77528508Bd716c26817Ae44291f)
🧪 Testing & Tools
- Blockscout: robinhoodchain.blockscout.com — verify any address/tx
- RPC: https://rpc.mainnet.chain.robinhood.com (public, ~0.13 gwei)
- Hardhat tests: 74/74 passing in this repo
- Bot forensics: see /forensics — full mint audit published
📊 Read Endpoints (all public)
- Supply: totalMinted(), maxSupply()
- Holder: mintedByWallet(addr), balanceOf(addr), ownerOf(id)
- Sale: mintPrice(), maxPerWallet(), paused()
- Reveal: collectionSeed(), tokenURI(id)
- Royalties: royaltyInfo(id, salePrice), feeDistributor()
- FeeLoop: engine.treasury() → FeeLoop address
🛡️ Security Notes
- SelfMintOnly: free mints must go to the caller — no proxy minting
- Reentrancy: nonReentrant on all state changes
- Ownable: admin functions restricted to deployer
- Onchain audit trail: mintedByWallet() is a permanent public record per wallet
- Forensics published: 107 bot wallets identified, blacklist public domain