Everything you need to run a successful community on MOMO Battle. For admins + community owners.
1. Making your NFT collection visible
When you mint your first contest-winner NFT, the token lives on Solana immediately. But for it to show up as a proper “collection” on NFT marketplaces (with a banner, description, verified checkmark, etc.), you need to register with each marketplace separately. This is a one-time task per community.
Magic Eden (most important)
Magic Eden has a self-service Creator Hub:
- Visit creators.magiceden.io
- Connect the Treasury Wallet (NOT the Minter) — this proves you're the owner
- Click “Create Collection”, select Solana mainnet, pick “Existing collection”
- Paste your on-chain Collection address (from your admin panel → Collections page → copy from the “Minted” badge)
- Add banner, description, social links (Twitter, Discord, website)
- Submit for review. Most communities verified within 24h.
Without this step: your NFTs appear as “Unverified Collection” and floor price / volume stats won't aggregate. Do this before announcing your first contest.
Tensor
Tensor is the other major Solana NFT marketplace (higher-end trader base). Their verification is Discord-based:
- Join tensor.trade Discord
- Open a ticket in the #creator-support channel
- Provide: Collection address, Treasury wallet, Twitter / Website, short description
- They verify on-chain ownership + check the on-chain metadata
Tensor is stricter than Magic Eden about collection quality — they want a real community with real trading interest before listing. Come with traction, not just a brand-new collection.
Solscan + Helius + DAS (automatic)
These indexers crawl every on-chain transaction and auto-list your NFTs. No action needed — your NFTs are already visible at:
- solscan.io — Solana block explorer, most-used
- solanafm.com — alternative explorer
- Helius DAS API — used by wallets (Phantom, Solflare) to show NFTs in user wallets. Nothing to do, happens automatically.
Other platforms to consider
- Phantom Wallet: if users hold your NFT, it appears in their wallet UI automatically
- DRiP Haus (drip.haus): free NFT distribution platform — good for growth campaigns
- Fungi: NFT-focused mobile-first marketplace
- Exchange.art: curated, more art-focused
2. Content policy + your responsibility
⚠️ Community owners are responsible for content.
MOMO Battle is a platform. You are the operator of your community. You are legally and operationally responsible for what your community members submit, share, or distribute via your subdomain. This is the same model as Discord servers, subreddits, or any other community-hosted service.
What the platform enforces automatically
- NSFW detection: every submission runs through
nsfwjs before being published. Scores above 70% are auto-rejected, 30–70% go to human review, below 30% go live automatically. - Duplicate image detection (coming soon): prevents the same meme being farmed across multiple contests.
- Platform suspension: we (platform operators) can suspend any community that violates our Terms of Service. Hosted content disappears, wallet stays intact.
What YOU as community owner must do
- Set + enforce your own content rules. Publish them on your community's page. What counts as OK content in your community?
- Appoint moderators. The admin panel has a Moderators section — invite trusted community members to help triage the submission queue. Their role is approve/reject only, nothing else.
- Review the NSFW Review queue daily during active contests. The automated check catches obvious cases; borderline ones land in review.
- Handle DMCA / takedown requests. If someone claims a submitted meme infringes their copyright, you as community owner must respond. We will forward any claims that reach the platform to you.
- Comply with local laws. If your community targets a specific country, you need to follow that country's rules on content, gambling-like mechanics (voting with payments could trigger in some jurisdictions), etc.
What triggers a platform-level intervention
- Child safety issues → immediate suspension + law enforcement report
- Illegal content (revenge porn, stolen/leaked material, etc.)
- Explicit hate speech / dehumanisation of protected groups
- Attempts to use the platform for scam coin pumps, rugpulls, or pyramid-like schemes
- Abuse of our infrastructure (DDoS, mass-uploading, etc.)
Platform-level suspension is instant, without notice for the above categories. See our Terms of Service for the full list.
3. NFT standard: what we actually mint
Short version: Metaplex Core, fully on-chain, immutable after mint, with marketplace-enforced royalties. This is the modern standard (2024+) on Solana, chosen deliberately over older approaches.
Where every SOL flow goes — one table
| Flow | When charged | Who gets paid | Configurable by |
|---|
| Submission fee | User pays to submit a meme | Split on-chain: (100 − platformFeeBps/100)% → your Treasury, platformFeeBps/100% → Platform billing wallet | Amount: you (submissionFeeLamports in /admin/settings). Platform cut: super-admin only (500 bps default, 0 for MOMO founder rate) |
| Vote fee | User pays to vote on a submission | Same split as submission fee | You (voteFeeLamports in /admin/settings). 0 = free voting. |
| SOL Lottery | Admin clicks “SOL Lottery” on a closed contest | Paid from YOUR minter wallet to a random voter. Not from the platform. | You (lotteryEnabled + lotteryAmountLamports in /admin/settings). Fund your minter accordingly. |
| On-chain royalty | NFT is resold on Magic Eden / Tensor | Your Treasury wallet (configured in /admin/settings). Falls back to your Minter if Treasury is unset. | Rate is currently fixed at 500 bps (5%) at mint time. Recipient is your Treasury. |
| NFT mint cost | Any time an NFT is minted (winner, lucky draw, manual) | ~0.003 SOL network fee paid from YOUR minter wallet + Arweave upload fee (also from minter) | Not configurable — Solana network determines tx fee. |
| Platform subscription | Monthly, after 30-day trial | Platform (us) — 49 USDC/month | Super-admin only. See /admin/billing to pay. |
🏦 Fund your Minter Wallet before launch
Send ~0.1 SOL (more if you plan to use SOL Lottery) to the Minter address shown in /admin/settings. That wallet pays Arweave uploads, NFT minting tx fees, AND lottery payouts. When it runs empty, mints will start failing.
The technical stack
| Property | Value |
|---|
| Token standard | Metaplex Core (mpl-core) — NOT legacy Token Metadata, NOT compressed NFT, NOT Token-2022 |
| Metadata storage | Arweave (permaweb), signed + uploaded via Turbo |
| On-chain royalty | 500 basis points = 5% on every secondary-market sale. Rate is currently fixed; recipient is per-tenant. |
| Royalty recipient | The community's Treasury Wallet (tenant-controlled). Falls back to the Minter Wallet if Treasury is unset. Configured in /admin/settings. |
| Royalty enforcement | ProgramAllowList: Magic Eden v2, Tensor Marketplace, Tensor AMM, Tensor Swap |
| Plugins on each NFT | Royalties + Attributes + ImmutableMetadata + AddBlocker |
| Mint cost | ~0.003 SOL (paid from the community's Minter Wallet) |
| Transactions per mint | 1 (all plugins inlined into the create instruction) |
Why these choices
Metaplex Core, not legacy Token Metadata
Legacy (Token Metadata) NFTs require 3+ accounts per NFT (mint, metadata, edition) + cost ~0.012 SOL to mint. Core uses a single account per NFT, costs 1/4th, and is the direction Metaplex is actively developing. Marketplace support caught up in 2024. There's no reason to mint legacy NFTs in 2026.
ImmutableMetadata + AddBlocker
Two on-chain plugins, enabled at mint time, that make the NFT collector-trustable:
- ImmutableMetadata: the NFT's name + metadata URI can never be changed. Not by you, not by the platform, not by anyone. Once minted, the image + attributes are locked forever.
- AddBlocker: no new plugins can ever be added to the NFT. This guarantees the NFT's on-chain behaviour is frozen — no one can suddenly add a freeze/seize capability later.
Trade-off we accepted: this means we can never retroactively add a new Metaplex plugin (e.g., a new marketplace integration plugin in 2028) to already-minted NFTs. Collectors get rock-solid guarantees in exchange for reduced future flexibility. For contest-winner NFTs where provenance matters, that's the right trade-off.
ProgramAllowList for royalties
Solana royalties are enforced by the marketplace program, not the token itself. Our Royalties plugin uses a ProgramAllowList that says: only Magic Eden v2, Tensor Marketplace, Tensor AMM, and Tensor Swap can transfer this NFT on sale. All of these programs honour the 5% royalty. Transfers through any other marketplace are simply blocked (not just royalty-free — blocked entirely).
This is the same approach Compressed NFTs tried and failed at. On Core, it works because Core's on-chain logic directly checks the allowlist at transfer time.
Arweave for metadata storage
Metadata (the JSON with image, traits, etc.) lives on Arweave — a “permaweb” protocol where data is stored in perpetuity after a one-time payment. This matches the NFT's own permanence guarantees. IPFS would also work, but Arweave's payment model is simpler and the uptime is good.
What collectors can verify themselves
- Via Solscan: look up any NFT on Solscan, scroll to the “Plugins” tab. You should see: Royalties (bp=500, ProgramAllowList with 4 entries), Attributes, ImmutableMetadata, AddBlocker.
- Via Metaplex Explorer: core.metaplex.com — paste the NFT address, see all plugins + state.
- On-chain directly: any wallet / program can read the asset account and verify the plugin set. No off-chain trust needed.
✓ The guarantee collectors get
“The image I see now is the image I'll always own. Nobody can retroactively change it, swap it, or add anything to this NFT. If I sell it on Magic Eden or Tensor, 5% goes to the community's treasury — I can verify the treasury wallet address on-chain.”
SOL Lottery (optional)
Separate from the Lucky Draw NFTs. If enabled, the admin can click “SOL Lottery” on a closed contest to draw one random voter and send them SOL.
- Who pays: YOU. The SOL is drawn from your Minter Wallet, not the platform.
- Default amount: 0.007 SOL (~$1), configurable 0–0.1 SOL in /admin/settings.
- Enable / disable: one toggle per community in /admin/settings. New orgs default to enabled.
- Fund the Minter: if you want to run lotteries, keep enough SOL in the Minter to cover contests × amount + mint costs.
4. Running your community (admin ops)
First steps after onboarding
- Fund your Minter Wallet: send ~0.1 SOL to the minter address shown in /admin/settings. This covers Arweave uploads + on-chain mints for your first ~30 NFTs, plus any SOL Lottery payouts you plan to run.
- Set your Treasury Wallet: admin → Settings. This is where submission fees, vote fees, and secondary-market royalties flow. You control this wallet directly — we never touch it.
- Configure fees: in the same Settings page, pick your submission fee (0 – 0.1 SOL) and vote fee (0 = free voting). Also decide whether to enable the SOL Lottery and at what amount.
- Customise branding: admin → Settings — set your logo, primary color, description.
- Invite moderators: admin → Moderators — add trusted community members to help with the submission queue.
- Create your first Collection: admin → Collections → “New Collection”. This becomes the on-chain grouping your NFTs will belong to.
- Mint the Collection on-chain: click “Mint On-Chain” on the Collection detail page. Costs ~0.005 SOL (from your Minter).
- Register with Magic Eden (optional but recommended): see section 1 above.
- Create your first Contest: admin → Contests → “New Contest”. Link it to the Collection you just made.
Moderation workflow (for admins + mods)
The Moderation page (/admin/submissions) shows all submissions awaiting review. Use keyboard shortcuts to fly through:
J / K — next / previousA — approveR — rejectX — add to bulk selection, then Enter to bulk-approve? — show shortcut help
Billing + subscription
49 USDC per month after the 30-day trial. Pay via admin → Billing: send USDC to the platform wallet with the required memo, paste the tx signature in the verify form. We confirm on-chain within seconds.
If you miss a payment: 5-day grace period where the site still works for reads but new contests + manual mints are blocked. After grace: full suspension, can be reactivated anytime by paying.
Missing something? Drop us a line on Telegram and we'll add it.