尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Fully on-chain generative NFT collection — 10,000 unique 40x40 monochrome pixel art faces with encrypted pre-reveal storage and on-chain SVG rendering.
A project by Serc. Smart contracts, mint site, and API server by Yigit Duman.
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ NormiesMinter │--->│ Normies │ │ NormiesStorage │
│ NormiesMinterV2 │--->│ (ERC721C NFT) │ │ (SSTORE2) │
└──────────────────┘ └────────┬─────────┘ └────────┬─────────┘
| | ^
| | tokenURI() |
| v |
│ ┌──────────────────┐ │
│ │ NormiesRenderer │──────────────┘
│ │ V1 / V2 / V3 │ reads image + traits
│ └────────┬─────────┘
│ │
└────────────────────────┘
writes image + traits
to storage on mint
┌──────────────────┐
│ NormiesTraits │ ← trait name library used by renderers
└──────────────────┘
Core ERC721C token contract with ERC-2981 royalties, modular renderer/storage references, and authorized minter access control. Supports burn and owner-controlled metadata refresh signals.
Stores encrypted 200-byte monochrome bitmaps via SSTORE2 and packed bytes8 trait data per token. Uses XOR encryption
with a keccak256-derived keystream — data remains encrypted on-chain until the owner sets the reveal hash. Once
revealed, reads automatically decrypt in-place.
Signature-verified minting contracts. A backend server signs (imageData, traits, minter, maxMints, deadline) using
EIP-191, and the contract verifies the signature on-chain. Supports single and batch minting with per-wallet mint
limits. V2 adds delegate.xyz v1 registry support alongside v2 for cold wallet delegation.
On-chain SVG rendering pipeline that evolved across three versions:
DynamicBufferLib, adds Pixel Count numeric trait, HTML canvas
animation_url for pixel-perfect renderingPure library mapping trait indices to human-readable names across 8 categories: Type, Gender, Age, Hair Style, Facial Feature, Eyes, Expression, and Accessory.
Burned Normies become #PIXEL, which can sit on a Normie, in a wallet, or in a market listing.
OwnableRoles): owner, GUARDIAN (pause and unpause, cancel an
unopened epoch), CONFIG (bounded parameters) and POSTER (post epochs only).Every Normies contract is owned by the Admin Safe
0xAF8e9BDcF6463EA1f50f8f70ECF13d85a092a1Aa
(3-of-5, hardware wallets), and the deployer's Lifebuoy rescue access is locked on all of them. The Operations Safe
0x94afe25e744aEC9629cB67F63929fA4603898eB7
(3-of-5, other signers) holds GUARDIAN and CONFIG on the Pixel Market contracts and can never grant roles or withdraw
ETH or #PIXEL. The revenue share job's key holds POSTER on the pool and nothing else.
Off-chain API (api-server/) built with Hono + viem that reads token data directly from the Normies and NormiesStorage
contracts on Ethereum mainnet. Provides REST endpoints for individual token data:
GET /normie/:id/image.svg — SVG renderGET /normie/:id/image.png — PNG render (via resvg)GET /normie/:id/traits — decoded trait names (JSON)GET /normie/:id/metadata — full token metadata (JSON)GET /normie/:id/pixels — raw pixel stringGET /health — health checkIncludes LRU caching, rate limiting, and fallback RPC support. See api-server/.env.example for configuration.
cd api-server
pnpm install
pnpm dev
| Contract | Address |
|---|---|
| Normies | 0x9Eb6E2025B64f340691e424b7fe7022fFDE12438 |
| NormiesStorage | 0x1B976bAf51cF51F0e369C070d47FBc47A706e602 |
| NormiesRenderer | 0xBe57fC4D0c729b8e8d33b638Dd441F57365e4c25 |
| NormiesRendererV2 | 0x7818f24d3239c945510e0a1a523dd9971812c6c0 |
| NormiesRendererV3 | 0x1af01b902256d77cf9499a14ef4e494897380b05 |
| NormiesMinter | 0xC74994dD70FFb621CC514cE18a4F6F52124e296d |
| NormiesMinterV2 | 0xc513272597d3022D77b3d7EEBA92cea5D7fb2808 |
| NormiesCanvasStorage | 0xC255BE0983776BAB027a156681b6925cde47B2D1 |
| NormiesCanvas | 0x64951d92e345C50381267380e2975f66810E869c |
| NormiesRendererV4 | 0x8eC46Cc1f306652868a4dfbAAae87CBa2715A0eB |
| NormiesZombie | 0x18533ad55a54c3847Da06A48b51aD7DcB2551202 |
| NormiesZombieStorage | 0xA331bD22C90D1DA096934Db8bc6b69F0e1491E26 |
| NormiesLegendaryCanvas | 0xfA55f6592522dA74224a67c7D3Fd1DF759c628e8 |
| NormiesRendererV5 | 0x7c726f02C5e840e1656b522A5C22caaf87C1C35C |
| NormiesCanvasStorageV2 | 0x96F2DA32Bb9D429d59ac13dB469f4950cBe02084 |
| NormiesCanvasV2 | 0xF14f2852e1fD6A4108156054AF49B3915dc40E2e |
| NormiesPixelMarket | 0x86156A8d6e4B9925F7fEca527ea5D71B0deeDB64 |
| NormiesRendererV6 | 0xd6747533697878a6a3a29B5cCf815740BA23998D |
| NormiesRevenuePool | 0x481384812e79bf0d11FC0b1704af445D5F06813c |
| NormiesRoyaltySplitter | 0xA68A225f62772E6158f2B5f8afC184AdB69c3282 |
The Pixel Market stack was deployed at block 26,122,420 and went live on 5 October 2026. All six are verified on Etherscan. The cutover runbook is PixelMarketUpdate.md; running the revenue share every month, and its incidents, is RevenueShareRunbook.md.
The Canvas V2 / Pixel Market contracts (storage V2, Canvas V2, Pixel Market, revenue pool, royalty splitter) and their deploy, migration and revenue share tooling were reviewed by Trislit Consulting LLC in October 2026, including a fix review of every remediation. Read the public report: audits/2026-10-03-trislit-pixel-market.pdf.
bun install
forge build
forge test
bun run lint
bun run test:coverage
MIT