مرکزی مواد پر جائیں۔

BSO Resolver

BSO Resolver .bso ڈومین ناموں کو ENS پر ذخیرہ شدہ Bitsocial TXT ریکارڈز کو پڑھ کر ان کی متعلقہ عوامی کلیدوں میں ترجمہ کرتا ہے۔ یہ مشترکہ viem کلائنٹ فراہم کرتا ہے، مستقل کیشنگ، اور Node.js اور براؤزر دونوں ماحول میں کام کرتا ہے۔

تنصیب

npm install @bitsocial/bso-resolver

حل کرنے والا بنانا

کنسٹرکٹر کو کنفیگریشن آبجیکٹ بھیج کر حل کرنے والے کو انسٹینٹیٹ کریں:

const resolver = new BsoResolver({ key, provider, dataPath });
پیرامیٹرمطلوبہتفصیل
keyجی ہاںحل کرنے والے مثال کے لیے شناخت کنندہ۔
providerجی ہاںنقل و حمل کی ترتیب (نیچے ملاحظہ کریں)۔
dataPathنہیںSQLite کیش فائل کے لیے ڈائریکٹری (صرف Node.js)۔

فراہم کنندہ کے اختیارات

provider پیرامیٹر تین فارمیٹس کو قبول کرتا ہے:

  • "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.jsSQLitedataPath پر اسٹور کیا گیا۔ کنکرنٹ رسائی کے لیے WAL موڈ استعمال کرتا ہے۔
براؤزرIndexedDBمقامی IndexedDB لین دین کا استعمال کرتا ہے۔
فال بیکان میموری Mapاستعمال کیا جاتا ہے جب نہ تو SQLite اور نہ ہی IndexedDB دستیاب ہو۔

تمام کیش اندراجات میں ایک گھنٹے کا TTL ہوتا ہے اور میعاد ختم ہونے کے بعد خود بخود نکال دیا جاتا ہے۔

pkc-js کے ساتھ انضمام

حل کرنے والے کو nameResolvers آپشن کے ذریعے براہ راست pkc-js میں پلگ کیا جا سکتا ہے، کلیدی تلاش کے دوران شفاف .bso نام کے حل کو فعال کرتے ہوئے:

const pkc = new Pkc({
nameResolvers: [resolver],
// ...other options
});

ہم آہنگی

حل کرنے والے کو ہم آہنگی کے استعمال کے تحت محفوظ رہنے کے لیے ڈیزائن کیا گیا ہے:

  • ایک واحد مشترکہ viem کلائنٹ بے کار کنکشن سے گریز کرتا ہے۔
  • SQLite WAL (لکھنے سے آگے لاگنگ) موڈ میں کام کرتا ہے، بلاک کیے بغیر سمورتی پڑھنے کی اجازت دیتا ہے۔
  • براؤزر کیچنگ تنہائی کے لیے مقامی IndexedDB لین دین پر انحصار کرتی ہے۔

پلیٹ فارم انٹری پوائنٹس

پیکیج Node.js اور براؤزر کی تعمیر کے لیے الگ الگ انٹری پوائنٹس بھیجتا ہے۔ بنڈلرز جو package.json میں exports فیلڈ کو سپورٹ کرتے ہیں وہ خود بخود صحیح کو منتخب کریں گے۔