⚠ Demo mode — the staking contract address isn't set yet in js/config.js, so staking actions here are simulated locally (nothing is sent on-chain). Deploy contracts/MysticRocksStaking.sol and fill in STAKING_ADDRESS to go live. See README.md.
Live on Robinhood Chain (Ethereum L2) · Chain ID 4663

Stake your Rocks.
Earn $MR every month.

Stake MysticRocks NFTs and $MR tokens together. Rewards are paid out continuously from a fixed 25,000,000 $MR pool reserved for holders — the longer and bigger you stake, the higher your tier.

Buy $MR → How it works

$MR Token Presale

Send ETH on Robinhood Chain — receive $MR instantly, automatically.

Buy $MR Tokens
1 ETH = 250,000 $MR  ·  Price: $0.01 per token
Presale supply
32M $MR
Sold
$MR
Min buy
0.002 ETH
Max buy
5 ETH
Progress Loading...
You receive
— $MR
Min: 0.002 ETH (~$5) Max: 5 ETH per wallet
Presale contract
0x055D4c7972c499CBd069166bafc6a10bebd45D9A
Rewards pool remaining
25,000,000 $MR
Total $MR staked (locked)
This epoch's NFT power
This epoch's funded budget
Unique participants

NFT holding rewards

Your NFTs stay in your wallet — nothing is locked. Every NFT you hold and check in with is worth 1,000 $MR of reward weight — plus a 1,000 $MR bonus for every complete group of 3 you check in together.

NFTs heldBase (× 1,000)Triplet bonusTotal weight

Tiers

Your tier depends only on how many NFTs you check in with THIS epoch — it resets each new epoch until you check in again. Higher tiers share a larger slice of the NFT rewards.

Stone Keeper tier

Stone Keeper

1 – 3 NFTs checked in
Base reward share
Cave Dweller tier

Cave Dweller

4 – 7 NFTs checked in
Priority in future drops
Gem Lord tier

Gem Lord

8+ NFTs checked in
Top reward share + governance weight

Your dashboard

Not connected.

This epoch ends soon and you haven't checked in yet. Check in now ↓
Current epoch
Epoch #0
Ends in
Your check-in status
Not checked in

NFTs in your wallet Stone Keeper

Your MysticRocks NFTs stay in your wallet — nothing is transferred. Select the ones you hold and check in once this epoch to register them for this month's rewards. Your tier (Stone Keeper / Cave Dweller / Gem Lord) depends on how many you check in with.

In this wallet0 found
No MysticRocks NFTs found in this wallet.
0 selected
Checked in this epoch 0 NFTs · 0 $MR weight
Progress to next tier0 / 4 NFTs

Stake $MR

Minimum 5,000 $MR to stake. Unstaking has no minimum and no lock — take out any amount, part or all of it, anytime. Rewards keep accruing continuously until you do.

Wallet balance0 $MR
Currently staked0 $MR
Current monthly rate (all stakers)
Your estimated monthly share

Tip: "Max" (above, next to the amount field) fills in your whole wallet — for staking. "Unstake all" (next to "Currently staked") fills in your full staked amount — for unstaking everything. To unstake only part of it, just type the amount you want.

Pending $MR-staking rewards
0 $MR

NFT epoch rewards

Once an epoch ends and its budget is funded, everyone who checked in can claim their share. Showing the last few epochs:

EpochStatusYour weightYour reward

Your activity

Your recent stakes, unstakes, claims, and check-ins on this wallet — read directly from the blockchain, connect your wallet to load it.

WhenActionAmountTx

What to expect

A short, visible process. Your wallet always asks you to confirm before anything moves.

01

Connect

Bring the wallet that holds your MysticRocks NFTs and $MR, on Robinhood Chain.

02

Check in (NFTs)

Once per ~30-day epoch, confirm you still hold your NFTs. They never leave your wallet — this just proves ownership on-chain.

03

Stake (optional, $MR)

