プレイブック

BareNFTAuction: 請求、返金および緊急権限 (Barenftauction)

英国のオークション: 入札、請求、キャンセル、保留中の返品、および所有者の緊急送金Nft/transferFundsのトレードオフ。

Bare Crypto Solidity マーケットプレイス プロトコル

一部 4 の 5

Remix IDE および OpenZeppelin v4.1 を使用した Hardhat/Foundry なしの BareNFT 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.
```プッシュ返金は 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

独自のシステムのチェックリスト

  1. Claim を呼び出せるのは誰ですか — maxBidder または torrent だけでもいいですか?
  2. 前の入札者が反対意見を受け取った場合、新しい入札はどうなりますか?
  3. リザーブで請求した後、UI にはどのようなステータスが表示されますか? 4.資金のキャンセルと緊急送金NFTの違いは何ですか?
  4. Bid[] 履歴はどこまで伸びる可能性がありますか?閲覧制限はありますか?

このセクションで覚えておくべきこと

  1. BareNFTAuction はオーナー運営の英国オークション + クレーム/返品です。
  2. プッシュ返金の UX の容易さは、グリーフリングと入札のスタックのリスクを同時にもたらします。
  3. NFTの緊急出金はETH側の自動決済にはなりません。

オークションでは最後のブログだけでは不十分です。お金とNFTを同時にクローズする請求パスが必要です。

FAQ

よくある質問

英語オークションとは何ですか?

公開入札額を増加させます。新しい入札額が前のリーダーを上回り、戻りを引き起こします。

リザーブ価格とは何ですか?

最高入札額がリザーブを下回る場合、販売は行われません。 NFT販売者への入札返金。

「英語オークション=誰でもオークションができる」って本当ですか?

この実装では、createNewAuction は所有者専用です

このセクションでは何を修正しますか?

このセクションでは、エスカレーションのライフサイクル、請求/返金経路、および緊急権限の ADR トレードオフについて修正します。 BareNFTAuction はオーナー運営のオークションを提供します。NFT エスクローでは、入札はすぐに前の maxBidder に戻り、claimTokenFromAuctionByTokenId は最後にリザーブ ルールに従って NFT と ETH を分配します。 cancelAuctionByTokenId は最大入札額を返金し、NFT を販売者に凍結します。緊急転送Nft/transferFundsはまだ所有者にあります - 回復と敷物は同じドアを通って行われます。

学んだエンジニアリング原則

  • オークション ADR は、作成権限、予約ルール、および返品モデルを一緒に記述する必要があります。
  • プッシュ払い戻しを選択した場合は、グリーフィングおよびプル支払いの代替案を文書化する必要があります。
  • NFT/ETH の緊急出口は、クレームの不変条件を破ることなく設計される必要があります。

続きを読む

続きを読む

シリーズの次のシリーズ

シリーズの次のシリーズ

同じシリーズ

Paylaş