BSO Resolver
बीएसओ रिज़ॉल्वर ENS पर संग्रहीत बिटसोशल TXT रिकॉर्ड को पढ़कर .bso डोमेन नामों को उनकी संबंधित सार्वजनिक कुंजी में अनुवादित करता है। यह एक साझा viem क्लाइंट, लगातार कैशिंग प्रदान करता है, और Node.js और ब्राउज़र वातावरण दोनों में काम करता है।
- गिटहब: bitsocialnet/bso-resolver
- लाइसेंस: केवल GPL-2.0
स्थापना
npm install @bitsocial/bso-resolver
एक रिज़ॉल्वर बनाना
कंस्ट्रक्टर को कॉन्फ़िगरेशन ऑब्जेक्ट पास करके रिज़ॉल्वर को इंस्टेंट करें:
const resolver = new BsoResolver({ key, provider, dataPath });
| पैरामीटर | आवश्यक | विवरण |
|---|---|---|
key | हाँ | रिज़ॉल्वर उदाहरण के लिए पहचानकर्ता. |
provider | हाँ | परिवहन विन्यास (नीचे देखें)। |
dataPath | नहीं | SQLite कैश फ़ाइल के लिए निर्देशिका (केवल Node.js)। |
प्रदाता विकल्प
provider पैरामीटर तीन प्रारूप स्वीकार करता है:
"viem"-- viem द्वारा प्रदान किए गए डिफ़ॉल्ट सार्वजनिक परिवहन का उपयोग करता है।- HTTP(S) URL -- JSON-RPC एंडपॉइंट (उदाहरण के लिए,
https://mainnet.infura.io/v3/YOUR_KEY) के माध्यम से कनेक्ट होता है। - वेबसॉकेट यूआरएल -- एक वेबसॉकेट आरपीसी एंडपॉइंट (उदाहरण के लिए,
wss://mainnet.infura.io/ws/v3/YOUR_KEY) के माध्यम से कनेक्ट होता है।
तरीके
resolve({ name, abortSignal? })
एक .bso नाम खोजता है और संबंधित सार्वजनिक कुंजी लौटाता है। लंबे समय से चल रहे अनुरोधों को रद्द करने के लिए एक वैकल्पिक AbortSignal पारित किया जा सकता है।
canResolve({ name })
एक बूलियन लौटाता है जो दर्शाता है कि रिज़ॉल्वर दिए गए नाम को संभालने में सक्षम है या नहीं। पूर्ण समाधान का प्रयास करने से पहले समर्थन की जांच करने के लिए इसका उपयोग करें।
destroy()
रिज़ॉल्वर को नष्ट कर देता है, डेटाबेस कनेक्शन बंद कर देता है और संसाधन जारी कर देता है। इसे तब कॉल करें जब रिज़ॉल्वर की आवश्यकता न रह जाए।
कैशिंग
अनावश्यक नेटवर्क लुकअप को कम करने के लिए हल किए गए नाम स्वचालित रूप से कैश किए जाते हैं। कैशिंग बैकएंड को रनटाइम वातावरण के आधार पर चुना जाता है:
| पर्यावरण | बैकएंड | नोट्स |
|---|---|---|
| नोड.जेएस | SQLite | dataPath पर संग्रहीत। समवर्ती पहुंच के लिए वाल मोड का उपयोग करता है। |
| ब्राउज़र | IndexedDB | देशी IndexedDB लेनदेन का उपयोग करता है। |
| फ़ॉलबैक | इन-मेमोरी Map | इसका उपयोग तब किया जाता है जब न तो SQLite और न ही IndexedDB उपलब्ध होता है। |
सभी कैश प्रविष्टियों में एक घंटे का टीटीएल होता है और समाप्ति के बाद स्वचालित रूप से बाहर निकाल दिया जाता है।
पीकेसी-जेएस के साथ एकीकरण
रिज़ॉल्वर को nameResolvers विकल्प के माध्यम से सीधे pkc-js में प्लग किया जा सकता है, जिससे कुंजी लुकअप के दौरान पारदर्शी .bso नाम रिज़ॉल्यूशन सक्षम हो जाता है:
const pkc = new Pkc({
nameResolvers: [resolver],
// ...other options
});
समवर्ती
रिज़ॉल्वर को समवर्ती उपयोग के तहत सुरक्षित बनाने के लिए डिज़ाइन किया गया है:
- एक एकल साझा विएम क्लाइंट अनावश्यक कनेक्शन से बचता है।
- SQLite WAL (राइट-अहेड लॉगिंग) मोड में काम करता है, जिससे अवरोधन के बिना समवर्ती पढ़ने की अनुमति मिलती है।
- ब्राउज़र कैशिंग अलगाव के लिए मूल IndexedDB लेनदेन पर निर्भर करता है।
प्लेटफार्म प्रवेश बिंदु
पैकेज Node.js और ब्राउज़र बिल्ड के लिए अलग-अलग प्रवेश बिंदु प्रदान करता है। package.json में exports फ़ील्ड का समर्थन करने वाले बंडलर स्वचालित रूप से सही का चयन करेंगे।