A decentralized NFT launchpad platform enabling creators to deploy ERC721 and ERC1155 token collections with integrated a16z CantBeEvil licensing, upgradeability, and comprehensive security features.
FractalLaunchpad provides a robust, scalable platform for launching NFT collections with:
- Multi-Token Support: Deploy both ERC721 (unique) and ERC1155 (multi-supply) tokens
- Built-in Licensing: Integrated a16z CantBeEvil license system with 6 configurable license types
- Upgrade Ready: UUPS proxy pattern for seamless contract upgrades with state preservation
- Gas Optimized: ERC1967 proxy pattern for cost-effective token deployment
- Security First: Comprehensive access control, role-based permissions, and upgradeability safeguards
The architecture diagram illustrates the complete system design:

System Components:
├── Core Protocol Layer (FractalLaunchpad, ProxyFactory)
├── Token Implementation Layer (ERC721, ERC1155)
├── Proxy Layer (ERC1967 Deployed Instances)
├── License Layer (CantBeEvil Integration)
└── OpenZeppelin Foundation (ERC1967Proxy, UUPS, AccessControl, etc.)
- Smart Contracts: Solidity 0.8.20+
- Testing Framework: Foundry
- OpenZeppelin: Upgradeable contracts library
- a16z: CantBeEvil licensing integration
- Proxy Pattern: UUPS (Universal Upgradeable Proxy Standard)
Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.
Foundry consists of:
- Forge: Ethereum testing framework (like Truffle, Hardhat and DappTools).
- Cast: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
- Anvil: Local Ethereum node, akin to Ganache, Hardhat Network.
- Chisel: Fast, utilitarian, and verbose solidity REPL.
- Foundry: https://book.getfoundry.sh/
- Architecture: See ARCHITECTURE.md
- A16z: See A16z.md
$ forge buildRun all tests:
$ forge testRun specific test suite:
$ forge test --match-path "test/FractalERC721.t.sol"
$ forge test --match-path "test/FractalERC1155.t.sol"
$ forge test --match-path "test/FractalERC721Upgradeable.t.sol"
$ forge test --match-path "test/FractalERC1155Upgradeable.t.sol"$ forge fmt$ forge snapshotStart a local Ethereum node:
$ anvilDeploy contracts to a network:
$ forge script script/FractalLauncpad.s.sol --rpc-url <your_rpc_url> --private-key <your_private_key> --broadcastInteract with deployed contracts:
$ cast <subcommand>$ forge --help
$ anvil --help
$ cast --helpFractalLaunchpad/
├── src/
│ ├── FractalLaunchpad.sol # Main launchpad contract
│ ├── Factory.sol # ERC1967 proxy factory
│ ├── FractalERC721.sol # ERC721 implementation
│ ├── FractalERC1155.sol # ERC1155 implementation
│ └── a16z/
│ └── CantBeEvilUpgradeable.sol # License integration
├── test/
│ ├── FractalERC721.t.sol # ERC721 core tests (59 tests)
│ ├── FractalERC1155.t.sol # ERC1155 core tests (84 tests)
│ ├── FractalERC721Upgradeable.t.sol # ERC721 upgrade tests (24 tests)
│ ├── FractalERC1155Upgradeable.t.sol # ERC1155 upgrade tests (23 tests)
│ ├── FractalLaunchad.t.sol # Launchpad tests (68 tests)
│ └── Factory.t.sol # Factory tests (21 tests)
├── script/
│ └── FractalLauncpad.s.sol # Deployment script
├── lib/ # Dependencies
│ ├── openzeppelin-contracts/
│ ├── openzeppelin-contracts-upgradeable/
│ ├── a16z-contracts/
│ └── forge-std/
├── foundry.toml # Foundry configuration
└── remappings.txt # Import remappings
- Mint and burn tokens with ownership control
- Batch minting for gas efficiency
- Customizable token URIs
- Maximum supply enforcement
- ERC2981 royalty standard support
- CantBeEvil license integration
- Multi-token support with individual supply limits
- Mint, burn, and batch operations
- Per-token URI management
- Maximum supply per token
- ERC2981 royalty standard support
- CantBeEvil license integration
- Streamlined token creation with optional platform fees
- Support for both ERC721 and ERC1155 tokens
- ERC1967 proxy deployment via role-based ProxyFactory
- Mutable implementation addresses for hot-swapping upgrades
- Launch configuration storage
- Event-based tracking
- 6 configurable CantBeEvil license types:
- PUBLIC
- EXCLUSIVE
- COMMERCIAL
- COMMERCIAL_NO_HATE
- PERSONAL
- PERSONAL_NO_HATE
- Arweave-hosted license files
- On-chain license verification
The project includes comprehensive test coverage:
- 59 ERC721 Core Tests: Standard operations, minting, burning, royalties, events, and licensing
- 84 ERC1155 Core Tests: Multi-token operations, batch minting, royalties, URI management, events, and licensing
- 24 ERC721 Upgradeability Tests: Upgrade scenarios, storage preservation, and state management
- 23 ERC1155 Upgradeability Tests: Multi-token upgrade testing and state consistency
- 68 Launchpad Tests: Platform deployment, fee management, creator workflows, and UUPS upgrades through factory
- 21 Factory Tests: ProxyFactory role management, clone creation, and access control
Run all tests with:
$ forge testView test summary:
$ forge test --summary- Access Control: Owner-based authorization for sensitive operations
- Upgrade Authorization: Only owner can authorize implementation upgrades
- State Preservation: UUPS pattern ensures no storage collisions during upgrades
- Input Validation: Comprehensive checks for max supply, token existence, and permissions
- Royalty Standard: ERC2981 compliance for marketplace royalty enforcement
- ERC165 Support: Standard interface detection for license and royalty compatibility
- Overpayments during Launch are not refunded. Our UI is designed to prevent this by guiding users to pay the accurate fee.
- For ERC1155, maxSupply is only set for token ID 0 during initialization, for other IDs, it can be set later using the setMaxSupply function
All contracts are deployed and verified on Base Sepolia:
-
FractalERC721 Implementation
- Address:
0x7cD143186e355E515967955f3df7f2a9Cd273F86 - View on Basescan
- Address:
-
FractalERC1155 Implementation
- Address:
0x9c1FcfF250afc13588F74b733f69d2Af26ec7Ba6 - View on Basescan
- Address:
-
ProxyFactory
- Address:
0x7f54120920276B20b36a535291Cc877467E6cC3a - View on Basescan
- Address:
-
FractalLaunchpad
- Address:
0x7572653dCa79e7334166b59aeB80525966D2428e - View on Basescan
- Address:
This project includes licenses from multiple sources:
- FractalLaunchpad: See LICENSE file
- OpenZeppelin: MIT License
- a16z: See license in lib/a16z-contracts/