प्लेबुक
कुल आपूर्ति को स्कैन करके खोज को सूचीबद्ध करना (Listing Discovery By Scanning Total Supply)
getListings NFT totalSupply को पढ़ता है और प्रत्येक टोकनआईडी के लिए एकाधिक RPC कॉल करता है। N×कॉल स्केल नहीं करता है; 30s पोल बासी सूची और Infura दर-सीमा का उत्पादन करता है।
ओपनसी-लाइक मार्केटप्लेस यूआई
भाग 2 का 3
बेअर क्रिप्टो मार्केटप्लेस एसपीए: ओपनसी जैसी सूचना वास्तुकला (होम, मार्केटप्लेस, व्यूअर, प्रोफाइल, मिंट फॉर्म), टोटल सप्लाई को स्कैन करके लिस्टिंग खोज, रिंकीबी इन्फुरा और मेननेट मिंट क्लाइंट्स के साथ साझा की गई उपयोगिता पृथक्करण - एडीआर, रेट-लिमिट और 30s पोल बासी लिस्टिंग विफलताएं।
यदि कोई इंडेक्सर नहीं है, तो प्रत्येक रिफ्रेश एक चेन स्कैन है
बेयर क्रिप्टो मार्केटप्लेस क्लाइंट को totalSupply() + टोकनआईडी लूप के साथ खुली लिस्टिंग मिलती है, किसी इवेंट इंडेक्स या सबग्राफ के साथ नहीं। प्रत्येक चरण पर अतिरिक्त कॉल की जाती हैं, जैसे wasNftSold, isListingOpenByTokenId, और getLastListingByTokenId। जैसे-जैसे आपूर्ति बढ़ती है, लागत रैखिक रूप से बढ़ती है - वास्तव में, बदतर; रिज़र्व कंटेनर इसे हर ~30 सेकंड में दोहराता है।```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
## पहले उल्लेख पर अवधारणाएँ```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.
```छोटे रिंकीबी संग्रह पर चलने वाला लूप मेननेट पैमाने पर उत्पाद सुविधा नहीं है।
## एल्गोरिथम सत्य
`getListings` पहले `getTokenSupply()` को `totalSupply` तक पढ़ता है, फिर `maxToken` से 1 तक उतरता है। प्रत्येक टोकन के लिए बेचे गए/खुले/लिस्टिंग चेक होते हैं और यदि आवश्यक हो तो `getListingInfo` होते हैं। यहां तक कि खाली टोकन श्रेणियां भी आरपीसी को जला देती हैं।```text
Cost model (approx)
cost ≈ totalSupply × calls_per_token × polls_per_minute
UI cards may add metadata/IPFS reads on top
```## 30 सेकंड का पोल और पुराना यूआई
रिजर्व कंटेनर माउंट पर `getListings` चलता है और `setInterval(..., 30000)` के माध्यम से पुनरावृत्त होता है। प्रोफ़ाइल के समान, यह ~30 के दशक में संपत्तियों को स्कैन करता है; दर्शक और कार्ड 10-15 के अंतराल का उपयोग करते हैं। जब उपयोगकर्ता खरीदारी देखता है, तो पोल के लिए ग्रिड पुराना रह सकता है - या दर-सीमा के कारण खाली रह सकता है।
## इन्फ्रा विफलता मोड
संपूर्ण स्कैन रीड नोड (रिंकबी इन्फुरा HTTP/WSS) पर जाता है। जब कोटा पूरा हो जाता है, तो आंशिक प्रयास/पकड़ पथ `wasSold=false` या खाली स्ट्रिंग लौटा सकते हैं; ग्रिड चुपचाप झूठा हो जाता है. रेपो में कुंजियाँ दफनाने से समस्या बढ़ जाती है - दस्तावेज़ में प्रोजेक्ट आईडी कभी नहीं लिखी जाती है; env + मार्ग सीमा 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
```## ओपनसी अंतर
OpenSea क्लाइंट प्रत्येक विज़िटर के ब्राउज़र से संपूर्ण आपूर्ति को स्कैन नहीं करता है; इंडेक्स + एपीआई है। बेअर क्रिप्टो आईए में उत्पाद संदर्भ की प्रतिलिपि बनाता है, खोज बुनियादी ढांचे की नहीं - यह एक जानबूझकर (या कम से कम पूर्वदृष्टिकोण) व्यापार-बंद है।
## इस एपिसोड में सबसे भ्रमित करने वाला मैचअप```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
आपके अपने सिस्टम की चेकलिस्ट
getListingsराउंड में प्रति टोकन कितने eth_calls?- जब आपूर्ति 10× बढ़ जाती है तो प्रति मतदान लागत क्या होगी?
- दर-सीमा होने पर यूआई किस खाली/गलत स्थिति में आता है?
- खरीद के बाद ग्रिल कितने सेकंड तक बासी रह सकती है?
- कौन सी घटनाओं को अनुक्रमित किया गया है और स्कैनिंग समाप्त कर दी गई है?
इस अनुभाग से याद रखने योग्य बातें
- लिस्टिंग खोज कुल आपूर्ति स्कैन है; यह OpenSea सूचकांक नहीं है.
- N×RPC × 30s पोल इन्फ्यूरा कोटा और पुराने UI को अपरिहार्य बनाता है।
- एडीआर: प्रोटोटाइप स्वीकृति, इंडेक्सर ट्रैकिंग - चुपचाप स्केल नहीं करता है।
प्रत्येक टोकनआईडी के लिए पूछना, बाज़ार के लिए नहीं; यह एक लोड टेस्ट है.
FAQ
Frequently asked questions
टोटल सप्लाई स्कैन क्या है?
आपूर्ति ऊपरी सीमा से टोकनआईडी को पीछे की ओर लूप करके लिस्टिंग सेट की खोज करना।
एन×आरपीसी क्या है?
प्रत्येक टोकन के लिए एकाधिक eth_calls; कोटा खपत मतदान से कई गुना बढ़ गई।
क्या "कुल आपूर्ति स्कैन = उत्पादन खोज रणनीति" सही है?
प्रोटोटाइप; अनुक्रमणिका अनुपस्थिति का लक्षण
यह अनुभाग क्या ठीक करता है?
यह खंड ओपनसी जैसी ग्रिड के पीछे खोज एल्गोरिदम को तोड़ता है और यह एक एडीआर विषय क्यों है। बेयर क्रिप्टो मार्केटप्लेस क्लाइंट को `totalSupply()` + टोकनआईडी लूप के साथ खुली लिस्टिंग मिलती है, किसी इवेंट इंडेक्स या सबग्राफ के साथ नहीं। प्रत्येक चरण पर अतिरिक्त कॉल की जाती हैं, जैसे `wasNftSold`, `isListingOpenByTokenId`, और `getLastListingByTokenId`। जैसे-जैसे आपूर्ति बढ़ती है, लागत रैखिक रूप से बढ़ती है - वास्तव में, बदतर; रिज़र्व कंटेनर इसे हर ~30 सेकंड में दोहराता है।
इंजीनियरिंग सिद्धांत सीखे गए
- खोज लागत आपूर्ति के लिए दृश्यमान होनी चाहिए; यह कोई प्रच्छन्न O(N) उत्पाद नहीं है।
- मतदान अंतराल SLA नहीं है; इसे बासी और कोटा को मिलाकर डिजाइन किया गया है।
- आरपीसी त्रुटियों को निगलने से गलत लिस्टिंग एक सुविधा बन जाती है।
जारी रखें पढ़ रहे हैं
जारी रखें पढ़ रहे हैं
श्रृंखला में अगला
रिंकीबी टेस्टनेट और मेननेट क्लाइंट पृथक्करण
कलेक्शन मिंट क्लाइंट मेननेट पर सख्त हो जाते हैं जबकि मार्केटप्लेस एसपीए रिंकीबी इन्फुरा पर लॉक हो जाता है। साझा वेब3/आईपीएफएस उपयोगिताओं के साथ…
श्रृंखला में अगला
ओपनसी जैसी सूचना वास्तुकला
बेयर क्रिप्टो मार्केटप्लेस एसपीए एक सूचना आर्किटेक्चर स्थापित करता है जो उत्पाद संदर्भों के रूप में ओपनसी को स्पष्ट रूप से कॉपी करता है: होम, मार्केटप्लेस,…
संबंधित आलेख
बेयरएनएफटीरिजर्व: एस्क्रो, रैंडमबाय और कमजोर आरएनजी
स्वामी-केवल नई सूची बनाएँ, खरीदें और यादृच्छिक खरीदें - keccak256(revealNonce, ब्लॉक.कठिनाई, संदेश.प्रेषक) % 3.…