Playbook
Descubrimiento de listado mediante escaneo totalSupply (Descubrimiento DE Listado Mediante Escaneo Totalsupply)
getListings lee el suministro total de NFT y realiza múltiples llamadas RPC para cada tokenId. N×call no escala; Produce una lista obsoleta de encuestas de 30 años y un límite de tasa de Infura.
Interfaz de usuario de mercado similar a OpenSea
Parte 2 de 3
Bare Crypto Marketplace SPA: arquitectura de información similar a OpenSea (Inicio, Mercado, Visor, Perfil, formulario mint), descubrimiento de listados mediante el escaneo del suministro total, separación de utilidades compartida con Rinkeby Infura y los clientes mint de la red principal: ADR, límite de tasa y fallas en el listado obsoleto de la encuesta de 30 años.
Si no hay un indexador, cada actualización es un escaneo en cadena
El cliente del mercado Bare Crypto encuentra listados abiertos con el bucle totalSupply() + tokenId, no con un índice de evento o subgrafo. Se realizan llamadas adicionales en cada paso, como wasNftSold, isListingOpenByTokenId y getLastListingByTokenId. A medida que crece la oferta, el costo crece linealmente; de hecho, peor; El contenedor de reserva repite esto cada ~30 segundos.```text
getListings(sold=false)
maxToken ← NFT.totalSupply()
for tokenId = maxToken … 1:
wasSold? open? isListing?
→ maybe getListingInfo(tokenId)
↓
N tokens × M RPC calls / poll
poll every ~30s (Reserve / Profile)
↓
Infura rate-limit → empty / stale grid
## Conceptos en la primera mención```text
📦 totalSupply Taraması
Listing kümesini, arz üst sınırından geriye tokenId döngüsüyle keşfetmek.
📦 N×RPC
Her token için birden fazla eth_call; poll ile çarpılınca kota tüketimi.
📦 Stale Listing
Satılmış veya iptal edilmiş ilanın UI'da hâlâ açık görünmesi; poll gecikmesi veya kısmi hata.
📦 Infura Rate Limit
Projeye bağlı istek kotası; aşılınca çağrılar başarısız olur veya yavaşlar.
```El bucle que se ejecuta en la pequeña colección Rinkeby no es una característica del producto a escala de la red principal.
## Verdad del algoritmo
`getListings` primero lee `getTokenSupply()` hasta `totalSupply`, luego desciende de `maxToken` a 1. Para cada token hay cheques vendidos/abiertos/listados y `getListingInfo` si es necesario. Incluso los rangos de tokens vacíos queman RPC.```text
Cost model (approx)
cost ≈ totalSupply × calls_per_token × polls_per_minute
UI cards may add metadata/IPFS reads on top
```## Encuesta de 30 segundos y interfaz de usuario obsoleta
Ejecuta `getListings` en el montaje del contenedor de reserva y recorre en iteración `setInterval(..., 30000)`. Similar a un perfil, escanea posesiones en aproximadamente 30 segundos; El visor y las tarjetas utilizan intervalos de 10 a 15 segundos. Mientras el usuario ve una compra, la cuadrícula puede permanecer obsoleta para una encuesta o vacía debido al límite de tarifa.
## Modo de falla de Infura
Todo el escaneo va al nodo de lectura (Rinkeby Infura HTTP/WSS). Cuando se alcanza la cuota, las rutas de prueba/catch parciales pueden devolver `wasSold=false` o una cadena vacía; La cuadrícula se vuelve silenciosamente falsa. Enterrar las claves en el repositorio agrava el problema: el ID del proyecto nunca se escribe en la documentación; La limitación de ruta env + es parte de ADR.```text
ADR: Listing discovery
Accepted (prototype): scan totalSupply client-side
Rejected (then): subgraph / event indexer
Consequence: rate limits, stale polls, O(supply) cost
Follow-up: index Transfer/Listing events; paginate
```## Diferencia de OpenSea
El cliente OpenSea no escanea todo el suministro desde el navegador de cada visitante; Hay índice + API. Bare Crypto copia la referencia del producto en IA, no la infraestructura de descubrimiento; esta es una compensación deliberada (o al menos en retrospectiva).
## Los enfrentamientos más confusos de este episodio.```text
❌ totalSupply taraması = üretim keşif stratejisi
✓ Prototip; indexer yokluğunun semptomu
❌ 30s poll gerçek zamanlı piyasadır
✓ Poll, stale listing ve kota riskidir
❌ try/catch ile yutulan RPC hatası = güvenli UI
✓ Sessiz yanlış listing daha tehlikelidir
❌ Infura anahtarını client bundle'a gömmek pratiktir
✓ Sızıntı + ortak kota; env ve proxy düşünün
Lista de verificación de su propio sistema
- ¿Cuántas llamadas eth_call por token en una ronda
getListings? - ¿Cuál será el costo por encuesta cuando la oferta aumente 10 veces?
- ¿En qué estado vacío/incorrecto cae la interfaz de usuario cuando se produce el límite de velocidad?
- ¿Cuántos segundos puede permanecer rancia la parrilla después de la compra?
- ¿Qué eventos se indexan y se elimina el escaneo?
Cosas para recordar de esta sección
- El descubrimiento de listados es un escaneo total de suministros; No es un índice OpenSea.
- La encuesta N×RPC × 30s hace que la cuota de Infura y la interfaz de usuario obsoleta sean inevitables.
- ADR: aceptación de prototipos, seguimiento de indexadores; no escala silenciosamente.
Solicitar cada tokenId, no el mercado; Es una prueba de carga.
FAQ
Frequently asked questions
¿Qué es el escaneo de suministro total?
Explorar el listado establecido haciendo un bucle con el tokenId hacia atrás desde el límite superior del suministro.
¿Qué es N×RPC?
Múltiples eth_calls para cada token; Consumo de cuota multiplicado por encuesta.
¿Es correcto "totalSupply scan = estrategia de descubrimiento de producción"?
Prototipo; síntoma de ausencia del indexador
¿Qué soluciona esta sección?
Esta sección desglosa el algoritmo de descubrimiento detrás de la red tipo OpenSea y por qué es un tema de ADR. El cliente del mercado Bare Crypto encuentra listados abiertos con el bucle `totalSupply()` + tokenId, no con un índice de evento o subgrafo. Se realizan llamadas adicionales en cada paso, como `wasNftSold`, `isListingOpenByTokenId` y `getLastListingByTokenId`. A medida que crece la oferta, el costo crece linealmente; de hecho, peor; El contenedor de reserva repite esto cada ~30 segundos.
Principios de ingeniería aprendidos
- El costo del descubrimiento debe ser visible para el proveedor; No es un producto O(N) disfrazado.
- El intervalo de sondeo no es SLA; Está diseñado junto con obsoleto y cuota.
- Tragar errores de RPC hace que la lista incorrecta sea una característica.
Continuar leyendo
Continuar leyendo
Siguiente en la serie
Separación de clientes Rinkeby Testnet y Mainnet
Los clientes de Collection Mint se endurecen en la red principal, mientras que Marketplace SPA se bloquea en Rinkeby Infura.…
Siguiente en la serie
Arquitectura de información similar a OpenSea
Bare Crypto Marketplace SPA establece una arquitectura de información que copia claramente OpenSea como referencias de productos: Inicio, Mercado, Visor,…
Artículos relacionados
BareNFTReserve: depósito en garantía, compra aleatoria y RNG débil
CreateNewListing, buy y randomBuy exclusivos para el propietario: keccak256(revealNonce, block.difficulty, msg.sender) % 3.…