Playbook
BareNFTReserve: depósito en garantía, compra aleatoria y RNG débil (Barenftreserve Deposito EN Garantia Compra Aleatoria Y Rng Debil)
CreateNewListing, buy y randomBuy exclusivos para el propietario: keccak256(revealNonce, block.difficulty, msg.sender) % 3. Mercado ADR operado por el propietario y transferencia de emergencia.
Protocolo de mercado de solidez criptográfica desnuda
Parte 3 de 5
BareNFT sin Hardhat/Foundry con Remix IDE y OpenZeppelin v4.1 Importaciones de GitHub, reserva, subasta en el Reino Unido y arquitectura de emisión BareToken controlada por NFT; ADR, RNG débil y compensaciones de autoridad de emergencia.
Confianza en depósito de garantía, inseguridad en la tirada de dados
BareNFTReserve deposita el NFT en el contrato y abre el precio con createNewListing exclusivo del propietario; comprar cierra el listado fijo con pago. randomBuy keccak256(revealNonce, block.difficulty, msg.sender) produce tres índices candidatos "aleatorios" al 3%, una entropía en cadena deliberadamente débil. Este es el corazón del mercado ADR operado por el propietario de Bare Crypto: la confianza está en el operador, la suerte es un dulce de UX que el operador tolera.```text Owner ──transfer NFT──> BareNFTReserve (escrow) createNewListing(tokenId, price) | +── buy(tokenId) ──ETH──> seller, NFT──> buyer | +── randomBuy() ── keccak(nonce, difficulty, sender) % 3 | +── emergency: transferNft / transferFunds
## Conceptos en la primera mención```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.
```El depósito en garantía operado por el propietario es una forma diferente de ADR de producto que el mercado sin permiso tipo OpenSea; randomBuy añade una capa de suerte a este modelo, no cambia la confianza.
## ADR: reserva operada por el propietario
Decisión: crear únicamente el propietario de NewListing; El NFT debe haber sido transferido previamente al contrato. Justificación: Bare Crypto gestiona el stock de la tienda mediante un único operador, lo que reduce el riesgo de listados y alfombras falsos al evitar el modelo sin permiso del vendedor. Precio: operador central; listado abierto/cerrado, precio fijado, cierreEl listado es enteramente propietario. Este es un ADR de "escrow de exhibición de operadores", no un "mercado de protocolos".
## compra, compra aleatoria y diagrama de entropía
buy obtiene el último registro del historial de tokenIdToListing, solicita msg.value >= precio, hace seller.transfer y safeTransferFrom. comentarios aleatorios de compra que el precio requiere; randomId congela tres índices al 3% y lo intenta hasta la primera venta exitosa. La fuente de entropía es predecible o está influenciada por los mineros; no es una aleatoriedad justa, sino que muestra una experiencia de usuario de "caja misteriosa".```text
revealNonce ++
keccak256(nonce, block.difficulty, msg.sender)
|
v
index = hash % 3
[i, i+1, i+2] mod 3
|
v
try listings until sold
```## Fallo: RNG débil, reentrada y emergencia
El pago instantáneo con seller.transfer msg.value es un área donde la disciplina de controles-efectos-interacciones en buy/randomBuy es débil; Los vendedores malintencionados pueden intentar renovar el contrato. Debilidad del RNG: en el mismo bloque, la persona que llama puede ver a través de la simulación en qué porción del 3% cae. Transferencia de emergenciaNft/transferFunds está ahí para la recuperación de incidentes, pero anula todo el depósito en garantía en caso de que la clave del propietario se vea comprometida. Rendimiento: a medida que crece la matriz tokenIdToListing, aumenta la complejidad del historial y del gas getLastListingByTokenId.
## Los enfrentamientos más confusos de este episodio.```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
Lista de verificación de su propio sistema
- ¿Para quién está disponible createNewListing: propietarios o vendedores?
- ¿Está activa la verificación de precios de RandomBuy en el código o en el comentario?
- ¿Qué billetera contiene Emergency transferNft/transferFunds? ¿Tiene multifirma?
- ¿Puede la persona que llama predecir el resultado de RandomBuy en el mismo bloque?
- ¿Qué registro se considera "actual" en la interfaz de usuario del historial de listado (tokenIdToListing)?
Cosas para recordar de esta sección
- BareNFTReserve es un ADR de exhibición de depósito en garantía operado por el propietario; No es un mercado sin permiso.
- La entropía de la compra aleatoria es deliberadamente débil: un dulce de UX, no una oportunidad justa.
- Los poderes de emergencia abren el salvamento y la alfombra con la misma llave.
Si la confianza del depósito de garantía recae en el operador, tirar los dados es una decoración, no un protocolo.
FAQ
Frequently asked questions
¿Qué es la lista de depósito en garantía?
El NFT primero se transfiere al contrato; El listado solo se puede abrir cuando propietarioDe(contrato).
¿Qué es un mercado operado por el propietario?
La cotización de apertura y salidas de emergencia está sujeta a un solo propietario; No vendedores sin permiso.
¿Es cierto que "la distribución aleatoria y justa de NFT se realiza con dificultad de bloque"?
Este es un RNG pobre; Puede ser una experiencia de usuario misteriosa, no una menta/rifa justa
¿Qué soluciona esta sección?
Esta sección soluciona el modelo de depósito en garantía de reservas, el débil RNG y la compensación de los poderes de emergencia. BareNFTReserve deposita el NFT en el contrato y abre el precio con createNewListing exclusivo del propietario; comprar cierra el listado fijo con pago. randomBuy keccak256(revealNonce, block.difficulty, msg.sender) produce tres índices candidatos "aleatorios" al 3%, una entropía en cadena deliberadamente débil. Este es el corazón del mercado ADR operado por el propietario de Bare Crypto: la confianza está en el operador, la suerte es un dulce de UX que el operador tolera.
Principios de ingeniería aprendidos
- Marketplace ADR debe distinguir claramente entre vendedores sin permiso y escaparates de operadores.
- Si se utiliza RNG en cadena, se debe documentar claramente "débil/injusto".
- Las salidas de emergencia no deben mantenerse solas sin multifirma o bloqueo de tiempo.
Continuar leyendo
Continuar leyendo
Siguiente en la serie
BareNFTAuction: Reclamación, Reembolso y Poderes de Emergencia
Subasta británica: oferta, reclamación, cancelación, devolución bajo reserva y transferencia de emergencia del propietario.…
Siguiente en la serie
BareNFT: Roles, Pausable y Token URI
BareNFT ofrece mint (a, id, uri) controlado por roles con ERC721 Enumerable/Burnable/Pausable y AccessControl. URI por token y compensaciones de pausa.
Misma serie
Remix + OpenZeppelin: Entrega sin casco
¿Cómo se compiló e implementó el protocolo Bare Crypto sin Hardhat/Foundry con importaciones de GitHub de Remix IDE y OpenZeppelin v4.…