手册

BareNFTAuction:索赔、退款和紧急权力 (Barenftauction)

英国拍卖:投标、索赔、取消、保留下返回和所有者紧急转移Nft/transferFunds权衡。

裸加密货币 Solidity 市场协议

部分 4 的 5

不带 Hardhat/Foundry 的 BareNFT,带有 Remix IDE 和 OpenZeppelin v4.1 GitHub 导入、储备、英国拍卖和 NFT 门控 BareToken 发行架构; ADR、弱 RNG 和紧急权力权衡。

Bare Crypto Solidity marketplace protocol diagram

投标结束;货币和NFT(Non-Fungible Token)必须同时结算

BareNFTAuction 提供所有者经营的拍卖:在 NFT 托管中,出价立即返回到之前的 maxBidder,claimTokenFromAuctionByTokenId 根据最后的保留规则分配 NFT 和 ETH。 cancelAuctionByTokenId 退还最高出价并冻结卖家的 NFT。紧急转账 Nft/transferFunds 仍在业主那里 - 恢复和地毯通过同一扇门。```text 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*


## 第一次提到的概念```text
📦 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.
```推送退款简化了用户体验,但可能会因调用失败而锁定整个出价;拉式付款是一种替代 ADR。

## ADR:业主创建的英式拍卖

决策:createNewAuction 仅限所有者; endBlock > 块.number;在上一次拍卖结束之前,不会有新的相同 tokenId 的拍卖。原因:Bare Crypto 通过运营商日历管理其展示拍卖。价格:无未经许可的卖家拍卖; setTokenContract 和 setOwner 也在所有者中 - 协议表面取决于操作员密钥。

## 出价、索赔、取消流程

检查出价、起始出价和最高出价;通过 call{value} 返回之前的 maxBidder,然后更新 maxBid/maxBidder。 ClaimTokenFromAuctionByTokenId:maxBidder 或 NFT 卖家;如果 maxBid < 保留 + 返还给 NFT 卖家;否则 ETH 给卖家,NFT 给 maxBidder。取消,退款+NFT回到公开拍卖。这三种方式试图保护“货币和 NFT 同时”的托管不变性。```text
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
```## 失败:退款受阻、悲伤、紧急情况

如果先前的投标人恢复合同并接收,则新的投标将陷入 require(success)——恶意向量。即使seller.call在Claim中失败,该代码也可能带有继续NFT转账的风险(eth侧可能缺少成功控制)。紧急转账Nft无需等待索赔即可撤回NFT; maxBidder ETH 可能会继续锁定在合约中。性能:每次出价都会推送到Bid[]数组;较长的拍卖历史会增加查看天然气和存储量。

## 本期最令人困惑的对决```text
❌ 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

您自己的系统清单

  1. 谁可以调用 Claim——仅 maxBidder 或 torrent 也可以?
  2. 如果先前的投标人收到相反的报价,新的投标会怎样?
  3. 预约领取后界面显示什么状态? 4.资金取消和紧急转移NFT有什么区别?
  4. Bid[] 历史记录可以增长多少?有观看次数限制吗?

本节中需要记住的事情

  1. BareNFTAuction 是业主经营的英式拍卖+索赔/退货。
  2. 推送退款用户体验的便捷性带来了恶意破坏和卡住出价的风险。
  3. 紧急NFT提现不会自动结算ETH端。

拍卖结束博客不够;需要一条针对货币和 NFT 同时关闭的索赔路径。

FAQ

Frequently asked questions

什么是英式拍卖?

公开增加出价;每个新的出价都会超过之前的领先者并触发回报。

什么是保留价?

如果最高出价低于保留价,则不会进行销售;对于NFT卖家,竞价退款。

难道真的是“英式拍卖=任何人都可以开拍卖”吗?

在此实现中,createNewAuction 仅限所有者

本节修复了什么?

本节修复了升级生命周期、索赔/退款途径以及紧急权力的 ADR 权衡。 BareNFTAuction 提供所有者经营的拍卖:在 NFT 托管中,出价立即返回到之前的 maxBidder,claimTokenFromAuctionByTokenId 根据最后的保留规则分配 NFT 和 ETH。 cancelAuctionByTokenId 退还最高出价并冻结卖家的 NFT。紧急转账 Nft/transferFunds 仍在业主那里 - 恢复和地毯通过同一扇门。

学到的工程原理

  • 拍卖ADR必须将创建权限、保留规则和收益模式写在一起。
  • 如果选择推送退款,则必须记录取消付款和拉取付款的替代方案。
  • 紧急 NFT/ETH 退出的设计应不破坏声明不变性。

继续阅读

继续阅读

系列中的下一个

系列中的下一个

同系列

Paylaş