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.

Bare Crypto Solidity marketplace protocol diagram

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

  1. Claim'i kim cagirabilir — sadece maxBidder mi, seller da mi?
  2. Onceki bidder receive revert ederse yeni bid ne olur?
  3. Reserve altinda claim sonrasi UI hangi durumu gosterir?
  4. cancel ile emergency transferNft farki fonlar icin ne?
  5. Bid[] tarihcesi ne kadar buyuyebilir, view limit var mi?

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

  1. BareNFTAuction, owner-operated English auction + claim/iade yollaridir.
  2. Push refund UX kolayligi, griefing ile stuck bid riskini birlikte getirir.
  3. 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

Seride sonraki yazi

Ayni seriden

Paylaş