Ana içeriğe atla

BSO Resolver

BSO Çözümleyicisi, ENS'de depolanan Bitsocial TXT kayıtlarını okuyarak .bso alan adlarını ilgili genel anahtarlara çevirir. Paylaşılan bir viem istemcisi, kalıcı önbellekleme sağlar ve hem Node.js hem de tarayıcı ortamlarında çalışır.

Kurulum

npm install @bitsocial/bso-resolver

Çözümleyici Oluşturma

Yapıcıya bir yapılandırma nesnesi ileterek çözümleyiciyi başlatın:

const resolver = new BsoResolver({ key, provider, dataPath });
ParametreGerekliAçıklama
keyEvetÇözümleyici örneğinin tanımlayıcısı.
providerEvetTaşıma yapılandırması (aşağıya bakın).
dataPathNoSQLite önbellek dosyası dizini (yalnızca Node.js).

Sağlayıcı Seçenekleri

provider parametresi üç biçimi kabul eder:

  • "viem" -- Viem tarafından sağlanan varsayılan toplu taşımayı kullanır.
  • HTTP(S) URL'si -- Bir JSON-RPC uç noktası (ör. https://mainnet.infura.io/v3/YOUR_KEY) aracılığıyla bağlanır.
  • WebSocket URL -- Bir WebSocket RPC uç noktası (ör. wss://mainnet.infura.io/ws/v3/YOUR_KEY) aracılığıyla bağlanır.

Yöntemler

resolve({ name, abortSignal? })

Bir .bso adını arar ve ilişkili genel anahtarı döndürür. Uzun süredir devam eden istekleri iptal etmek için isteğe bağlı bir AbortSignal iletilebilir.

canResolve({ name })

Çözümleyicinin verilen adı işleyip işleyemediğini gösteren bir boole değeri döndürür. Tam çözümlemeyi denemeden önce desteği kontrol etmek için bunu kullanın.

destroy()

Çözümleyiciyi yıkar, veritabanı bağlantılarını kapatır ve kaynakları serbest bırakır. Çözümleyiciye artık ihtiyaç duyulmadığında bunu arayın.

Önbelleğe alma

Gereksiz ağ aramalarını azaltmak için çözümlenen adlar otomatik olarak önbelleğe alınır. Önbelleğe alma arka ucu, çalışma zamanı ortamına göre seçilir:

ÇevreArka uçNotlar
Node.jsSQLitedataPath'da depolanır. Eşzamanlı erişim için WAL modunu kullanır.
TarayıcıİndekslenmişDBYerel IndexedDB işlemlerini kullanır.
Geri dönüşBellek içi MapSQLite veya IndexedDB mevcut olmadığında kullanılır.

Tüm önbellek girişlerinin bir saatlik TTL'si vardır ve süre dolduktan sonra otomatik olarak çıkarılır.

pkc-js ile entegrasyon

Çözümleyici, nameResolvers seçeneği aracılığıyla doğrudan pkc-js'ye takılabilir ve anahtar aramalar sırasında şeffaf .bso ad çözümlemesini etkinleştirir:

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

Eşzamanlılık

Çözümleyici eşzamanlı kullanımda güvenli olacak şekilde tasarlanmıştır:

  • Tek bir paylaşılan viem istemcisi, gereksiz bağlantılardan kaçınır.
  • SQLite, WAL (Ön Yazma Günlüğü) modunda çalışır ve engelleme olmadan eşzamanlı okumalara izin verir.
  • Tarayıcı önbelleğe alma, izolasyon için yerel IndexedDB işlemlerine dayanır.

Platform Giriş Noktaları

Paket, Node.js ve tarayıcı yapıları için ayrı giriş noktaları sunar. package.json'daki exports alanını destekleyen paketleyiciler otomatik olarak doğru olanı seçecektir.