Oyun Kitabı

IPFS (InterPlanetary File System) Metadata, Mint ve Multiple Mint (İpfs Metadata Mint Ve Multiple Mint)

Infura IPFS + Pinata pin, metadata JSON, mint(tokenId, uri) ve multipleMint: 0.1 ETH × n, 750 supply.

NFT Koleksiyon Mint ve Mainnet Sertleştirmesi

Bolum 2 / 4

CBD All-Stars ve Confident Gorillas mint yüzeyleri: WIP whitelist hunisi, IPFS metadata, placeholder→reveal hattı ve Web3Modal ile mainnet cüzdan sertleştirmesi.

NFT mint and mainnet architecture diagram

Zincir resmi tutmaz; CID tutar

Confident Gorillas mint akışında görsel ve özellikler önce IPFS'e yazılır: Infura add API ile JSON/file upload, Pinata ile pin. Sonra sözleşme mint veya multipleMint çağrılır; value 0.1 ETH × adet. Landing'deki miktar seçici (2–5) doğrudan multipleMint(num) parametresine bağlanır.

traits + image
    ↓
uploadJSON / uploadFile (Infura IPFS)
    ↓
pinHash (Pinata)
    ↓
CID / metadata hash
    ↓
mint(tokenId, uri)  |  multipleMint(uri, num)
    ↓
value = 0.1 ETH × num   supply ≤ 750

Bu bölüm, metadata boru hattını mint tx'sine bağlar; sonraki bölüm placeholder URI ve owner reveal'i açar.

Kavramlar ilk geçtiği yerde

📦 IPFS CID
İçeriğin içeriğe dayalı adresi; tokenURI genelde bu hash'e referans verir.

📦 Pinning
CID'nin kaybolmaması için Pinata gibi bir pinning servisinde tutma.

📦 multipleMint
Tek tx'de birden fazla NFT basma; value ve gas maliyeti adetle ölçeklenir.

📦 Mint Price
Confident Gorillas'da 1e17 wei (0.1 ETH) × mint adedi.

Infura upload ile Pinata pin ayrı adımlardır. Upload başarılı, pin unutulursa gateway'ler zamanla 404 verebilir.

Metadata şekli

nftContractUtils metadata'yı name, description, image (IPFS hash), external_url ve attributes (artist, background, body, eye, mouth) ile kurar. uploadJSON hash döner; bu hash mint'e uri olarak gider.

metadata JSON
  name / description / image
  attributes[] → traits
       ↓
  uploadJSON → ipfsMetadataHash

mint vs multipleMint

Tekil mint: mint(tokenId, ipfsMetadataHash) + 0.1 ETH. Çoklu: multipleMint(ipfsMetadataHash, num) + 0.1 ETH × num. HomePage select 2–5 arası seçer; Minter container multiplemintNFT'yi çağırır. totalSupply 750 tavanıyla UI'da remaining gösterilir.

UI qty (2..5)
   ↓
multipleMint(uri, num)
   value = 1e17 * num
   gasLimit ≈ 300000 (app default)

ADR: IPFS önce, zincir sonra

Karar: metadata ve medya zincire gömülmez; önce IPFS, sonra uri referansı on-chain. Avantaj: ucuz güncelleme yolu (reveal) ve küçük calldata. Risk: pinning ve gateway tek nokta haline gelebilir — Pinata pin + public gateway yedekleri gerekir.

ADR-02 Content-addressed mint
  Off-chain: Infura add + Pinata pin
  On-chain: store URI hash only
  Read path: tokenURI → retrieveJSON

Başarısızlık senaryoları

gasPrice: 0 sabitlenmesi mainnet'te tx'nin stuck/underpriced kalmasına yol açar. Yanlış network (Rinkeby/Infura fallback) mainnet sözleşmesine imza attırmaz. ABI mismatch: frontend ABI'si ile deploy edilen multipleMint imzası uyuşmazsa encode hata verir. Stub adres: All-Stars'ta dört sözleşme aynı adrese bakıyordu.

Fail matrix
  gasPrice=0     → stuck / underpriced
  wrong chainId  → silent wrong net
  ABI skew       → encode / revert
  stub address   → call nowhere useful

Bu bölümde en çok karışan eşleştirmeler

❌ Image'ı base64 olarak sözleşmeye yaz
✓ Image'ı IPFS'e koy; zincirde yalnızca CID/URI tut

❌ Upload yeter, pin opsiyonel
✓ Upload + pin birlikte; aksi halde içerik unorphan riski

❌ gasPrice: 0 'otomatik' demektir
✓ gasPrice: 0 çoğu mainnet koşulunda underpriced tx üretir

Kendi sisteminizi denetleme listesi

  1. Mint öncesi CID Pinata'da (veya eşdeğerde) pinli mi?
  2. 0.1 ETH × num değeri wei hesabıyla doğrulanıyor mu?
  3. totalSupply + num ≤ 750 kontrolü UI ve sözleşmede var mı?
  4. gasPrice / maxFeePerGas mainnet için dinamik mi?
  5. Deploy edilen ABI ile frontend ABI aynı commit'ten mi?

Bu bölümden aklında kalması gerekenler

  1. Mint boru hattı: traits → IPFS → pin → contract call → value.
  2. multipleMint, landing miktar seçicisinin zincir karşılığıdır.
  3. gasPrice: 0, stub adres ve ABI skew mainnet'in klasik üçlüsüdür.

Metadata'yı zincire gömerseniz mint'i pahalılaştırırsınız; CID'yi pinsiz bırakırsanız koleksiyonu kaybedersiniz.

SSS

Sık sorulan sorular

IPFS CID nedir?

İçeriğin içeriğe dayalı adresi; tokenURI genelde bu hash'e referans verir.

Pinning nedir?

CID'nin kaybolmaması için Pinata gibi bir pinning servisinde tutma.

"Image'ı base64 olarak sözleşmeye yaz" doğru mu?

Image'ı IPFS'e koy; zincirde yalnızca CID/URI tut

Bu bölüm neyi sabitler?

Bu bölüm, metadata boru hattını mint tx'sine bağlar; sonraki bölüm placeholder URI ve owner reveal'i açar. Confident Gorillas mint akışında görsel ve özellikler önce IPFS'e yazılır: Infura add API ile JSON/file upload, Pinata ile pin. Sonra sözleşme mint veya multipleMint çağrılır; value 0.1 ETH × adet. Landing'deki miktar seçici (2–5) doğrudan multipleMint(num) parametresine bağlanır.

Ogrenilen Muhendislik Prensipleri

  • Önce içerik adreslensin, sonra uri on-chain saklansın.
  • Fiyat, adet ve supply tavanını UI ile sözleşme arasında çift doğrulayın.
  • Mainnet tx parametrelerini (gas, chainId, address, ABI) staging'de kanıtlayın.

Okumaya devam et

Okumaya devam et

Seride sonraki yazi

Seride sonraki yazi

Ayni seriden

Paylaş