إنتقل إلى المحتوى الرئيسي

BSO Resolver

يقوم BSO Resolver بترجمة أسماء النطاقات .bso إلى المفاتيح العامة المقابلة لها من خلال قراءة سجلات Bitsocial TXT المخزنة على ENS. فهو يوفر عميل viem مشتركًا، وتخزينًا مؤقتًا مستمرًا، ويعمل في كل من Node.js وبيئات المتصفح.

تثبيت

npm install @bitsocial/bso-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()

تمزيق وحدة الحل وإغلاق اتصالات قاعدة البيانات وتحرير الموارد. اتصل بهذا عندما لا تكون هناك حاجة إلى المحلل.

التخزين المؤقت

يتم تخزين الأسماء التي تم حلها مؤقتًا تلقائيًا لتقليل عمليات البحث المتكررة على الشبكة. يتم اختيار الواجهة الخلفية للتخزين المؤقت بناءً على بيئة التشغيل:

بيئةالخلفيةملحوظات
Node.jsسكليتيمخزنة في dataPath. يستخدم وضع WAL للوصول المتزامن.
المتصفحمفهرسةDBيستخدم معاملات IndexedDB الأصلية.
احتياطيفي الذاكرة Mapيُستخدم في حالة عدم توفر SQLite أو IndexedDB.

تحتوي جميع إدخالات ذاكرة التخزين المؤقت على مدة البقاء لمدة ساعة واحدة ويتم إخلاؤها تلقائيًا بعد انتهاء الصلاحية.

التكامل مع pkc-js

يمكن توصيل المحلل مباشرة بـ pkc-js من خلال الخيار nameResolvers، مما يتيح تحليل الاسم الشفاف .bso أثناء عمليات البحث عن المفاتيح:

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

التزامن

تم تصميم المحلل ليكون آمنًا في ظل الاستخدام المتزامن:

  • يتجنب عميل viem المشترك الواحد الاتصالات الزائدة عن الحاجة.
  • يعمل SQLite في وضع WAL (تسجيل الكتابة المسبق)، مما يسمح بالقراءة المتزامنة دون حظر.
  • يعتمد التخزين المؤقت للمتصفح على معاملات IndexedDB الأصلية للعزل.

نقاط دخول المنصة

تشحن الحزمة نقاط دخول منفصلة لإصدارات Node.js والمتصفح. ستقوم المجمعات التي تدعم الحقل exports في package.json بتحديد الحقل الصحيح تلقائيًا.