Oyun Kitabı

BareNFTReserve: Escrow, RandomBuy ve Zayif RNG (Barenft Rezerv Escrow Ve Randombuy Entropy)

Owner-only createNewListing, buy ve randomBuy — keccak256(revealNonce, block.difficulty, msg.sender) % 3. Owner-operated marketplace ADR ve emergency transfer.

Bare Crypto Solidity Marketplace Protokolu

Bolum 3 / 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

Escrow guveni, zar atma guvensizligi

BareNFTReserve, NFT'yi kontrata escrow'layip owner-only createNewListing ile fiyat acar; buy sabit listing'i odemeyle kapatir. randomBuy ise keccak256(revealNonce, block.difficulty, msg.sender) % 3 ile 'rastgele' uc aday indeksi uretir — bilincli olarak zayif bir on-chain entropy. Bu, Bare Crypto'nun owner-operated marketplace ADR'sinin kalbidir: guven operatorde, sans da operatorun goz yumdugu bir UX sekeridir.

Owner ──transfer NFT──> BareNFTReserve (escrow)
  createNewListing(tokenId, price)
        |
        +── buy(tokenId) ──ETH──> seller, NFT──> buyer
        |
        +── randomBuy() ── keccak(nonce, difficulty, sender) % 3
        |
        +── emergency: transferNft / transferFunds

Bu bolum, rezerv escrow modelini, zayif RNG'yi ve emergency yetkilerin trade-off'unu sabitler.

Kavramlar ilk geçtiği yerde

📦 Escrow listing
NFT once kontrata transfer edilir; listing ancak ownerOf(contract) iken acilir.

📦 Owner-operated marketplace
Listing acma ve acil cikislar tek owner'a bagli; permissionless seller degil.

📦 Weak on-chain RNG
block.difficulty + nonce + sender ile uretilen, miner/caller etkisine acik 'rastgelelik'.

📦 Emergency exit
transferNft / transferFunds ile owner'in escrow'u bypass etmesi.

Owner-operated escrow, OpenSea-benzeri permissionless pazardan farkli bir urun ADR'sidir; randomBuy bu modele sans katmani ekler, guveni degistirmez.

ADR: owner-operated rezerv

Karar: createNewListing yalniz owner; NFT onceden kontrata transfer edilmis olmali. Gerekce: Bare Crypto vitrin stokunu tek operator yonetir, sahte listing ve rug riskini seller permissionless modelinden kacinarark azaltir. Bedel: merkezi operator; listing ac/kapa, fiyat set, closeListing tamamen owner. Bu, 'protokol marketplace' degil 'operator vitrin escrow' ADR'sidir.

buy, randomBuy ve entropy diyagrami

buy, tokenIdToListing tarihcesinin son kaydini alir, msg.value >= price ister, seller.transfer ve safeTransferFrom yapar. randomBuy fiyat require'ini yorum satirina alir; randomId, % 3 ile uc indeks dondurup ilk basarili satisa kadar dener. Entropy kaynagi onceden tahmin edilebilir veya miner etkisi altindadir — adil rastgelelik degil, vitrin 'mystery box' UX'idir.

revealNonce ++
keccak256(nonce, block.difficulty, msg.sender)
        |
        v
   index = hash % 3
   [i, i+1, i+2] mod 3
        |
        v
 try listings until sold

Basarisizlik: zayif RNG, reentrancy ve emergency

Seller.transfer msg.value ile aninda odeme, buy/randomBuy'da checks-effects-interactions disiplininin zayif oldugu bir yuzeydir; kotu niyetli seller kontratı reentrancy deneyebilir. RNG zayifligi: ayni blokta caller, hangi %3 dilimine dustugunu simulasyonla gorebilir. Emergency transferNft/transferFunds, incident kurtarma icin vardir ama owner key compromise'te tum escrow'u bosaltir. Performans: tokenIdToListing dizisi buyudukce getLastListingByTokenId gaz ve tarihce karmasikligi artar.

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

❌ block.difficulty ile random adil NFT dagitimi yapar
✓ Bu zayif RNG'dir; mystery UX olabilir, adil mint/raffle olamaz

❌ Escrow'da NFT varsa pazar permissionless'tir
✓ Listing yaratma owner-only ise urun operator vitrinidir

❌ Emergency transfer sadece guvenlik artirir
✓ Ayni kapı, compromise'te rug vektorudur; timelock/multisig olmadan tek nokta riskidir

Kendi sisteminizi denetleme listesi

  1. createNewListing kimlere acik — owner mi, her seller mi?
  2. randomBuy fiyat kontrolu kodda aktif mi, yoksa yorumda mi?
  3. Emergency transferNft/transferFunds hangi cuzdanda, multisig var mi?
  4. Ayni blokta randomBuy sonucu caller tarafindan tahmin edilebilir mi?
  5. Listing tarihcesi (tokenIdToListing) UI'da hangi kaydi 'guncel' sayiyor?

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

  1. BareNFTReserve, owner-operated escrow vitrin ADR'sidir; permissionless marketplace degildir.
  2. randomBuy entropy'si bilincli olarak zayiftir — adil sans degil, UX sekeri.
  3. Emergency yetkiler kurtarma ve rug'u ayni anahtarla acar.

Escrow guveni operatordeyse, zar atmak protokol degil dekorasyondur.

SSS

Sık sorulan sorular

Escrow listing nedir?

NFT once kontrata transfer edilir; listing ancak ownerOf(contract) iken acilir.

Owner-operated marketplace nedir?

Listing acma ve acil cikislar tek owner'a bagli; permissionless seller degil.

"block.difficulty ile random adil NFT dagitimi yapar" doğru mu?

Bu zayif RNG'dir; mystery UX olabilir, adil mint/raffle olamaz

Bu bölüm neyi sabitler?

Bu bolum, rezerv escrow modelini, zayif RNG'yi ve emergency yetkilerin trade-off'unu sabitler. BareNFTReserve, NFT'yi kontrata escrow'layip owner-only createNewListing ile fiyat acar; buy sabit listing'i odemeyle kapatir. randomBuy ise keccak256(revealNonce, block.difficulty, msg.sender) % 3 ile 'rastgele' uc aday indeksi uretir — bilincli olarak zayif bir on-chain entropy. Bu, Bare Crypto'nun owner-operated marketplace ADR'sinin kalbidir: guven operatorde, sans da operatorun goz yumdugu bir UX sekeridir.

Ogrenilen Muhendislik Prensipleri

  • Marketplace ADR'si permissionless seller ile operator vitrini arasini net ayirmalidir.
  • On-chain RNG kullaniliyorsa 'zayif / adil degil' acikca dokumante edilmelidir.
  • Emergency cikislar multisig veya timelock olmadan tek basina tutulmamalidir.

Okumaya devam et

Okumaya devam et

Seride sonraki yazi

Seride sonraki yazi

Ayni seriden

Paylaş