Getting Started
Welcome to the Frensei Launchpad documentation. Frensei is a creator-first launchpad on the Sei Network, designed to simplify NFT launches while offering advanced configurability and scalability. This documentation outlines the Frensei smart contract functionality, platform features, and best practices for creators.
1. Overview
Frensei is a platform built by Diddybread, as part of the On-Chain Orbiters roadmap, the first fully on-chain NFT on Sei. Designed for NFT project creators, Frensei offers:
A powerful ERC721A-based smart contract
On-chain royalties
Burnable NFTs
Dynamic minting phases with allowlists
An intuitive creator portal
The platform is entirely free to use. However, it assumes a baseline understanding of NFTs and EVM-contracts.
2. Key Features
✅ Scalable Launchpad
Automatically adjusts to accommodate increasing traffic.
✅ Responsive Design
Optimized for all screen sizes, including mobile.
✅ Allowlist Manager
Supports CSV-based allowlists with optional mint quantities per address.
✅ Dynamic Mint Allocations
Allow different users to mint different quantities in allowlisted phases.
✅ Wallet Checker
Integrated on the collection page to ensure wallets are mint-ready.
✅ Creator Portal
Manage mints, set token URIs, configure mint phases, and withdraw funds directly from the UI.
✅ On-Chain Royalties
Native support for ERC2981 royalty standard.
✅ Burn Support
Built-in burnable functionality using ERC721ABurnable.
3. Smart Contract Functionality
Contract Name: Frensei
Frensei
Standard: ERC721A
Inherits:
ERC721A
,ERC721ABurnable
,ERC2981
,Ownable
,ReentrancyGuard
Core Concepts
Mint Phases
Each phase includes:
startTime
/endTime
price
merkleRoot
(for allowlists)maxMintPerWallet
(0 = unlimited)mintableSupply
(0 = remaining global supply)
Multiple phases can be active concurrently.
Minting
mint()
function validates phase, proof (if needed), supply limits, and processes payment (Sei or ERC20).Dynamic allowlists via Merkle trees allow different mint quantities per address.
Token URI Management
baseTokenURI
+ optional iterative suffixing (e.g.,/1.json
,/2.json
, etc.)setTokenURI()
allows override per-token
Royalties
Configurable receiver and percentage (in basis points)
Uses ERC2981
Payments
Supports Sei or ERC20
Configurable before minting begins
Collected funds can be withdrawn via
withdrawFunds()
4. Creator Responsibilities
Metadata Standards
Creators are responsible for producing valid token metadata. Follow the OpenSea metadata standard: https://docs.opensea.io/docs/metadata-standards
Token URI Setup
Base URI: A static string like
https://mycdn.com/metadata/
Iterative URIs: Add numbered suffix like
/1.json
Per-token URI: Use
setTokenURI()
to override
Allowlist CSV Formats
Simple:
With quantity:
Default quantity is 1 if not specified.
5. Common Errors and Troubleshooting
Error
Meaning
NotEnoughSupplyAvailable
Supply limit reached (phase or global)
InvalidPhase
Phase index out of bounds or not active
InvalidProof
Merkle proof incorrect
MintAllowanceExceeded
Wallet mint limit exceeded
InsufficientPayment
Sei/Token sent does not match required amount
NonExistingToken
Token URI called on a non-minted token
InvalidPaymentToken
ERC20 token address is invalid or zero
FundTransferFailed
Sei withdrawal failed
6. Advanced Configuration
Switching Payment Type
Use setPaymentToken()
to configure Sei vs ERC20 payment. Must be set before minting starts.
Updating Mint Phases
Use setMintPhases()
with an array of phases. Replaces all existing phases.
Freezing or Unfreezing Minting
Use setMintable(true|false)
to toggle.
7. Security Considerations
Uses
ReentrancyGuard
on mint and withdrawValidates Merkle proofs on-chain
Owner-only functions clearly scoped
Tokens use
_exists()
checks for URI safety
8. FAQ
Q: How do I start a mint?
Set, save and sync mint phases and token URI
Toggle
mintable
to true
Q: How do I check if a user is on the allowlist?
Each collection on Frensei has a dedicated whitelist checker which can be found at https://frensei.io/collections/{your-collection-slug}/allowlist
Q: Can I change the metadata after mint?
Yes, using
setTokenURI(tokenId, newUri)
for specific tokens orsetBaseURI(baseURI, extension, iterative)
for the entire collection
Q: Can I limit users differently?
Yes, by setting different
allowedMints
in your Merkle tree
Q: Is there a platform fee?
No. Frensei is free to use.
9. Contact & Support
The platform is free to use and we offer no direct support services.
For bug reports or feature requests, join our Discord.
Happy minting 🚀
Last updated