Legacy NFT Infrastructure
Current Production System
This is the live production system powering NFT minting in EmProps Studio. While we build the Arbitrum integration, Tezos remains our primary NFT chain.
Looking to develop new features? Start with the Arbitrum documentation for the EVM architecture we're building.
Documentation for the production Tezos NFT system currently running in emprops-studio.
Overview
The "legacy" NFT infrastructure refers to the production Tezos implementation that has been live and operational. This system enables:
- Creating NFT collections from AI-generated content
- Minting NFTs with XTZ or fiat payments
- Managing allowlists and freelists
- Revenue splitting among creators and receivers
- Fund redemption for creators
Documentation
| Document | Description |
|---|---|
| Tezos Implementation | Complete Tezos NFT system architecture |
| Contract Client | Smart contract interaction patterns |
| Wallet Integration | Beacon wallet and authentication |
| Minting Components | UI components for minting flow |
Architecture Overview
┌──────────────────────────────────────────────────────────────────┐
│ emprops-studio │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Wallet Context │ │ Contract Client │ │ UI Components│ │
│ │ │ │ │ │ │ │
│ │ - TezosWallet │───▶│ - getTezColl │───▶│ - MintButton │ │
│ │ - BeaconSDK │ │ - mintToken │ │ - ManageColl │ │
│ │ - Taquito │ │ - updatePrice │ │ - PublishModal│ │
│ └─────────────────┘ └─────────────────┘ └──────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Tezos Blockchain │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Projects/ │◀───────▶│ FA2 Token │ │ │
│ │ │ Collections │ mint │ Contract │ │ │
│ │ │ Contract │ │ │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘Contract Versions
The system supports two contract versions:
V1 - Projects Model
- Storage:
projectsBigMap - Entry Points:
mint_token,split_funds,set_status - Identifier: UUID string (
project.id) - Minting: Individual calls per token
V2 - Collections Model
- Storage:
collectionsBigMap - Entry Points:
mint,withdrawFunds,setStatus - Identifier: Numeric ID (
project.projectId) - Minting: Batch operations in single call
Key Files
| File | Purpose |
|---|---|
clients/contract-client.ts | Core contract interactions (~1,270 lines) |
clients/tezos-client.ts | Tezos domain resolution |
types/wallet.ts | Wallet types and chain IDs |
context/clients-context.tsx | Wallet context provider |
utils/mintStatus.ts | Mint eligibility checking |
Dependencies
{
"@taquito/taquito": "16.0.1",
"@taquito/beacon-wallet": "16.2.0",
"@taquito/tzip16": "16.1.2",
"@tezos-domains/taquito-client": "1.24.0",
"@airgap/beacon-sdk": "4.6.2"
}Why "Legacy"?
This system is labeled "legacy" because:
- Tezos-First: Built specifically for Tezos FA2 tokens
- Pre-EVM: Predates the EVM (Ethereum/Base) integration efforts
- Production Stable: Battle-tested in production
- Integration Target: New EVM work will follow similar patterns
The Tezos implementation serves as the reference architecture for:
- How collections should be managed
- How minting flows should work
- How wallet integration should be handled
- How revenue splitting should be implemented
Migration Path
The external repos (emprops-hardhat, emprops-ponder) contain EVM equivalents:
| Tezos (Legacy) | EVM (New) |
|---|---|
| Projects/Collections Contract | NFTContractFactory + SimpleApp |
| FA2 Token Contract | ERC721A |
| Taquito | Viem/Wagmi |
| Beacon Wallet | Dynamic Labs/RainbowKit |
| Direct RPC queries | Ponder Event Indexer |
See Integration Evaluation for migration details.
