Oyun Kitabı

BareNFT: Roller, Pausable ve Token URI (Barenft Roller Pausable Token Uri)

BareNFT, ERC721 Enumerable/Burnable/Pausable ve AccessControl ile role-gated mint(to,id,uri) sunar. Per-token URI ve pause trade-offlari.

Bare Crypto Solidity Marketplace Protokolu

Bolum 2 / 5

Remix IDE ve OpenZeppelin v4.1 GitHub importlariyla Hardhat/Foundry olmadan BareNFT, rezerv, Ingiliz artirmali acik artirma ve NFT-gated BareToken emisyon mimarisi; ADR, zayif RNG ve acil yetki trade-offlari.

Bare Crypto Solidity marketplace protocol diagram

Preset'ten oteye: kim mint eder, kim durdurur

BareNFT, OpenZeppelin ERC721PresetMinterPauserAutoId iskeletinden turetilir ama AutoId yerine disaridan verilen tokenId ile mint(to, tokenId, tokenURI) sunar. MINTER_ROLE ve PAUSER_ROLE AccessControlEnumerable uzerinden ayrilir; her token icin ozel URI, baseURI ile birlestirilerek metadata esnekligi saglar — ayni zamanda mint otoritesinin tek basina koleksiyonu sekillendirdigi bir guven modeli.

Deployer
  ├─ DEFAULT_ADMIN_ROLE
  ├─ MINTER_ROLE ──> mint(to, id, uri)
  └─ PAUSER_ROLE ──> pause / unpause
        |
        v
  ERC721Enumerable + Burnable + Pausable
        |
        v
  tokenURI = baseURI + per-token path

Bu bolum, BareNFT rol sinirlarini, per-token URI kararini ve pause'un marketplace yan etkilerini sabitler.

Kavramlar ilk geçtiği yerde

📦 AccessControl
Rol bazli izin modeli; Ownable'dan daha ince taneli mint/pause ayrimi.

📦 ERC721Pausable
Transferleri durduran acil fren; listing ve auction escrow'unu da kilitler.

📦 Per-token URI
Her tokenId icin ayri metadata yolu; baseURI ile birlestirilir.

📦 Role-gated mint
Yalniz MINTER_ROLE sahibinin mint(to, id, uri) cagirabilmesi.

Rol ayrimi guvenligi artirir; ama DEFAULT_ADMIN_ROLE tek eldeyse, MINTER/PAUSER ayrimi operasyonel degil kozmetik kalir.

ADR: AutoId yerine acik tokenId

Karar: mint imzasi mint(address to, uint256 tokenId, string tokenURI) olsun; sayac yerine operator ID'yi secer. Gerekce: koleksiyon katalog numaralari, rezerv listing ve auction tarihcesi tokenId uzerinden indekslenir. Bedel: cakisan ID'lerde _mint revert eder; off-chain mint koordinasyonu zorunlu olur. Bu, 'on-chain auto increment' yerine 'operator katalog otoritesi' ADR'sidir.

Rol, pause ve transfer kancasi

pause() PAUSER_ROLE ister; _beforeTokenTransfer, Enumerable + Pausable zincirini cagirir. Pause acikken BareNFTReserve veya BareNFTAuction uzerindeki safeTransferFrom de durur — acil fren, ayni anda tum escrow cikislarini kilitler. Bu guclu bir incident araci ve ayni zamanda operator'un tum pazar yerini dondurabilmesi demektir.

PAUSER_ROLE
   pause()
     |
     v
_beforeTokenTransfer
     |
     +-- marketplace escrow transfer BLOCKED
     +-- peer-to-peer transfer BLOCKED

Basarisizlik: yetkisiz mint yuzeyi ve URI kaymasi

setMintingCurrency disaridan herkesce cagrilabilir gorunur; mintingPrice hic set edilmez — yarim kalmis ucretlendirme yuzeyi. Performans senaryosu: Enumerable + her transferde _beforeTokenTransfer, yogun secondary market'te gas maliyetini artirir. URI tarafinda baseURI + path birlesimi, IPFS gateway degisince tum koleksiyonu kirar; per-token esneklik, baseURI operasyon disiplinine baglidir. MINTER_ROLE sizmasi, sahte ID mint'i ile rezerv listing tarihcesini zehirler.

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

❌ AccessControl = Ownable'in sadesi
✓ AccessControl mint ve pause'u ayirir; Ownable tek sahip ile her seyi birlestirir

❌ Pause sadece transferleri durdurur, marketplace etkilenmez
✓ Escrow safeTransferFrom de pause altinda revert eder; tum pazar kilitlenir

❌ Per-token URI merkeziyetsiz metadata demektir
✓ URI hala minter ve baseURI operatorune guvenir; pin ve gateway politikasi ayridir

Kendi sisteminizi denetleme listesi

  1. DEFAULT_ADMIN, MINTER ve PAUSER ayni cuzdanda mi, yoksa ayrilmis mi?
  2. Pause aninda acik listing/auction'lar hangi tx ile takilir?
  3. tokenURI birlesimi baseURI degisince eski tokenlar kirilir mi?
  4. Ayni tokenId iki kez mint edilmeye calisilirsa UI nasil davranir?
  5. setMintingCurrency gibi yarim yuzeyler kim tarafindan cagrilabilir?

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

  1. BareNFT, rol-gated mint(to,id,uri) ile katalog otoritesini on-chain'e tasir.
  2. Pausable, escrow marketplace'lerde global kill switch'tir — trade-off acik yazilmalidir.
  3. Per-token URI esnekligi, baseURI operasyon borcuna baglidir.

Rol ayrimi bir kilit duzenidir; admin tek eldeyse sadece etikettir.

SSS

Sık sorulan sorular

AccessControl nedir?

Rol bazli izin modeli; Ownable'dan daha ince taneli mint/pause ayrimi.

ERC721Pausable nedir?

Transferleri durduran acil fren; listing ve auction escrow'unu da kilitler.

"AccessControl = Ownable'in sadesi" doğru mu?

AccessControl mint ve pause'u ayirir; Ownable tek sahip ile her seyi birlestirir

Bu bölüm neyi sabitler?

Bu bolum, BareNFT rol sinirlarini, per-token URI kararini ve pause'un marketplace yan etkilerini sabitler. BareNFT, OpenZeppelin ERC721PresetMinterPauserAutoId iskeletinden turetilir ama AutoId yerine disaridan verilen tokenId ile mint(to, tokenId, tokenURI) sunar. MINTER_ROLE ve PAUSER_ROLE AccessControlEnumerable uzerinden ayrilir; her token icin ozel URI, baseURI ile birlestirilerek metadata esnekligi saglar — ayni zamanda mint otoritesinin tek basina koleksiyonu sekillendirdigi bir guven modeli.

Ogrenilen Muhendislik Prensipleri

  • Mint imzasi (auto-id vs acik id) katalog ve marketplace indeks modeliyle birlikte secilmelidir.
  • Pause, escrow protokollerinde global durdurma olarak tasarlanip iletilmelidir.
  • Metadata ADR'si baseURI, per-token path ve gateway pin'ini birlikte kapsamalidir.

Okumaya devam et

Okumaya devam et

Seride sonraki yazi

Seride sonraki yazi

Ayni seriden

Paylaş