Přeskočit na hlavní obsah

BSO Resolver

BSO Resolver překládá názvy domén .bso na jejich odpovídající veřejné klíče čtením záznamů Bitsocial TXT uložených na ENS. Poskytuje sdíleného klienta viem, trvalé ukládání do mezipaměti a funguje v prostředí Node.js i prohlížeče.

Instalace

npm install @bitsocial/bso-resolver

Vytvoření Resolveru

Vytvořte instanci resolveru předáním konfiguračního objektu konstruktoru:

const resolver = new BsoResolver({ key, provider, dataPath });
ParametrPovinnéPopis
keyAnoIdentifikátor instance překladače.
providerAnoTransportní konfigurace (viz níže).
dataPathNeAdresář pro soubor mezipaměti SQLite (pouze Node.js).

Možnosti poskytovatele

Parametr provider přijímá tři formáty:

  • "viem" -- Použije výchozí veřejnou dopravu, kterou poskytuje viem.
  • HTTP(S) URL – Připojuje se prostřednictvím koncového bodu JSON-RPC (např. https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL – Připojuje se prostřednictvím koncového bodu WebSocket RPC (např. wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Metody

resolve({ name, abortSignal? })

Vyhledá název .bso a vrátí přidružený veřejný klíč. Pro zrušení dlouhotrvajících požadavků lze předat volitelný AbortSignal.

canResolve({ name })

Vrátí boolean označující, zda je resolver schopen zpracovat dané jméno. Použijte toto ke kontrole podpory před pokusem o plné rozlišení.

destroy()

Zničí resolver, uzavře databázová připojení a uvolní zdroje. Zavolejte, když překladač již není potřeba.

Ukládání do mezipaměti

Vyřešená jména se automaticky ukládají do mezipaměti, aby se omezilo nadbytečné vyhledávání v síti. Backend pro ukládání do mezipaměti je vybrán na základě běhového prostředí:

Životní prostředíBackendPoznámky
Node.jsSQLiteUloženo na dataPath. Pro souběžný přístup používá režim WAL.
ProhlížečIndexovanáDBPoužívá nativní transakce IndexedDB.
ZáložníV paměti MapPoužívá se, když není k dispozici SQLite ani IndexedDB.

Všechny položky mezipaměti mají jednohodinovou TTL a po vypršení platnosti jsou automaticky vymazány.

Integrace s pkc-js

Překladač lze zapojit přímo do pkc-js prostřednictvím možnosti nameResolvers, která umožňuje transparentní rozlišení názvů .bso během vyhledávání klíčů:

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

Souběžnost

Resolver je navržen tak, aby byl bezpečný při současném použití:

  • Jediný sdílený klient viem zabraňuje redundantním připojením.
  • SQLite pracuje v režimu WAL (Write-Ahead Logging), který umožňuje souběžné čtení bez blokování.
  • Ukládání do mezipaměti prohlížeče se při izolaci spoléhá na nativní transakce IndexedDB.

Vstupní body platformy

Balíček dodává samostatné vstupní body pro Node.js a sestavení prohlížeče. Bundleři, kteří podporují pole exports v package.json, automaticky vyberou ten správný.