Oyun Kitabı

BareNFTReserve : Escrow, RandomBuy et RNG faible (Barenftreserve Escrow Randombuy Et Rng Faible)

CreateNewListing, buy et randomBuy réservés au propriétaire — keccak256 (revealNonce, block.difficulty, msg.sender) % 3. ADR et transfert d'urgence du marché géré par le propriétaire.

Protocole de marché Bare Crypto Solidity

Partie 3 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

Escrow trust, insécurité des lancers de dés

BareNFTReserve engage le NFT dans le contrat et ouvre le prix avec createNewListing réservé au propriétaire ; buy ferme la liste fixe avec paiement. randomBuy keccak256 (revealNonce, block.difficulty, msg.sender) produit trois index candidats « aléatoires » à 3 % – une entropie en chaîne délibérément faible. C'est le cœur de l'ADR du marché géré par le propriétaire de Bare Crypto : la confiance est dans l'opérateur, la chance est un bonbon UX que l'opérateur tolère.```text Owner ──transfer NFT──> BareNFTReserve (escrow) createNewListing(tokenId, price) | +── buy(tokenId) ──ETH──> seller, NFT──> buyer | +── randomBuy() ── keccak(nonce, difficulty, sender) % 3 | +── emergency: transferNft / transferFunds


## Concepts à la première mention```text
📦 Escrow listing
NFT once kontrata transfer edilir; listing ancak ownerOf(contract) iken acilir.

📦 Owner-operated marketplace
Listing acma ve acil cikislar tek owner'a bagli; permissionless seller degil.

📦 Weak on-chain RNG
block.difficulty + nonce + sender ile uretilen, miner/caller etkisine acik 'rastgelelik'.

📦 Emergency exit
transferNft / transferFunds ile owner'in escrow'u bypass etmesi.
```Le dépôt géré par le propriétaire est une forme d'ADR de produits différente du marché sans autorisation de type OpenSea ; randomBuy ajoute une couche de chance à ce modèle, cela ne change pas la confiance.

## ADR : réserve exploitée par le propriétaire

Décision : propriétaire de createNewListing uniquement ; Le NFT doit avoir été transféré au contrat au préalable. Justification : Bare Crypto gère le stock de la vitrine par un seul opérateur, réduisant ainsi le risque de fausses annonces et de faux tapis en évitant le modèle sans autorisation du vendeur. Prix ​​: opérateur central ; annonce ouverte/fermée, prix fixé, fermetureL'annonce est entièrement propriétaire. Il s'agit d'un ADR de « dépôt de vitrine d'opérateur », et non d'un « marché de protocoles ».

## buy, randomBuy et diagramme d'entropie

buy obtient le dernier enregistrement de l'historique tokenIdToListing, demande msg.value >= price, fait seller.transfer et safeTransferFrom. randomBuy commente le prix requis ; randomId gèle trois index à 3% et essaie jusqu'à la première vente réussie. La source d'entropie est prévisible ou influencée par les mineurs – ce n'est pas un hasard, mais une vitrine UX de « boîte mystère ».```text
revealNonce ++
keccak256(nonce, block.difficulty, msg.sender)
        |
        v
   index = hash % 3
   [i, i+1, i+2] mod 3
        |
        v
 try listings until sold
```## Échec : RNG faible, réentrance et urgence

Le paiement instantané avec seller.transfer msg.value est un domaine dans lequel la discipline contrôles-effets-interactions dans buy/randomBuy est faible ; Des vendeurs malveillants peuvent tenter de réintégrer le contrat. Faiblesse du RNG : dans le même bloc, l'appelant peut voir grâce à la simulation dans quelle tranche de 3 % il tombe. Le transfert d'urgence Nft/transferFunds est là pour la récupération après incident, mais il libère tout dépôt en cas de compromission de la clé du propriétaire. Performances : à mesure que le tableau tokenIdToListing se développe, la complexité du gaz et de l'historique getLastListingByTokenId augmente.

## Les confrontations les plus déroutantes de cet épisode```text
❌ block.difficulty ile random adil NFT dagitimi yapar
✓ Bu zayif RNG'dir; mystery UX olabilir, adil mint/raffle olamaz

❌ Escrow'da NFT varsa pazar permissionless'tir
✓ Listing yaratma owner-only ise urun operator vitrinidir

❌ Emergency transfer sadece guvenlik artirir
✓ Ayni kapı, compromise'te rug vektorudur; timelock/multisig olmadan tek nokta riskidir

Liste de contrôle de votre propre système

  1. À qui createNewListing est-il disponible : propriétaires ou vendeurs ?
  2. La vérification des prix randomBuy est-elle active dans le code ou dans le commentaire ?
  3. Quel portefeuille contient les transferts d'urgence/transferFunds ? Est-ce qu'il a multisig ?
  4. Le résultat randomBuy peut-il être prédit par l'appelant dans le même bloc ?
  5. Quel enregistrement est considéré comme « actuel » dans l'interface utilisateur de l'historique des annonces (tokenIdToListing) ?

Choses à retenir de cette section

  1. BareNFTReserve est une vitrine de dépôt fiduciaire ADR exploitée par le propriétaire ; Ce n'est pas un marché sans autorisation.
  2. L'entropie randomBuy est délibérément faible – des bonbons UX, pas de chance équitable.
  3. Les pouvoirs d'urgence ouvrent le secours et le tapis avec la même clé.

Si la confiance Escrow appartient à l'opérateur, le fait de lancer les dés est une décoration et non un protocole.

FAQ

Frequently asked questions

Qu'est-ce qu'une liste Escrow ?

Le NFT est d’abord transféré au contrat ; La liste ne peut être ouverte que lorsque OwnerOf (contrat).

Qu’est-ce qu’une place de marché gérée par son propriétaire ?

L'ouverture du gîte et les sorties de secours sont soumises à un seul propriétaire ; Pas de vendeurs sans autorisation.

Est-il vrai que « la distribution aléatoire et équitable de NFT se fait avec block.difficulty » ?

C'est un mauvais RNG ; Peut être une UX mystérieuse, pas juste un tirage au sort/un tirage au sort

Que corrige cette section ?

Cette section corrige le modèle de dépôt de réserve, le RNG faible et le compromis entre les pouvoirs d'urgence. BareNFTReserve engage le NFT dans le contrat et ouvre le prix avec createNewListing réservé au propriétaire ; buy ferme la liste fixe avec paiement. randomBuy keccak256 (revealNonce, block.difficulty, msg.sender) produit trois index candidats « aléatoires » à 3 % – une entropie en chaîne délibérément faible. C'est le cœur de l'ADR du marché géré par le propriétaire de Bare Crypto : la confiance est dans l'opérateur, la chance est un bonbon UX que l'opérateur tolère.

Principes d'ingénierie appris

  • L'ADR Marketplace doit clairement faire la distinction entre les vendeurs sans autorisation et les vitrines des opérateurs.
  • Si le RNG en chaîne est utilisé, « faible/injuste » doit être clairement documenté.
  • Les sorties d'urgence ne doivent pas être conservées seules sans multisig ou timelock.

Continuer la lecture

Continuer la lecture

Suivant en série

Suivant en série

Même série

Paylaş