The composable marketplace V2
We rebuilt the contract that holds every NFT listing on downbad. It puts royalties back in creators' hands and lets your listings reach buyers on other marketplaces — automatically. Here's what changed and why.
Why we rebuilt it
The original marketplace contract — call it v1 — locked everyone into one set of rules. 5% royalty to the creator, 3% to the marketplace, on every sale of every collection. Those numbers were baked into the contract itself. Nobody could change them.
The new v2 contract fixes that, and tightens up the old one along the way. The headline wins:
- Creators choose their own royalty rate. Set it once on your collection. Change it whenever. 0%, 10%, anything in between.
- Sellers can override when creators allow it. Run loyalty events or fee-waiver promos by letting your community pick their own rate, up to a cap you set.
- Security and reliability fixes. v2 closes a handful of small vulnerabilities in the original contract and the edges where bits of fee occasionally went missing on certain sales. Nothing dramatic, but worth doing right.
- Multi-edition collections work smoothly. A quirk in v1 made listing multiple copies of the same NFT awkward. v2 handles it natively, so 10, 100, or 1000 editions can all be live at once with no workarounds.
How royalties work
- 5% creator royalty (always)
- 3% marketplace fee (always)
- Same for every collection. Period.
- Creator royalty: chosen by the creator (0–10%)
- Marketplace fee: set per listing
- Optional: sellers can override when allowed
Every listing carries its own royalty rate, set the moment it's created. If a creator changes their default tomorrow, every existing listing keeps the rate it was listed at. Nothing changes underneath you.
Before you confirm a purchase you always see the exact split — what you pay, what the seller takes home, what goes to the creator, what the marketplace earns. Nothing is hidden.
If you're a creator
You're in charge of royalties on your collection. On the royalty settings page you can:
- Set your default rate (0–10%) — applies to all new listings.
- Allow sellers to pick their own rate (optional), with a cap you choose.
- Change either of these any time. Existing listings keep their original rate.
See the step-by-step creator guide for how to set this up.
If you're a seller
When you list an NFT, the listing modal shows your proceeds breakdown live — every line of the split, in ALGO. If the collection allows it you'll see a Custom switch in the Creator fees row: flip it on and type your own royalty percentage, up to the collection's cap.
If you list a batch of NFTs from multiple collections and any one of them doesn't allow overrides, the switch is disabled for the whole batch. List those separately if you want different rates for different items.
Cross-marketplace listings
The marketplace contract is composable: every sale pays two marketplace addresses, not one.
- The listing-side marketplace — the UI where the listing was created (e.g. downbad).
- The buyer-side marketplace — the UI where the buyer actually clicked Buy.
Both get the same cut. When another marketplace integrates the contract, they can list our inventory in their UI, take buyer-side traffic on it, and earn the buyer-side fee. The listing itself never moves — it's the same on-chain object, just rendered in two places.
For sellers, this means more eyeballs without any extra work. For buyers, deeper markets and better prices. We get there together, not by walling each other off. This property has been there since v1; v2 keeps it intact.
What about my old listings?
v1 isn't going anywhere. We won't force a migration. Every listing on downbad knows whether it's v1 or v2, and the app routes each buy / cancel / reprice to the right contract automatically. You'll never have to think about which one a particular listing belongs to.
What changes over time is where new listings go. As the v2 rollout reaches you, new listings move to v2 by default. v1 listings stay live until they sell or are cancelled.
Safety
- Sales are atomic. The buyer's payment and the NFT transfer happen in one on-chain transaction. Either everything succeeds or nothing happens.
- Royalties are enforced on-chain. The contract checks the math on every list and every sale. The UI can't skip a payment to the creator even if it tried.
- Listings are immutable. Once a listing exists, its price and royalty rate are fixed. Re-pricing is implemented as a cancel + relist, so there's no way to silently change the terms.
- Everything is public. Both contracts and every listing are visible on-chain. You can verify the rules and the splits yourself on the marketplace contracts page.