プレイブック
BareNFTAuction: 請求、返金および緊急権限 (Barenftauction)
英国のオークション: 入札、請求、キャンセル、保留中の返品、および所有者の緊急送金Nft/transferFundsのトレードオフ。
Bare Crypto Solidity マーケットプレイス プロトコル
一部 4 の 5
Remix IDE および OpenZeppelin v4.1 を使用した Hardhat/Foundry なしの BareNFT GitHub インポート、リザーブ、英国オークション、および NFT ゲートの BareToken エミッション アーキテクチャ。 ADR、弱い RNG、緊急権限のトレードオフ。
入札は終了します。お金と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.
```プッシュ返金は UX を簡素化しますが、呼び出しが失敗すると入札全体がロックされる可能性があります。プルペイメントは代替 ADR です。
## ADR: オーナー作成の英国オークション
決定: createNewAuction のみの所有者。エンドブロック > ブロック番号;前回のオークションが終了するまで、同じ tokenId の新しいトークンは存在しません。理由: Bare Crypto は、オペレーター カレンダーを使用してショーケース オークションを管理します。価格: 許可のない販売者オークションはありません。 setTokenContract と setOwner も所有者に含まれます。プロトコル サーフェスは演算子キーに依存します。
## 入札・クレーム・キャンセルの流れ
入札、startingBid、maxBid をチェックします。 call{value} で前の maxBidder を返し、maxBid/maxBidder を更新します。 claimTokenFromAuctionByTokenId: maxBidder または NFT 販売者。 maxBid < 予約 + NFT 販売者に返品の場合。それ以外の場合はETHが販売者に、NFTがmaxBidderに送信されます。キャンセル、返金 + NFT を公開オークションに戻します。これらの 3 つの方法は、エスクローの不変条件である「お金と 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
独自のシステムのチェックリスト
- Claim を呼び出せるのは誰ですか — maxBidder または torrent だけでもいいですか?
- 前の入札者が反対意見を受け取った場合、新しい入札はどうなりますか?
- リザーブで請求した後、UI にはどのようなステータスが表示されますか? 4.資金のキャンセルと緊急送金NFTの違いは何ですか?
- Bid[] 履歴はどこまで伸びる可能性がありますか?閲覧制限はありますか?
このセクションで覚えておくべきこと
- BareNFTAuction はオーナー運営の英国オークション + クレーム/返品です。
- プッシュ返金の UX の容易さは、グリーフリングと入札のスタックのリスクを同時にもたらします。
- NFTの緊急出金はETH側の自動決済にはなりません。
オークションでは最後のブログだけでは不十分です。お金とNFTを同時にクローズする請求パスが必要です。
FAQ
よくある質問
英語オークションとは何ですか?
公開入札額を増加させます。新しい入札額が前のリーダーを上回り、戻りを引き起こします。
リザーブ価格とは何ですか?
最高入札額がリザーブを下回る場合、販売は行われません。 NFT販売者への入札返金。
「英語オークション=誰でもオークションができる」って本当ですか?
この実装では、createNewAuction は所有者専用です
このセクションでは何を修正しますか?
このセクションでは、エスカレーションのライフサイクル、請求/返金経路、および緊急権限の ADR トレードオフについて修正します。 BareNFTAuction はオーナー運営のオークションを提供します。NFT エスクローでは、入札はすぐに前の maxBidder に戻り、claimTokenFromAuctionByTokenId は最後にリザーブ ルールに従って NFT と ETH を分配します。 cancelAuctionByTokenId は最大入札額を返金し、NFT を販売者に凍結します。緊急転送Nft/transferFundsはまだ所有者にあります - 回復と敷物は同じドアを通って行われます。
学んだエンジニアリング原則
- オークション ADR は、作成権限、予約ルール、および返品モデルを一緒に記述する必要があります。
- プッシュ払い戻しを選択した場合は、グリーフィングおよびプル支払いの代替案を文書化する必要があります。
- NFT/ETH の緊急出口は、クレームの不変条件を破ることなく設計される必要があります。
続きを読む
続きを読む
シリーズの次のシリーズ
BareToken: NFT (Non-Fungible Token) - ゲート型発行と悪用
ハッシュマスク スタイルの NFT ゲート クレーム: ~10e18/日、INITIAL_ALLOTMENT、10 年間の排出終了。オープンミント表面と乱用シナリオ。
シリーズの次のシリーズ
BareNFTReserve: エスクロー、RandomBuy、弱い RNG
オーナー専用の createNewListing、buy および randomBuy — keccak256(revealNonce, block.difficulty, msg.sender) % 3. オーナー運営のマーケットプレイス ADR および緊急送金。
同じシリーズ
BareNFT: ロール、一時停止可能、およびトークン URI
BareNFT は、ERC721 Enumerable/Burnable/Pausable および AccessControl を備えたロールゲート型 mint(to,id,uri) を提供します。トークンごとの URI と一時停止のトレードオフ。