Oyun Kitabı
BareNFTAuction: Claim, Iade ve Acil Yetkiler (Barenft Auction Claim İade Acil Yetkiler)
Ingiliz artirmali acik artirma: bid, claim, cancel, rezerv altinda iade ve owner emergency transferNft/transferFunds trade-offlari.
Bare Crypto Solidity Marketplace Protokolu
Bolum 4 / 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.
Artirma biter; para ve NFT (Non-Fungible Token) ayni anda cozulmeli
BareNFTAuction, owner-operated Ingiliz artirmasi sunar: NFT escrow'da, bid onceki maxBidder'a aninda iade eder, claimTokenFromAuctionByTokenId bitiste NFT ve ETH'yi rezerv kuralina gore dagitir. cancelAuctionByTokenId max bid'i iade edip NFT'yi seller'a dondurur. Emergency transferNft/transferFunds yine owner'dadir — kurtarma ile rug ayni kapidan.
Owner escrow NFT → createNewAuction(endBlock, reserve, id, start)
|
bid() > maxBid ── refund previous maxBidder
|
endBlock reached
|
claim: maxBid < reserve? refund + NFT→seller
else ETH→seller, NFT→maxBidder
|
cancel / emergency transfer*
Bu bolum, artirma yasam dongusunu, claim/iade yollarini ve emergency yetkilerin ADR trade-off'unu sabitler.
Kavramlar ilk geçtiği yerde
📦 English auction
Acik artan teklif; her yeni bid onceki lideri gecer ve iade tetikler.
📦 Reserve price
Max bid rezervin altindaysa satis olmaz; NFT seller'a, bid iade.
📦 Claim settlement
Bitiste seller veya maxBidder'in NFT/ETH dagitimini cagirmasi.
📦 Push refund
Yeni bid geldiginde onceki maxBidder'a aninda ETH iadesi.
Push refund UX'i sadeleştirir ama basarisiz call ile tum bid'i kilitleyebilir; pull-payment alternatif bir ADR'dir.
ADR: owner-created English auction
Karar: createNewAuction yalniz owner; endBlock > block.number; ayni tokenId icin onceki auction bitmeden yenisi yok. Gerekce: Bare Crypto vitrin artirmalarini operator takvimiyle yonetir. Bedel: permissionless seller auction yok; setTokenContract ve setOwner da owner'da — protokol yuzeyi operator anahtarina bagli.
Bid, claim, cancel akisi
bid, startingBid ve maxBid uzerinde kontrol eder; onceki maxBidder'a call{value} ile iade eder, sonra maxBid/maxBidder gunceller. claimTokenFromAuctionByTokenId: maxBidder yoksa NFT seller'a; maxBid < reserve ise iade + NFT seller'a; aksi halde ETH seller'a, NFT maxBidder'a. cancel, acik auction'da iade + NFT geri. Bu uc yol, escrow'un 'para ve NFT ayni anda' invariant'ini korumaya calisir.
bid → refund old leader → set new leader
claim:
no bid → NFT seller
below reserve → refund + NFT seller
else → pay seller + NFT winner
cancel → refund leader + NFT seller
Basarisizlik: stuck refund, griefing, emergency
Onceki bidder bir kontrat ve receive revert ederse, yeni bid require(success) ile takilir — griefing vektoru. Claim'de seller.call basarisiz olsa bile kod NFT transferine devam etme riski tasiyabilir (success kontrolu eth tarafinda eksik kalabilir). Emergency transferNft, claim beklemeden NFT'yi ceker; maxBidder ETH'si kontrata mahkum kalabilir. Performans: her bid Bid[] dizisine push eder; uzun auction tarihcesi view gazini ve storage'i sisirir.
Bu bölümde en çok karışan eşleştirmeler
❌ Ingiliz artirmasi = herkes auction acabilir
✓ Bu implementasyonda createNewAuction owner-only'dir
❌ Reserve altindaki bid otomatik yanar
✓ Claim yolunda maxBidder'a iade edilir; NFT seller'a doner
❌ Emergency NFT cekmek bid'leri de temizler
✓ transferNft ETH iadesini otomatik yapmaz; fonlar kontrata sikisabilir
Kendi sisteminizi denetleme listesi
- Claim'i kim cagirabilir — sadece maxBidder mi, seller da mi?
- Onceki bidder receive revert ederse yeni bid ne olur?
- Reserve altinda claim sonrasi UI hangi durumu gosterir?
- cancel ile emergency transferNft farki fonlar icin ne?
- Bid[] tarihcesi ne kadar buyuyebilir, view limit var mi?
Bu bölümden aklında kalması gerekenler
- BareNFTAuction, owner-operated English auction + claim/iade yollaridir.
- Push refund UX kolayligi, griefing ile stuck bid riskini birlikte getirir.
- Emergency NFT cekisi, ETH tarafini otomatik settle etmez.
Artirmada bitis blogu yetmez; para ve NFT icin ayni anda kapanan bir claim yolu gerekir.
SSS
Sık sorulan sorular
English auction nedir?
Acik artan teklif; her yeni bid onceki lideri gecer ve iade tetikler.
Reserve price nedir?
Max bid rezervin altindaysa satis olmaz; NFT seller'a, bid iade.
"Ingiliz artirmasi = herkes auction acabilir" doğru mu?
Bu implementasyonda createNewAuction owner-only'dir
Bu bölüm neyi sabitler?
Bu bolum, artirma yasam dongusunu, claim/iade yollarini ve emergency yetkilerin ADR trade-off'unu sabitler. BareNFTAuction, owner-operated Ingiliz artirmasi sunar: NFT escrow'da, bid onceki maxBidder'a aninda iade eder, claimTokenFromAuctionByTokenId bitiste NFT ve ETH'yi rezerv kuralina gore dagitir. cancelAuctionByTokenId max bid'i iade edip NFT'yi seller'a dondurur. Emergency transferNft/transferFunds yine owner'dadir — kurtarma ile rug ayni kapidan.
Ogrenilen Muhendislik Prensipleri
- Auction ADR'si create yetkisi, rezerv kurali ve iade modelini birlikte yazmalidir.
- Push refund secilirse griefing ve pull-payment alternatifi dokumante edilmelidir.
- Emergency NFT/ETH cikisları claim invariant'ini bozmadan tasarlanmalidir.
Okumaya devam et
Okumaya devam et
Seride sonraki yazi
BareToken: NFT (Non-Fungible Token)-Gated Emisyon ve Istismar
Hashmasks-tarzi NFT-gated claim: ~10e18/gun, INITIAL_ALLOTMENT, 10 yillik emissionEnd. Acik mint yuzeyi ve abuse senaryolari.
Seride sonraki yazi
BareNFTReserve: Escrow, RandomBuy ve Zayif RNG
Owner-only createNewListing, buy ve randomBuy — keccak256(revealNonce, block.difficulty, msg.sender) % 3.…
Ayni seriden
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.