Developer & Protocol Docs
The complete technical specification for Pizza Shop NFT, on-chain reward economics, Base Sepolia smart contracts, and testnet onboarding.
Protocol Overview & Concept
Pizza Shop NFT is a provably fair, retro-styled on-chain franchise collectible program deployed on Base Sepolia (Chain ID 84532). The system introduces an auditable, continuous emission tokenomics model where NFT holders accumulate utility reward tokens ($PIZZA) across a fixed 365-day emission timeline.
Total NFT Supply
100,000
ERC-721Enumerable standard
Fixed Mint Price
0.0001 ETH
Emission Escrow
80,000,000
$PIZZA (100M total, 20M LP)
Base Sepolia Smart Contracts
All contracts are deployed on the Base Sepolia testnet. They utilize OpenZeppelin 5.x audited primitives with strict 2-step ownership, reentrancy guards, and immutable parameter checks.
| Contract Name | Standard | Base Sepolia Address | Explorer |
|---|---|---|---|
| PizzaShopNFT | ERC-721Enumerable | 0x890c5908AdE4FcF8538b4a655cEE7e4EECD2a92C | BaseScan |
| PizzaShopRewards | Reward Escrow | 0xd0da530939EE3F7D6979da265E809496d3372fc7 | BaseScan |
| PizzaShopToken | ERC-20 ($PIZZA) | 0x8d0E2fB5d7ec90b44b128b8B2fdA31b6A71Bd6B9 | BaseScan |
| PizzaShopMarketplace | Trading & Listings | 0x85060D3668E0C552409b49A3F5F59f0bB7a57E0C | BaseScan |
Franchise Ranks & Multipliers
Every minted NFT is assigned one of four immutable ranks upon reveal. Ranks determine the NFT’s proportional share of the 80,000,000 $PIZZA reward escrow pool based on its weighted multiplier.
Driver
1x Multiplier55% of Collection (55,000 Max)
Cook
2x Multiplier22% of Collection (22,000 Max)
Manager
3x Multiplier17% of Collection (17,000 Max)
Owner (Ultra-Rare)
4x Multiplier6% of Collection (6,000 Max)
$PIZZA Continuous Reward Emissions
Rewards are calculated and accrued every single second. Holders do not need to stake or lock their NFTs; ownership of the token ID continuously entitles the wallet to claim accumulated $PIZZA.
// Continuous Linear Accrual Formula:
elapsed = block.timestamp - activationTime;
annualRate = (TOTAL_BUDGET * rankMultiplier) / TOTAL_WEIGHTED_UNITS;
accrued = (annualRate * elapsed) / 365 days;
claimable = accrued - claimedForToken[tokenId];
- No Redistribution: Unminted NFTs do not accrue rewards. Unused emissions remain in the escrow contract and cannot be diluted.
- Batch Claiming: Users can claim across all owned NFTs in a single transaction via batchClaimRewards(uint256[] tokenIds).
How to Acquire Base Sepolia Testnet Tokens
To test minting and reward claiming, you need a small amount of Base Sepolia ETH. Below are the fastest ways to get tokens:
Option A: Built-in Pizza Community Faucet (Instant 1-Click)
Dispenses Base Sepolia testnet ETH directly to your connected wallet for gas fees & testing.
Option B: Configure Base Sepolia in Your Wallet
Add RPC parameters automatically or manually in MetaMask, Rabby, or Coinbase Wallet.
Option C: Connect Self-Custody Web3 WalletRecommended
Connect via MetaMask, Coinbase Wallet, Rabby, Rainbow, or any standard EIP-1193 Web3 provider on Base Sepolia.
Option D: Verified External Testnet Faucets (Higher Allowance)
Contract Verification & Foundry Scripts
All smart contracts are developed with Foundry in packages/contracts. To run the full unit and invariant test suite:
# Run all 16 unit tests and 8,192 invariant calls
pnpm contracts:test
# Deploy to Base Sepolia
forge script script/Deploy.s.sol --rpc-url https://sepolia.base.org --broadcast
