پرش به مطلب اصلی

BSO Resolver

BSO Resolver نام دامنه .bso را با خواندن رکوردهای Bitsocial TXT ذخیره شده در ENS به کلیدهای عمومی مربوطه ترجمه می کند. این یک سرویس گیرنده viem مشترک، حافظه پنهان دائمی را ارائه می دهد و در هر دو محیط Node.js و مرورگر کار می کند.

نصب و راه اندازی

npm install @bitsocial/bso-resolver

ایجاد یک Resolver

حل‌کننده را با ارسال یک شیء پیکربندی به سازنده، نمونه‌سازی کنید:

const resolver = new BsoResolver({ key, provider, dataPath });
پارامترمورد نیازتوضیحات
keyبلهشناسه برای نمونه حل کننده.
providerبلهپیکربندی حمل و نقل (به زیر مراجعه کنید).
dataPathنهدایرکتوری برای فایل کش SQLite (فقط Node.js).

گزینه های ارائه دهنده

پارامتر provider سه فرمت را می پذیرد:

  • "viem" -- از حمل و نقل عمومی پیش فرض ارائه شده توسط viem استفاده می کند.
  • ** URL HTTP(S) ** -- از طریق یک نقطه پایانی JSON-RPC (به عنوان مثال، https://mainnet.infura.io/v3/YOUR_KEY) متصل می شود.
  • ** URL WebSocket ** -- از طریق یک نقطه پایانی WebSocket RPC (به عنوان مثال، wss://mainnet.infura.io/ws/v3/YOUR_KEY) متصل می شود.

روش ها

resolve({ name, abortSignal? })

یک نام .bso را جستجو می کند و کلید عمومی مرتبط را برمی گرداند. یک AbortSignal اختیاری می تواند برای لغو درخواست های طولانی مدت ارسال شود.

canResolve({ name })

یک بولی را برمی‌گرداند که نشان می‌دهد آیا حل‌کننده قادر به مدیریت نام داده شده است یا خیر. از این برای بررسی پشتیبانی قبل از تلاش برای وضوح کامل استفاده کنید.

destroy()

حل‌کننده را خراب می‌کند، اتصالات پایگاه داده را می‌بندد و منابع را آزاد می‌کند. زمانی که دیگر نیازی به حل کننده نیست، این را صدا بزنید.

ذخیره سازی

نام های حل شده به صورت خودکار ذخیره می شوند تا جستجوهای اضافی شبکه کاهش یابد. پشتیبان کش بر اساس محیط زمان اجرا انتخاب می شود:

محیط زیستBackendیادداشت ها
Node.jsSQLiteذخیره شده در 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 (Write-Ahead Logging) کار می کند و امکان خواندن همزمان بدون مسدود کردن را فراهم می کند.
  • کش مرورگر برای جداسازی به تراکنش های IndexedDB بومی متکی است.

نقاط ورود پلت فرم

این بسته نقاط ورودی جداگانه ای را برای Node.js و ساخت های مرورگر ارسال می کند. باندلرهایی که از فیلد exports در package.json پشتیبانی می کنند، به طور خودکار مورد صحیح را انتخاب می کنند.