BSO Resolver
BSO Resolver .bso డొమైన్ పేర్లను ENSలో నిల్వ చేసిన Bitsocial TXT రికార్డులను చదవడం ద్వారా వాటి సంబంధిత పబ్లిక్ కీలలోకి అనువదిస్తుంది. ఇది భాగస్వామ్య viem క్లయింట్, నిరంతర కాషింగ్ మరియు Node.js మరియు బ్రౌజర్ పరిసరాలలో పని చేస్తుంది.
- GitHub: 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) ద్వారా కనెక్ట్ అవుతుంది. - WebSocket URL -- WebSocket RPC ముగింపు పాయింట్ (ఉదా.,
wss://mainnet.infura.io/ws/v3/YOUR_KEY) ద్వారా కనెక్ట్ అవుతుంది.
పద్ధతులు
resolve({ name, abortSignal? })
.bso పేరును వెతుకుతుంది మరియు అనుబంధిత పబ్లిక్ కీని అందిస్తుంది. దీర్ఘకాలిక అభ్యర్థనలను రద్దు చేయడానికి ఐచ్ఛిక AbortSignal పాస్ చేయవచ్చు.
canResolve({ name })
పరిష్కర్త ఇచ్చిన పేరును నిర్వహించగలదో లేదో సూచించే బూలియన్ను అందిస్తుంది. పూర్తి రిజల్యూషన్ని ప్రయత్నించే ముందు మద్దతును తనిఖీ చేయడానికి దీన్ని ఉపయోగించండి.
destroy()
పరిష్కరిణిని కూల్చివేస్తుంది, డేటాబేస్ కనెక్షన్లను మూసివేయడం మరియు వనరులను విడుదల చేయడం. పరిష్కర్త అవసరం లేనప్పుడు దీనికి కాల్ చేయండి.
కాషింగ్
అనవసరమైన నెట్వర్క్ శోధనలను తగ్గించడానికి పరిష్కరించబడిన పేర్లు స్వయంచాలకంగా కాష్ చేయబడతాయి. రన్టైమ్ ఎన్విరాన్మెంట్ ఆధారంగా కాషింగ్ బ్యాకెండ్ ఎంచుకోబడుతుంది:
| పర్యావరణం | నేపథ్యం | గమనికలు |
|---|---|---|
| Node.js | SQLite | dataPathలో నిల్వ చేయబడింది. ఉమ్మడి యాక్సెస్ కోసం WAL మోడ్ని ఉపయోగిస్తుంది. |
| బ్రౌజర్ | IndexedDB | స్థానిక IndexedDB లావాదేవీలను ఉపయోగిస్తుంది. |
| ఫాల్ బ్యాక్ | ఇన్-మెమరీ Map | SQLite లేదా IndexedDB అందుబాటులో లేనప్పుడు ఉపయోగించబడుతుంది. |
అన్ని కాష్ ఎంట్రీలు ఒక-గంట TTLని కలిగి ఉంటాయి మరియు గడువు ముగిసిన తర్వాత స్వయంచాలకంగా తొలగించబడతాయి.
pkc-jsతో ఏకీకరణ
nameResolvers ఎంపిక ద్వారా పరిష్కారాన్ని నేరుగా pkc-jsకి ప్లగ్ చేయవచ్చు, కీ లుకప్ల సమయంలో పారదర్శక .bso పేరు రిజల్యూషన్ను ప్రారంభిస్తుంది:
const pkc = new Pkc({
nameResolvers: [resolver],
// ...other options
});
కరెన్సీ
పరిష్కర్త ఏకకాల వినియోగంలో సురక్షితంగా ఉండేలా రూపొందించబడింది:
- ఒకే భాగస్వామ్య viem క్లయింట్ అనవసరమైన కనెక్షన్లను నివారిస్తుంది.
- SQLite WAL (వ్రైట్-ఎహెడ్ లాగింగ్) మోడ్లో పనిచేస్తుంది, బ్లాక్ చేయకుండా ఏకకాలిక రీడ్లను అనుమతిస్తుంది.
- బ్రౌజర్ కాషింగ్ ఐసోలేషన్ కోసం స్థానిక ఇండెక్స్డ్డిబి లావాదేవీలపై ఆధారపడుతుంది.
ప్లాట్ఫారమ్ ఎంట్రీ పాయింట్లు
ప్యాకేజీ Node.js మరియు బ్రౌజర్ బిల్డ్ల కోసం ప్రత్యేక ఎంట్రీ పాయింట్లను పంపుతుంది. package.jsonలో exports ఫీల్డ్కు మద్దతు ఇచ్చే బండ్లర్లు స్వయంచాలకంగా సరైనదాన్ని ఎంచుకుంటారు.