how it works
Wormhole carries value across chains. S#!thole carries worthlessness in circles within one collection.
the pitch
You bought into a collection that promised the moon and delivered a flat tyre. The team is gone, the floor is dust, and your JPEG still costs more in storage than it's worth in trades. Shithole accepts your situation and turns it into a game: trade your worthless NFT for a different worthless NFT from the same collection. Pure peer-to-peer, on chain, no mints, no burns, supply unchanged.
how a swap works
- You pick a curated pit (collection) from the home page.
- You choose one NFT from your wallet to drop in. It must belong to the same collection as the pit — no cross-collection laundering.
- You pay two small ADA fees (more on those below) and submit the transaction.
- The contract gives you back a different NFT from the pit's current stash. There is an element of randomness in which one you end up with — it's not first-come-first-served, and the result is bound to your specific transaction so nobody can game it after the fact.
The protocol is designed so many people can swap from the same pit at the same time without stepping on each other. No queues, no lock-step. Submit when you want, your tx settles on its own.
for listers — read this twice
Listing an NFT means authorising anyone to swap it out for a different NFT from the same collection.
Once swapped, you will not get your original NFT back unless somebody else later swaps it back into the pit. That may never happen.
If you're emotionally or financially attached to a specific NFT, do not list it. There is no undo button.
Listing is for NFTs you've made peace with losing. In return, every swap that lands on your listing accrues a small ADA tip (the lister fee, see below) on the listing UTxO itself. Cancel the listing whenever you want and the accrued ADA flows back to you in one transaction.
list, unlist, collect
- list — open a pit, select one or more NFTs from your stash, confirm. Each NFT goes into its own listing UTxO. You stay the lister of record.
- earn — every time someone swaps an NFT against your listing, the lister fee piles up on the listing UTxO. You can leave the listing indefinitely.
- cancel / collect — head to /me, click cancel on the listing. Whatever NFT is currently sitting in that UTxO plus all the accrued ADA returns to your wallet in one tx.
- relist— if you just want the accrued ADA but you're happy to keep earning, cancel and immediately list again. Two transactions, one user action.
the p2p side — find another idiot directly
The pit gives you randomworthlessness back. The p2p side lets you be picky: you lock one of your NFTs together with an ADA deposit at a script, declaring that you'll accept any NFT from delegators of a specific Cardano stake pool. Anyone holding a qualifying NFT — human or automated — can take the deal and the contract atomically swaps the two. If nobody takes it, you reclaim. Nothing expires on its own.
The "deposit" isn't what you spend — about 1.4 ADA flows back to your wallet attached to the incoming NFT. The create-listing flow shows the live breakdown. terms & conditions has the full risk picture, including how the curated pool list works.
how to use p2p
Everything lives behind the p2p ▾ menu in the top nav.
- post an offer —
p2p ▾ → make offer(or /p2p/new). Pick the pool whose NFT you want to receive, pick one or more of your wallet's NFTs to offer in exchange, set your deposit, sign. Your NFT + ADA lock at a permissionless script address. The receipt shows your effective cost — the chunk of the deposit that doesn't come back to you. - swap into someone else's offer —
p2p ▾ → open offers(or /p2p). Browse every active listing other people have posted. Toggle only listings I can fulfillto narrow to the ones your wallet's NFTs actually qualify for. Tap a card, pick which of your NFTs to deposit, sign. You walk away with the buyer's offered NFT plus the bulk of their deposit (the deposit minus the protocol fee, the network tx fee, and the min-utxo on your delivery output). - find your own listings —
p2p ▾ → your offers(or /me/p2p). Lists every wanted-listing you've created that's still open on chain. Spent (filled or reclaimed) listings drop off automatically once the indexer sees them. - reclaim — on /me/p2p, tick the listings you no longer want filled, click reclaim N. One transaction returns your NFT(s) and locked ADA. Multiple listings against the same collection are batched into a single tx — one signature, one network fee, all back in your wallet. Nothing auto-expires; if you don't reclaim, the listing stays open forever (or until someone fills it).
fees
Fees are not fixed. Each curated collection has its own numbers, set by the collection's admin in the on-chain config, and they can change over time as the admin updates the config. The actual numbers for a given pit are always visible on its swap page before you confirm.
There are two fees on every swap:
- protocol fee — goes to the project treasury. Pays for indexer hosting, mainnet chain costs, and the occasional pizza.
- lister fee — accrues on the listing UTxO that your swap touches. Claimable by whoever originally listed that NFT. Minimum 1 ADA, but the actual amount depends on the collection.
on mobile
Shithole works on phones. Open your wallet's in-app dApp browser — Eternl, Vespr, and Lace all have one — and type shithole.app in the address bar. Your wallet connects automatically. No QR-code dance, no second device.
your favourite rug isn't here yet?
Curation is intentionally human. We're not going to let someone list a CNFT-shaped Trojan horse just because the policy ID is valid. If you want a collection added:
- DM us on X: @Shithole_App
- Or open a GitHub issue: easy1staking-com/shithole
open source
Contracts, indexer, and frontend are all on GitHub: easy1staking-com/shithole. Two Aiken validators back the protocol: a multi-handler config validator that guards the per-collection parameters, and a listing validator that enforces every swap and cancel. Both are parameterised per collection — the on-chain address you interact with on each pit is derived from the collection's config NFT policy.
Before you click anything, read the terms & conditions. Smart contracts are real software. Funds at risk.