Playbook
IPFS (InterPlanetary File System)-Metadaten, Mint und Multiple Mint (Ipfs Metadata Mint Und Multiple Mint)
Infura IPFS + Pinata-Pin, Metadata-JSON, mint(tokenId, uri) und multipleMint: 0.1 ETH × n, 750 Supply.
NFT-Collection-Mint und Mainnet-Härtung
Teil 2 von 4
CBD All-Stars- und Confident-Gorillas-Mint-Oberflächen: WIP-Whitelist-Funnel, IPFS-Metadaten, Placeholder→Reveal-Pipeline und Web3Modal-Mainnet-Wallet-Härtung.
Die Chain hält nicht das Bild — sie hält die CID
Im Confident-Gorillas-Mint-Flow landen Art und Traits zuerst auf IPFS: Infura-Add für JSON/File-Upload, Pinata für Pin. Dann laufen mint oder multipleMint; value ist 0.1 ETH × Menge. Der Landing-Mengenwähler (2–5) mappt direkt auf multipleMint(num).
traits + image
↓
uploadJSON / uploadFile (Infura IPFS)
↓
pinHash (Pinata)
↓
CID / metadata hash
↓
mint(tokenId, uri) | multipleMint(uri, num)
↓
value = 0.1 ETH × num supply ≤ 750
Dieser Teil verdrahtet die Metadata-Pipeline mit der Mint-Tx; der nächste öffnet Placeholder-URI und Owner-Reveal.
Begriffe, dort definiert, wo sie zuerst auftauchen
📦 IPFS CID
Inhaltsadressierte ID; tokenURI verweist meist auf diesen Hash.
📦 Pinning
CID am Leben halten über einen Pin-Service wie Pinata.
📦 multipleMint
Mehrere NFTs in einer Tx minten; value und Gas skalieren mit der Anzahl.
📦 Mint Price
Bei Confident Gorillas: 1e17 Wei (0.1 ETH) × Mint-Anzahl.
Infura-Upload und Pinata-Pin sind getrennte Schritte. Upload ohne Pin riskiert später Gateway-404.
Metadata-Form
nftContractUtils baut name, description, image (IPFS-Hash), external_url und attributes (artist, background, body, eye, mouth). uploadJSON liefert den Hash als Mint-URI.
metadata JSON
name / description / image
attributes[] → traits
↓
uploadJSON → ipfsMetadataHash
mint vs multipleMint
Einzel: mint(tokenId, ipfsMetadataHash) + 0.1 ETH. Multi: multipleMint(ipfsMetadataHash, num) + 0.1 ETH × num. HomePage-Select 2–5; Minter ruft multiplemintNFT. UI zeigt Remaining gegen Cap 750 via totalSupply.
UI qty (2..5)
↓
multipleMint(uri, num)
value = 1e17 * num
gasLimit ≈ 300000 (app default)
ADR: zuerst IPFS, dann Chain
Entscheidung: Medien nicht on-chain einbetten; IPFS-Upload, URI on-chain. Vorteil: günstigerer Reveal und kleines Calldata. Risiko: Pinning/Gateway als Single Point — Pin plus öffentliche Gateway-Backups.
ADR-02 Content-addressed mint
Off-chain: Infura add + Pinata pin
On-chain: store URI hash only
Read path: tokenURI → retrieveJSON
Failure-Szenarien
Hartes gasPrice: 0 lässt Mainnet-Txs stuck/underpriced. Falsches Netz (Rinkeby/Infura-Fallback) signiert die falsche Welt. ABI-Mismatch: Frontend-ABI vs. deployed multipleMint. Stub-Adresse: All-Stars zeigte vier Contracts auf eine Adresse.
Fail matrix
gasPrice=0 → stuck / underpriced
wrong chainId → silent wrong net
ABI skew → encode / revert
stub address → call nowhere useful
Die am häufigsten verwechselten Zuordnungen
❌ Bild als Base64 in den Contract
✓ Bild auf IPFS; on-chain nur CID/URI
❌ Upload reicht; Pin optional
✓ Upload + Pin zusammen; sonst Unpin-Risiko
❌ gasPrice: 0 heißt 'automatisch'
✓ gasPrice: 0 heißt auf Mainnet meist underpriced
Checkliste zur Prüfung des eigenen Systems
- Ist die CID vor dem Mint bei Pinata (o. ä.) gepinnt?
- Ist 0.1 ETH × num in Wei verifiziert?
- Ist totalSupply + num ≤ 750 in UI und Contract geprüft?
- Sind gasPrice / maxFeePerGas für Mainnet dynamisch?
- Teilen deployed ABI und Frontend-ABI einen Commit?
Was aus diesem Teil bleiben sollte
- Mint-Pipeline: Traits → IPFS → Pin → Contract-Call → Value.
- multipleMint ist das On-Chain-Gegenstück zum Mengenwähler.
- gasPrice: 0, Stub-Adressen und ABI-Skew sind das klassische Mainnet-Trio.
Metadaten on-chain einbetten macht Mint teuer; die CID ungepinnt lassen verliert die Collection.
FAQ
Häufige Fragen
Was ist IPFS CID?
Inhaltsadressierte ID; tokenURI verweist meist auf diesen Hash.
Was ist Pinning?
CID am Leben halten über einen Pin-Service wie Pinata.
Stimmt es, dass „Bild als Base64 in den Contract“?
Bild auf IPFS; on-chain nur CID/URI
Was legt dieser Teil fest?
Dieser Teil verdrahtet die Metadata-Pipeline mit der Mint-Tx; der nächste öffnet Placeholder-URI und Owner-Reveal. Im Confident-Gorillas-Mint-Flow landen Art und Traits zuerst auf IPFS: Infura-Add für JSON/File-Upload, Pinata für Pin. Dann laufen mint oder multipleMint; value ist 0.1 ETH × Menge. Der Landing-Mengenwähler (2–5) mappt direkt auf multipleMint(num).
Gelernte Engineering-Prinzipien
- Zuerst Inhalt adressieren; URI danach on-chain speichern.
- Preis, Menge und Supply-Cap zwischen UI und Contract doppelt prüfen.
- Gas, chainId, Adresse und ABI vor Mainnet auf Staging beweisen.
Weiterlesen
Weiterlesen
Nachster Teil der Serie
Placeholder-URI und Owner-Reveal-Pipeline
Placeholder-Metadaten beim Mint, uridata-Map, reveal(tokenId, uriHash) und eine owner-only Reveal-Oberfläche.
Nachster Teil der Serie
Collection-Landing und WIP-Whitelist-Funnel
CBD-All-Stars-Mint-Landing: #GETINTHEWIP, 750 Plätze, Discount-Funnel und wie eine MetaMask-only-Mint-Oberfläche zum Produkt wird.
Aus derselben Serie
Mainnet Web3Modal und Wallet-Härtung
Von MetaMask-only zu Web3Modal + WalletConnect + Coinbase WalletLink; chainId, Gas und Adressen härten.