NFT Project Architecture: Key Decisions
Leveraging 10+ years of blockchain development experience and 50+ successful NFT projects, we design scalable and future-proof architecture. Our architecture covers key decisions: ERC-721, ERC-1155, ERC-721A token standards, metadata storage on IPFS or Arweave, EIP-2981 royalties, and gas optimization for mint mechanics. We guarantee marketplace compatibility and proven gas efficiency.
Most NFT project problems surface not during development, but at scale or when hitting marketplaces. The collection is deployed, sold, and only then it emerges: metadata lives on a centralized server—when it goes down, traders see blank images; royalties don't work on Blur and LooksRare; the contract doesn't support batch operations and gas per transfer hits $5 on a congested network. We design architecture to prevent such surprises half a year down the line. Savings from gas optimization can exceed $10,000 for a 10k collection, justifying the architectural design investment.
Which token standard is best for your collection?
The classic ERC-721 is the standard for unique NFTs. Each tokenId is unique, each has its own owner. Widely supported by marketplaces. Weakness: _mint in a loop—every mint is a separate SSTORE operation (~20k gas). Minting 100 NFTs in one transaction costs 2M gas.
ERC-721A (Azuki) solves this: batch mint writes only the entry for the first tokenId; the rest are computed via ownerOf. Savings on batch mint: 60-80% gas. The trade-off: ownerOf and transferFrom cost more due to extra computations. For projects with active post-mint trading, weigh carefully.
ERC-1155 is a multi-token standard: one contract holds multiple IDs, each ID can have multiple copies (fungible or semi-fungible). Ideal for edition NFTs, gaming items, certificates. Marketplaces support ERC-1155, but UX can be worse than ERC-721 (some aggregators display editions incorrectly).
Gas calculation example for batch mint
Minting 10 ERC-721 tokens in a loop: ~200k gas. Minting 10 ERC-721A tokens: ~80k gas. Savings of 60% at 50 gwei gas price = $18 saved for 10 tokens. For a collection of 10,000 NFTs, the total saving exceeds $18,000.| Standard | Best For | Gas per Mint | Gas per Transfer |
|---|---|---|---|
| ERC-721 | Unique PFP | High | Low |
| ERC-721A | Batch mint PFP | Very low | Medium |
| ERC-1155 | Edition, gaming | Low | Very low |
Upgradability: When and How to Use It
For most NFT collections, an immutable contract inspires more trust. A proxy (EIP-1967 transparent or UUPS) adds attack surface: storage slot collision during an upgrade can corrupt the _owners mapping. UUPS avoids selector clashes but still requires careful storage layout. Upgradability is justified for gaming NFTs with evolving mechanics or protocol NFTs within DeFi. In that case—UUPS with a timelock: any upgrade has a 48-72 hour delay.
How to ensure permanent metadata storage?
IPFS is decentralized, but a file exists only while pinned. Solution: a paid pinning service (Pinata, NFT.Storage, Filebase) plus multiple pinners. NFT.Storage stores data permanently through Filecoin deals—closer to real decentralization than plain IPFS pinning.
Arweave—pay-once-store-forever. One payment on upload, data stored permanently (~200 years per protocol estimates). Used by Metaplex and many serious ETH projects. For 10,000 NFT images, Arweave costs around $200-500—cheaper than years of paid pinning.
For fully on-chain NFTs (generative art, fully on-chain games), metadata and images live in the contract. tokenURI returns a base64-encoded JSON with a base64-encoded SVG inside. Expensive to deploy but absolutely permanent. Examples: Loot Project, Nouns DAO.
| Solution | Cost for 10K NFTs | Permanence | Decentralization |
|---|---|---|---|
| IPFS + Pinata | ~$99/month | No (as long as paid) | Medium |
| NFT.Storage | Free (with limits) | Yes (Filecoin deals) | High |
| Arweave | $200–500 one-time | Yes (200+ years) | High |
| On-chain | >$10,000 one-time | Yes | Full |
Implementing Royalties via EIP-2981 and Operator Filter
The EIP-2981 standard—royaltyInfo(uint256 tokenId, uint256 salePrice) returns (receiver, royaltyAmount). Supported by OpenSea, Rarible, Foundation. Not enforced—advisory. Implemented via ERC2981 from OpenZeppelin:
According to OpenZeppelin documentation, _setDefaultRoyalty sets a default royalty for all tokens, which can be overridden per token.
_setDefaultRoyalty(treasury, 500); // 5% = 500 basis points For projects wanting enforced royalties: inherit from OperatorFilterer, register in OpenSea Operator Filter Registry. This approach blocks transfers through non-compliant marketplaces and implements an NFT operator filter. However, it restricts transferability and may spark community debate.
Selecting Mint Mechanics
Dutch Auction reduces gas wars and offers fair price discovery with a refund mechanism for overpayment.
Whitelist + Public phases use Merkle proofs for WL and per-wallet rate limits.
Lazy mint keeps NFTs off-chain until first purchase; collector pays mint gas. Reduces creator risk—no need to deploy unsold tokens.
Architectural Design Process
- Analysis (1-2 days). Project type (PFP / gaming / art / membership), target marketplaces, royalty requirements, planned utility (staking, governance, content access).
- Architecture document (1-2 days). Standard selection with justification, metadata storage scheme, mint mechanics, royalty approach, upgrade roadmap if needed.
- Technical architecture audit. Check compatibility with target marketplaces (OpenSea, Blur, LooksRare), potential gas issues, attack surface.
- Deliverable. Markdown document with architectural decisions, ER-diagram of contracts, storage layout, risk list. Development proceeds based on this document.
What's Included
- Architecture document (standard selection, metadata schema, mint logic)
- ER-diagram of contracts and storage layout
- Gas optimization analysis for batch mint and transfers
- Marketplace compatibility check
- Risk list and security recommendations
- Post-delivery consultation (up to 1 hour)
Timeline and Investment
Architectural design for an NFT project—3-5 days. Typical design fee: $3,000–$5,000, often recouped through gas savings exceeding $10,000 for large collections. Contact us to discuss your project and get an estimate. Get a consultation on NFT token standards and metadata storage.