Want more weight? Lock $MR into the contract too. You see exactly what you're approving, and can unstake anytime.

04

Claim

$MR-staking rewards accrue continuously — claim anytime. NFT rewards are claimable once each epoch ends.

Trust & security

Don't take our word for it — everything below is something you can check yourself.

The team can't touch your funds

The contract's recoverForeignToken() function — the only function that could ever move tokens out to the owner — explicitly excludes $MR: require(token != address(mrToken), "cannot pull $MR reward pool"). Neither your staked $MR nor the rewards pool can be withdrawn by anyone, including the contract owner. That's enforced by the code, not a promise.

Pausing can't freeze your funds

The owner can pause new stakes and NFT check-ins (e.g. during a migration), but unstakeTokens(), claimTokenRewards(), and claimEpoch() are never affected by that pause. You can always get your $MR and rewards out.

Verify the code yourself

Read the actual deployed contract on the block explorer — don't just trust this website's description of what it does. View the staking contract →

Ownership is typo-safe

The contract uses OpenZeppelin's Ownable2Step, so transferring ownership takes two confirmed steps instead of one — a mistyped address can't accidentally lock the project out of its own admin functions.

Honest disclaimer: this contract has had a manual self-review (documented in its source comments) but has not been through a professional third-party audit. Smart contracts carry risk regardless of how carefully they're written — never stake more than you can afford to lose, and always verify contract addresses yourself before approving or sending anything.

Frequently asked questions

What is "check in" and why do I need to do it every epoch?

Your MysticRocks NFTs never leave your wallet. "Check in" is a free on-chain call that just proves you currently own them (via ownerOf()) and registers your reward weight for that epoch. It resets every ~30 days, so you check in again each new epoch to keep earning NFT rewards.

Why is there a 5,000 $MR minimum to stake?

It keeps the reward math meaningful at scale. It only applies to new stakes — there's no minimum to unstake, and you can unstake any amount, part or all of it, whenever you want.

If I unstake all my $MR, do I lose the rewards I already earned?

No. Rewards you've already earned are tracked separately from your staked balance and stay claimable — unstaking your principal doesn't clear or forfeit anything. Press "Claim" to collect them.

Do I keep earning $MR staking rewards after I unstake everything?

No — staking rewards accrue only on your currently-staked balance, so once that's 0, nothing new accrues until you stake again. NFT holding rewards are a completely separate mechanism and keep working as long as you hold and check in.

Can the team withdraw the rewards pool or my staked $MR?

No. The contract's only fund-recovery function explicitly excludes the $MR token, so neither the rewards pool nor any staked $MR can be pulled out by anyone — including the contract owner. See the Trust & security section above.

Has the contract been audited?

It's had a manual self-review (documented in the contract's source comments) but not yet a professional third-party audit. Smart contracts carry risk regardless — never stake more than you can afford to lose.

Is this affiliated with Robinhood?

No. MysticRocks is an independent community project. Robinhood Chain is a public, permissionless network — anyone can deploy a contract on it, the same way anyone can build a website on the internet.

What determines my tier (Stone Keeper / Cave Dweller / Gem Lord)?

Only how many NFTs you check in with this epoch — 1–3 is Stone Keeper, 4–7 is Cave Dweller, 8+ is Gem Lord. It resets every new epoch, so you requalify each time you check in.

What happens if I sell an NFT after checking in?

It doesn't change that epoch's already-registered check-in. But to keep earning NFT rewards on it going forward, you'd need to still hold and check in with it again next epoch.

Where do NFT rewards come from, and when can I claim them?

Each epoch's reward budget is funded by the project from the shared pool. Once an epoch ends, everyone who checked in can claim their proportional share from the epoch history table in your dashboard.

Top stakers DEMO DATA

A live leaderboard needs an off-chain indexer (e.g. a subgraph) reading staking events — not included in this static site. The rows below are placeholders showing the intended layout.

RankWalletPowerTier