Oyun Kitabı

BareNFT : Rôles, Pausable et URI de jeton (Barenft Roles Pausable Et Uri DE Jeton)

BareNFT propose un mint (to, id, uri) contrôlé par rôle avec ERC721 Enumerable/Burnable/Pausable et AccessControl. URI par jeton et compromis de pause.

Protocole de marché Bare Crypto Solidity

Partie 2 de 5

BareNFT sans Hardhat/Foundry avec Remix IDE et OpenZeppelin v4.1 Importations GitHub, réserve, enchères au Royaume-Uni et architecture d'émission BareToken contrôlée par NFT ; ADR, faible RNG et compromis entre les autorités d’urgence.

Bare Crypto Solidity marketplace protocol diagram

Du préréglage à l'au-delà : qui frappe, qui arrête

BareNFT dérive du framework OpenZeppelin ERC721PresetMinterPauserAutoId, mais fournit mint(to, tokenId, tokenURI) avec tokenId fourni en externe au lieu d'AutoId. MINTER_ROLE et PAUSER_ROLE sont séparés via AccessControlEnumerable ; Un URI personnalisé pour chaque jeton est combiné avec le baseURI, offrant une flexibilité aux métadonnées, ainsi qu'un modèle de confiance dans lequel l'autorité de la Monnaie seule façonne la collection.```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


## Concepts à la première mention```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.
```La séparation des rôles augmente la sécurité ; Mais si DEFAULT_ADMIN_ROLE est dans une main, la distinction MINTER/PAUSER reste cosmétique, non opérationnelle.

## ADR : ouvrez tokenId au lieu de AutoId

Décision : laissez la signature mint être mint (adresse à, uint256 tokenId, string tokenURI) ; Sélectionne l’ID de l’opérateur au lieu du compteur. Raison : les numéros de catalogue des collections, la liste des réserves et l'historique des enchères sont indexés via tokenId. Coût : annule _mint en cas d'ID en conflit ; la coordination de la monnaie hors chaîne devient obligatoire. Il s'agit d'un ADR « d'autorité de catalogue d'opérateur » plutôt que d'un « incrément automatique en chaîne ».

## Rôle, pause et hook de transfert

pause() demande PAUSER_ROLE ; _beforeTokenTransfer appelle la chaîne Enumerable + Pausable. Lorsque Pause est activé, safeTransferFrom sur BareNFTReserve ou BareNFTAucction s'arrête également : le frein d'urgence verrouille toutes les sorties de dépôt simultanément. Il s'agit d'un outil puissant en cas d'incident et cela signifie également que l'opérateur peut geler l'ensemble du marché.```text
PAUSER_ROLE
   pause()
     |
     v
_beforeTokenTransfer
     |
     +-- marketplace escrow transfer BLOCKED
     +-- peer-to-peer transfer BLOCKED
```## Échec : surface de menthe non autorisée et décalage d'URI

setMintingCurrency semble pouvoir être appelé publiquement ; mintingPrice n’est jamais défini – surface de tarification incomplète. Scénario de performance : Enumerable + _beforeTokenTransfer à chaque transfert augmente le coût du gaz sur un marché secondaire très fréquenté. Du côté de l'URI, la combinaison baseURI + chemin interrompt toute la collection lorsque la passerelle IPFS change ; La flexibilité par jeton dépend de la discipline de fonctionnement baseURI. L'infiltration de MINTER_ROLE empoisonne l'historique des listes de réserve avec une fausse pièce d'identité.

## Les confrontations les plus déroutantes de cet épisode```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

Liste de contrôle de votre propre système

  1. DEFAULT_ADMIN, MINTER et PAUSER sont-ils dans le même portefeuille ou séparés ?
  2. Avec quelle transmission les annonces/enchères ouvertes peuvent-elles être placées pendant la pause ?
  3. Les anciens jetons seront-ils brisés lorsque la combinaison tokenURI sera remplacée par baseURI ?
  4. Comment l'interface utilisateur se comporte-t-elle si une tentative est faite pour créer deux fois le même tokenId ?
  5. Qui peut appeler des halffaces comme setMintingCurrency ?

Choses à retenir de cette section

  1. BareNFT apporte l'autorité de catalogue à la chaîne avec mint (to, id, uri) contrôlé par rôle.
  2. Pausable est un coupe-circuit mondial sur les marchés de dépôt fiduciaire : le compromis doit être clairement écrit.
  3. La flexibilité de l'URI par jeton dépend de la dette opérationnelle de baseURI.

La séparation des rôles est un système de verrouillage ; Si l’administrateur est dans une main, ce n’est qu’une étiquette.

FAQ

Frequently asked questions

Qu’est-ce que le contrôle d’accès ?

Modèle d'autorisation basé sur les rôles ; Séparation menthe/pause à grain plus fin que Ownable.

Qu'est-ce que ERC721Pausable ?

Frein d'urgence qui arrête les transferts ; Il verrouille également les inscriptions et le dépôt des enchères.

"AccessControl = Ownable simplement" est-il correct ?

AccessControl sépare la menthe et la pause ; Ownable combine tout avec un seul propriétaire

Que corrige cette section ?

Cette section corrige les limites des rôles BareNFT, la décision d'URI par jeton et les effets secondaires de la pause sur le marché. BareNFT dérive du framework OpenZeppelin ERC721PresetMinterPauserAutoId, mais fournit mint(to, tokenId, tokenURI) avec tokenId fourni en externe au lieu d'AutoId. MINTER_ROLE et PAUSER_ROLE sont séparés via AccessControlEnumerable ; Un URI personnalisé pour chaque jeton est combiné avec le baseURI, offrant une flexibilité aux métadonnées, ainsi qu'un modèle de confiance dans lequel l'autorité de la Monnaie seule façonne la collection.

Principes d'ingénierie appris

  • La signature Mint (auto-id vs open id) doit être sélectionnée avec le modèle d'index de catalogue et de marché.
  • La pause doit être conçue et communiquée comme une pause globale dans les protocoles de dépôt.
  • Les métadonnées ADR doivent inclure baseURI, le chemin par jeton et la broche de passerelle ensemble.

Continuer la lecture

Continuer la lecture

Suivant en série

Suivant en série

Même série

Paylaş