🛡 SAFETY
How not to get robbed.
Nobody has ever lost anything here because of a bug in our contracts. The losses came from somewhere else: a fake interfacethat asked for an approval, and a key stored as plain text on a computer. This page is about those two things, because they are what actually takes people's assets.
Two rules we never break
- We will never message you first. Not on X, not on Telegram, not anywhere. If someone DMs you about this project, it is not us, whatever the profile picture says.
- We will never ask for your seed phrase or private key. Nothing legitimate ever needs them. Anyone who asks is stealing from you, and asking is the entire scam.
Our real addresses — Robinhood Chain · 4663
An attacker can deploy a contract at an address that looks like one of ours if you only read the first and last few characters. So compare the whole thing, or click through to the explorer and check it there.
A quick sanity check that costs nothing: our addresses all start with 0x1DFE… (RIGS), 0x6ACC… (GMTS) and 0x9111… (treasury). If something asks you to approve a contract that is none of the above and none of the five named in the next section — stop.
Approvals: the thing that actually empties wallets
An approval is permission for a contract to move a specific token out of your wallet. Marketplaces need it; it is normal. The danger is that an approval has no expiry and no spending limit unless the contract chooses to add one — so once you have signed one, that contract can take that token at any time in the future, and you will not be asked again.
That is exactly how a wallet gets emptied weeks after the transaction where the mistake happened. The theft does not need a new signature. The signature you already gave is still sitting there.
Only these ever need an approval from you
- RIGS — when you stake with the older staking contract. (The new no-custody staking needs no NFT approval at all.)
- GMTS — when you lock a boost, or buy a specimen paying partly in GMTS.
- The specimen certificate contract — when you buy a rock with USDG or GMTS.
- OpenSea or Seaport — only when you list something for sale yourself.
Nothing else. If a page asks you to approve any other contract, it is not us, no matter how much it looks like us.
How to see and take back what you have given
- Open a revoke tool —
revoke.cashis the well-known one — and connect the wallet you actually use. - Switch it to Robinhood Chain · 4663.
- Read the list. Anything you do not recognise, revoke it. Revoking is a normal transaction and costs a small amount of gas.
- Revoking never unstakes anything, never moves an NFT, and never touches earned GMTS. It only removes permission. Nothing is lost by revoking.
Is this the real site?
- We only ever link to it from our own accounts. A link in a DM, a comment, or a reply is not a link from us — check the domain letter by letter before you connect anything.
- Real pages never ask for a seed phrase. Not to "validate", not to "migrate", not to "restore". There is no such feature and there never will be.
- Be suspicious of urgency. "Before it expires", "last chance", "your wallet is at risk, act now" — the rush is the weapon. Nothing here is ever that urgent.
- An unexpected mint or claim is bait. If you did not ask for it, it is a trap that exists to get one approval out of you.
If something has already gone wrong
- Move what is left, first. If the wallet is compromised, send remaining assets to a fresh wallet whose key has never touched that machine. Speed matters more than tidiness.
- Revoke every approval from the compromised wallet, even though it is now empty — it stops a future deposit being taken too.
- Do not pay a "recovery" fee. Nobody can reverse a blockchain transaction. Services promising to get your assets back are taking a second payment from the same victim.
- Write down what you signed, and when. The transaction hash, the contract, the site you were on. That record is the only thing that helps afterwards.
- Assume any key that was on that computer is gone forever. Do not reuse it, and do not reuse a key you have ever typed into a website.
What happened to us, plainly
In September a wallet belonging to this project was drained. The cause was a fake Uniswap interface that secured an unlimited approval, combined with a key that was stored as plain text on a computer. The contracts were never broken. Nobody exploited a bug in our code — they were invited in by a signature.
Everything since followed from that: real assets now live only on a hardware wallet, every contract we deploy has no owner and no rescue function so there is nothing for an attacker to seize even if a key leaks, and this page exists so the same trick does not work on you.
Why a leaked key cannot drain our contracts
Our vault contracts — the commitment vault, the token locker, the vesting vault and the barter contract — have no owner, no pause, no upgrade path and no rescue function. There is no administrative key that can redirect anything, because no such function was written. Verify it rather than taking our word for it: the source is public at github.com/goodsmash/goodsmash-vaults and the compiled contracts are readable on the explorer.
One honest limit: a contract with no owner can also never fix a mistake or recover a token sent to it by accident. That trade was made deliberately — a rescue function that saves one person's stray token is the same function that opens someone else's lock.