Lewati ke konten utama

BSO Resolver

BSO Resolver menerjemahkan nama domain .bso menjadi kunci publik yang sesuai dengan membaca data TXT Bitsocial yang disimpan di ENS. Ini menyediakan klien viem bersama, cache persisten, dan berfungsi di lingkungan Node.js dan browser.

Instalasi

npm install @bitsocial/bso-resolver

Membuat Penyelesai

Buat instance penyelesai dengan meneruskan objek konfigurasi ke konstruktor:

const resolver = new BsoResolver({ key, provider, dataPath });
ParameterDiperlukanKeterangan
keyYaPengidentifikasi untuk instans penyelesai.
providerYaKonfigurasi transportasi (lihat di bawah).
dataPathTIDAKDirektori untuk file cache SQLite (khusus Node.js).

Opsi Penyedia

Parameter provider menerima tiga format:

  • "viem" -- Menggunakan transportasi umum default yang disediakan oleh viem.
  • URL HTTP(S) -- Menyambungkan melalui titik akhir JSON-RPC (misalnya, https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL -- Menyambungkan melalui titik akhir RPC WebSocket (misalnya, wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Metode

resolve({ name, abortSignal? })

Mencari nama .bso dan mengembalikan kunci publik terkait. AbortSignal opsional dapat diteruskan untuk membatalkan permintaan yang sudah berjalan lama.

canResolve({ name })

Mengembalikan boolean yang menunjukkan apakah penyelesai mampu menangani nama yang diberikan. Gunakan ini untuk memeriksa dukungan sebelum mencoba resolusi penuh.

destroy()

Meruntuhkan penyelesai, menutup koneksi database dan melepaskan sumber daya. Panggil ini ketika penyelesai tidak lagi diperlukan.

cache

Nama yang terselesaikan disimpan dalam cache secara otomatis untuk mengurangi pencarian jaringan yang berlebihan. Backend caching dipilih berdasarkan lingkungan runtime:

LingkunganBagian belakangCatatan
Node.jsSQLiteDisimpan di dataPath. Menggunakan mode WAL untuk akses bersamaan.
PerambanDB yang diindeksMenggunakan transaksi IndexedDB asli.
PenggantianDalam memori MapDigunakan ketika SQLite atau IndexedDB tidak tersedia.

Semua entri cache memiliki TTL satu jam dan secara otomatis dikeluarkan setelah habis masa berlakunya.

Integrasi dengan pkc-js

Resolver dapat dipasang langsung ke pkc-js melalui opsi nameResolvers, memungkinkan resolusi nama .bso yang transparan selama pencarian kunci:

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

Konkurensi

Resolver dirancang agar aman jika digunakan secara bersamaan:

  • Satu klien viem bersama menghindari koneksi yang berlebihan.
  • SQLite beroperasi dalam mode WAL (Write-Ahead Logging), memungkinkan pembacaan bersamaan tanpa pemblokiran.
  • Caching browser bergantung pada transaksi IndexedDB asli untuk isolasi.

Titik Masuk Platform

Paket ini mengirimkan titik masuk terpisah untuk Node.js dan versi browser. Bundler yang mendukung bidang exports di package.json akan secara otomatis memilih yang benar.