プレイブック

BareNFT: ロール、一時停止可能、およびトークン URI (Barenft Uri)

BareNFT は、ERC721 Enumerable/Burnable/Pausable および AccessControl を備えたロールゲート型 mint(to,id,uri) を提供します。トークンごとの URI と一時停止のトレードオフ。

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

一部 2 の 5

Remix IDE および OpenZeppelin v4.1 を使用した Hardhat/Foundry なしの BareNFT GitHub インポート、リザーブ、英国オークション、および NFT ゲートの BareToken エミッション アーキテクチャ。 ADR、弱い RNG、緊急権限のトレードオフ。

Bare Crypto Solidity marketplace protocol diagram

プリセットからその先へ: 誰が鋳造し、誰が止めるのか

BareNFT は OpenZeppelin ERC721PresetMinterPauserAutoId フレームワークから派生していますが、mint(to, tokenId, tokenURI) に AutoId の代わりに外部から提供された tokenId を提供します。 MINTER_ROLE と PAUSER_ROLE は AccessControlEnumerable によって分離されます。各トークンのカスタム URI は、baseURI と結合され、メタデータの柔軟性を提供するだけでなく、造幣局のみがコレクションを形成する信頼モデルも提供します。```text Deployer ├─ DEFAULT_ADMIN_ROLE ├─ MINTER_ROLE ──> mint(to, id, uri) └─ PAUSER_ROLE ──> pause / unpause | v ERC721Enumerable + Burnable + Pausable | v tokenURI = baseURI + per-token path


## 最初に説明した概念```text
📦 AccessControl
Rol bazli izin modeli; Ownable'dan daha ince taneli mint/pause ayrimi.

📦 ERC721Pausable
Transferleri durduran acil fren; listing ve auction escrow'unu da kilitler.

📦 Per-token URI
Her tokenId icin ayri metadata yolu; baseURI ile birlestirilir.

📦 Role-gated mint
Yalniz MINTER_ROLE sahibinin mint(to, id, uri) cagirabilmesi.
```役割の分離により安全性が向上します。ただし、DEFAULT_ADMIN_ROLE が片手にある場合、MINTER/PAUSER の区別は表面的なものであり、機能しません。

## ADR: AutoId の代わりに tokenId を開きます

決定: mint 署名を mint(address to、uint256 tokenId、string tokenURI) にします。カウンタの代わりにオペレータ ID を選択します。理由: コレクションのカタログ番号、予備リスト、オークション履歴は tokenId によってインデックス化されます。コスト: 競合する ID の場合は _mint を元に戻します。オフチェーンのミント調整が必須になります。これは、「オンチェーン自動インクリメント」ではなく、「オペレーター・カタログ権限」ADR です。

## ロール、一時停止、転送フック

stop() は PAUSER_ROLE をリクエストします。 _beforeTokenTransfer は、Enumerable + Pausable チェーンを呼び出します。一時停止がオンの場合、BareNFTReserve または BareNFTAuction のsafeTransferFrom も停止します。緊急ブレーキはすべてのエスクロー出力を同時にロックします。これは強力なインシデント ツールであり、オペレーターが市場全体を凍結できることも意味します。```text
PAUSER_ROLE
   pause()
     |
     v
_beforeTokenTransfer
     |
     +-- marketplace escrow transfer BLOCKED
     +-- peer-to-peer transfer BLOCKED
```## 失敗: 承認されていないミント サーフェスと URI オフセット

setMintingCurrency はパブリックに呼び出すことができるようです。 mintingPrice は決して設定されず、価格設定面が不完全です。パフォーマンス シナリオ: 転送ごとに Enumerable + _beforeTokenTransfer を使用すると、忙しい二次市場でのガス コストが増加します。 URI 側では、IPFS ゲートウェイが変更されると、baseURI + パスの組み合わせによってコレクション全体が壊れます。トークンごとの柔軟性は、baseURI の運用規律によって決まります。 MINTER_ROLE の侵入により、偽の ID mint を使用して予約リスト履歴が汚染されます。

## このエピソードで最も混乱を招く対戦```text
❌ AccessControl = Ownable'in sadesi
✓ AccessControl mint ve pause'u ayirir; Ownable tek sahip ile her seyi birlestirir

❌ Pause sadece transferleri durdurur, marketplace etkilenmez
✓ Escrow safeTransferFrom de pause altinda revert eder; tum pazar kilitlenir

❌ Per-token URI merkeziyetsiz metadata demektir
✓ URI hala minter ve baseURI operatorune guvenir; pin ve gateway politikasi ayridir

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

  1. DEFAULT_ADMIN、MINTER、PAUSER は同じウォレット内にありますか? それとも別々ですか?
  2. 一時停止中に出品/オークションを開始できるのはどの TX ですか?
  3. tokenURI の組み合わせがbaseURI に変更されると、古いトークンは壊れますか?
  4. 同じ tokenId を 2 回作成しようとすると、UI はどのように動作しますか?
  5. setMintingCurrency のようなハーフフェイスを呼び出せるのは誰ですか?

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

  1. BareNFT は、ロールゲート型 mint(to,id,uri) を使用してカタログ権限をオンチェーンにもたらします。
  2. 一時停止可能は、エスクロー マーケットプレイスにおけるグローバルなキル スイッチです。トレードオフは明確に記述される必要があります。
  3. トークンごとの URI の柔軟性は、baseURI 操作の負債に依存します。

役割の分離はロック方式です。管理者が片手に持つ場合、それは単なるラベルです。

FAQ

よくある質問

アクセスコントロールとは何ですか?

役割ベースの権限モデル。 Ownable よりもきめ細かいミント/ポーズの分離。

ERC721一時停止可能とは何ですか?

トランスファーを停止する非常ブレーキ。また、出品やオークションのエスクローもロックされます。

「AccessControl = Ownable」は正しいですか?

AccessControl はミントとポーズを分離します。 Ownable は 1 人の所有者ですべてを組み合わせる

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

このセクションでは、BareNFT のロール制限、トークンごとの URI 決定、一時停止によるマーケットプレイスの副作用を修正します。 BareNFT は OpenZeppelin ERC721PresetMinterPauserAutoId フレームワークから派生していますが、mint(to, tokenId, tokenURI) に AutoId の代わりに外部から提供された tokenId を提供します。 MINTER_ROLE と PAUSER_ROLE は AccessControlEnumerable によって分離されます。各トークンのカスタム URI は、baseURI と結合され、メタデータの柔軟性を提供するだけでなく、造幣局のみがコレクションを形成する信頼モデルも提供します。

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

  • ミント署名 (自動 ID とオープン ID) は、カタログおよびマーケットプレイスのインデックス モデルとともに選択する必要があります。
  • 一時停止は、エスクロー プロトコルにおけるグローバルな一時停止として設計され、伝達される必要があります。
  • メタデータ ADR には、baseURI、トークンごとのパス、およびゲートウェイ ピンを一緒に含める必要があります。

続きを読む

続きを読む

シリーズの次のシリーズ

シリーズの次のシリーズ

同じシリーズ

Paylaş