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.
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
- createNewListing kimlere acik — owner mi, her seller mi?
- randomBuy fiyat kontrolu kodda aktif mi, yoksa yorumda mi?
- Emergency transferNft/transferFunds hangi cuzdanda, multisig var mi?
- Ayni blokta randomBuy sonucu caller tarafindan tahmin edilebilir mi?
- Listing tarihcesi (tokenIdToListing) UI'da hangi kaydi 'guncel' sayiyor?
Bu bölümden aklında kalması gerekenler
- BareNFTReserve, owner-operated escrow vitrin ADR'sidir; permissionless marketplace degildir.
- randomBuy entropy'si bilincli olarak zayiftir — adil sans degil, UX sekeri.
- 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
BareNFTAuction: Claim, Iade ve Acil Yetkiler
Ingiliz artirmali acik artirma: bid, claim, cancel, rezerv altinda iade ve owner emergency transferNft/transferFunds trade-offlari.
Seride sonraki yazi
BareNFT: Roller, Pausable ve Token URI
BareNFT, ERC721 Enumerable/Burnable/Pausable ve AccessControl ile role-gated mint(to,id,uri) sunar. Per-token URI ve pause trade-offlari.
Ayni seriden
Remix + OpenZeppelin: Hardhat Olmadan Teslimat
Bare Crypto protokolu Remix IDE ve OpenZeppelin v4.1 GitHub importlariyla Hardhat/Foundry olmadan nasil derlenip deploy edildi? ADR ve trade-offlar.