Перейти до основного вмісту

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.
  • HTTP(S) URL -- підключення через кінцеву точку JSON-RPC (наприклад, https://mainnet.infura.io/v3/YOUR_KEY).
  • URL-адреса WebSocket -- підключення через кінцеву точку RPC WebSocket (наприклад, wss://mainnet.infura.io/ws/v3/YOUR_KEY).

методи

resolve({ name, abortSignal? })

Шукає назву .bso і повертає відповідний відкритий ключ. Додатковий AbortSignal можна передати для скасування тривалих запитів.

canResolve({ name })

Повертає логічне значення, яке вказує, чи здатний розпізнавач обробити вказане ім’я. Використовуйте це, щоб перевірити підтримку перед спробою повного вирішення.

destroy()

Розриває резолвер, закриваючи підключення до бази даних і звільняючи ресурси. Викличте це, коли резольвер більше не потрібен.

Кешування

Вирішені імена автоматично кешуються, щоб зменшити надлишкові пошуки в мережі. Сервер кешування вибирається на основі середовища виконання:

Навколишнє середовищеСерверПримітки
Node.jsSQLiteЗберігається в dataPath. Використовує режим WAL для одночасного доступу.
БраузерIndexedDBВикористовує власні транзакції IndexedDB.
ЗапаснийУ пам’яті MapВикористовується, коли ні SQLite, ні IndexedDB недоступні.

Усі записи кешу мають одногодинний TTL і автоматично видаляються після закінчення терміну дії.

Інтеграція з pkc-js

Резолвер можна підключити безпосередньо до pkc-js за допомогою параметра nameResolvers, увімкнувши прозоре визначення імен .bso під час пошуку ключів:

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

Паралелізм

Резолвер розроблений таким чином, щоб бути безпечним при одночасному використанні:

  • Єдиний спільний клієнт viem дозволяє уникнути зайвих з’єднань.
  • SQLite працює в режимі WAL (Write-Ahead Logging), що дозволяє одночасне читання без блокування.
  • Кешування веб-переглядача покладається на власні транзакції IndexedDB для ізоляції.

Точки входу на платформу

Пакет постачає окремі точки входу для Node.js і збірок браузера. Збірники, які підтримують поле exports у package.json, автоматично виберуть правильний.