How $SNPONS
rewards work.
Hold $SNPONS, request a claim, and receive tokenized stock from the points treasury. This page covers the tiers, the review queue, and everything the contract does.
01 Overview
S&PONS is a meme index built around one line from the Pons founder: the points treasury will hold any tokenized stock we list. The token is $SNPONS, it lives on Robinhood Chain, and holding it makes you eligible to claim a basket of tokenized stock from that treasury.
The amount you can claim depends on how much $SNPONS you hold. Three tiers, three baskets. You keep your $SNPONS the whole time — claiming does not burn, lock, or spend it.
Claims are not paid out automatically. When you click Request, the contract records your tier and balance and puts you in a queue. A human reviews the queue and releases each payout by hand. Nothing arrives instantly, and that is by design.
02 Quick start
Four steps, about two minutes if your wallet is already set up.
- Get $SNPONS — buy at least 1,000,000 to reach the first tier. Use the contract address from section 07, never one from a DM.
- Add Robinhood Chain to your wallet — one click in section 06, or add it manually with the parameters listed there.
- Connect on the rewards panel. Your balance and tier appear straight away, read live from chain.
- Request the claim. You sign one transaction (gas in ETH) and your status becomes PENDING. Then you wait for review.
Tier is checked at the moment you request, and again by a human before payout. Buying right before requesting and selling right after is visible on chain and will get the request rejected.
03 Reward tiers
Your tier is whatever your $SNPONS balance qualifies for. There is no registration and no snapshot to miss — the contract reads your balance when you request.
The thresholds above are stored on chain, so anyone can verify them by
calling tierMinimums() on the claim contract. If this page and the contract
ever disagree, the contract is right.
Basket contents are set at payout time and may be adjusted as the treasury's holdings change. The tier thresholds are the fixed part.
04 How claiming works
A claim is a request, then a review, then a payout. Here is the whole path, and who does each part.
requestClaim(). The contract checks you are above the first
tier, then stores your tier and your exact balance at that moment. No tokens move.
Every step is a real transaction on Robinhood Chain, so the whole history is public and auditable on the explorer.
Tokenized stocks are real assets, not meme supply. A manual release step means a person checks each wallet before value leaves the treasury — it catches wash trading, flash-buys and duplicate wallets that an automatic contract would happily pay.
05 Claim statuses
The rewards panel shows one of five states, read directly from the contract with
statusOf(yourAddress).
| Status | Code | What it means | What to do |
|---|---|---|---|
| NOT QUEUED | 0 | You have never requested. | Request, if you are above tier 1. |
| PENDING | 1 | You are in the queue, waiting for review. | Nothing. Do not request again — the contract will refuse. |
| APPROVED | 2 | Cleared for payout, not sent yet. | Nothing. Your basket goes out in the next batch. |
| REJECTED | 3 | Turned down, with a reason in the event log. | You may request again. |
| FULFILLED | 4 | The basket has been sent. | Check your wallet for the tokenized stock. |
06 Wallet & network setup
Any EVM wallet works — MetaMask, Rabby, Coinbase Wallet, and anything else that supports EIP-6963. You need ETH on Robinhood Chain for gas; there is no separate gas token.
Or add it manually
| Field | Mainnet | Testnet |
|---|---|---|
| Network name | Robinhood Chain | Robinhood Chain Testnet |
| Chain ID | 4663 | 46630 |
| RPC URL | https://rpc.mainnet.chain.robinhood.com | https://rpc.testnet.chain.robinhood.com |
| Currency symbol | ETH | ETH |
| Explorer | https://robinhoodchain.blockscout.com | https://explorer.testnet.chain.robinhood.com |
If your wallet asks for hex, mainnet is 0x1237 and testnet is
0xB626. Some third-party listings print 0x123F for mainnet —
that is wrong, it decodes to 4671.
07 Contract addresses
These are the only addresses to trust. Bookmark this page and compare before every transaction.
These addresses are still placeholders. Until they are published here, any address you are given elsewhere is a scam — including in Telegram, Discord or a reply on X.
08 FAQ
Do I have to sell or lock my $SNPONS to claim?
No. Your $SNPONS never leaves your wallet. The contract only reads your balance; it has no permission to move your tokens, and you are never asked to approve a spend of $SNPONS.
Does requesting cost anything?
Only gas, paid in ETH on Robinhood Chain. There is no fee to the treasury, and you never send tokens to claim.
How long does review take?
It is a manual process, so it depends on queue length. Your status moves to APPROVED when cleared and FULFILLED when the basket is sent — both are visible on the rewards panel and on the explorer.
What happens if I sell after requesting?
The contract stores your balance as it was at request time, and the review console shows that snapshot next to your current balance. A wallet that dropped is flagged, and the request will usually be rejected.
Can I request twice, or from several wallets?
One request per address; the contract refuses a second one while yours is pending, approved or fulfilled. Splitting a bag across wallets to farm the lowest tier repeatedly is exactly what the manual review catches.
I was rejected. What now?
Rejections carry a reason, recorded in the contract's event log and readable on the explorer. Once rejected you can request again, so if it was a mistake or you have fixed the issue, submit a fresh request.
My tier looks wrong.
Press Refresh balance on the rewards panel — it re-reads from chain. If it still disagrees, check that your wallet is on chain 4663 and that you are looking at the wallet that actually holds the tokens.
Are the rewards guaranteed?
No. Payouts depend on what the treasury holds, and every request is reviewed individually. Eligibility is not a promise of payment.
09 Safety
Nobody will ever ask for your seed phrase or private key. Not the team, not support, not a "verification bot". Anyone who does is stealing from you.
You never need to send $SNPONS, ETH or any token to claim. If a page asks you to transfer tokens "to verify", close it.
- Only use addresses from section 07 on this domain.
- The claim flow asks you to sign exactly one transaction:
requestClaim(). It carries no token approval. If your wallet shows a spend approval, reject it. - The admin console at
/admin.htmlis gated by an on-chain owner check. It is useless to anyone else — if someone sends you a link to it "to claim faster", it is a scam. - Tokenized stocks are regulated instruments in most jurisdictions. Eligibility here is not investment advice, and availability may differ where you live.
10 For developers
The claim contract is a small, dependency-free Solidity file. The front end talks to it over plain EIP-1193 with no web3 library — selectors are derived at runtime from signature strings with an inlined keccak-256.
Read your own state
# eligibility tier: 0 = none, 1..3 = tier cast call $CLAIM "tierOf(address)(uint8)" $YOU --rpc-url https://rpc.mainnet.chain.robinhood.com # claim status: 0 none, 1 pending, 2 approved, 3 rejected, 4 fulfilled cast call $CLAIM "statusOf(address)(uint8)" $YOU --rpc-url https://rpc.mainnet.chain.robinhood.com # the full row, including your balance snapshot cast call $CLAIM "getRequest(address)" $YOU --rpc-url https://rpc.mainnet.chain.robinhood.com
Interface
// anyone function requestClaim() external; function tierOf(address) external view returns (uint8); function statusOf(address) external view returns (uint8); function tierMinimums() external view returns (uint256[] memory); function requestCount() external view returns (uint256); // owner only function approveClaim(address) external; function rejectClaim(address, string calldata reason) external; function fulfill(address, address[] calldata tokens, uint256[] calldata amounts) external;
Events to index
event ClaimRequested(address indexed account, uint8 tier, uint256 balance); event ClaimApproved(address indexed account, uint8 tier); event ClaimRejected(address indexed account, string reason); event ClaimFulfilled(address indexed account, address[] tokens, uint256[] amounts);
Payout follows checks-effects-interactions and is reentrancy guarded: the row flips to FULFILLED before any token call, and if a transfer fails the whole transaction reverts, so a row can never be silently marked paid. The contract holds no permission over your $SNPONS.
Full source, tests and deployment notes live in the repository: github.com/CoredAlpha/snpons.