Ga naar hoofdinhoud

BSO Resolver

De BSO Resolver vertaalt .bso-domeinnamen naar hun overeenkomstige openbare sleutels door Bitsocial TXT-records te lezen die zijn opgeslagen op ENS. Het biedt een gedeelde viem-client, permanente caching en werkt in zowel Node.js- als browseromgevingen.

Installatie

npm install @bitsocial/bso-resolver

Een Resolver maken

Instantileer de oplosser door een configuratieobject door te geven aan de constructor:

const resolver = new BsoResolver({ key, provider, dataPath });
ParameterVereistDescription
keyYesIdentifier for the resolver instance.
providerYesTransport configuration (see below).
dataPathNoDirectory for the SQLite cache file (Node.js only).

Provider Opties

De parameter provider accepteert drie formaten:

  • "viem" -- Gebruikt het standaard openbaar vervoer geleverd door viem.
  • HTTP(S) URL -- Maakt verbinding via een JSON-RPC-eindpunt (bijv. https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket-URL -- Maakt verbinding via een WebSocket RPC-eindpunt (bijvoorbeeld wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Methoden

resolve({ name, abortSignal? })

Zoekt een .bso-naam op en retourneert de bijbehorende openbare sleutel om langlopende verzoeken te annuleren.

canResolve({ name })

Retourneert een boolean die aangeeft of de oplosser de opgegeven naam kan verwerken. Gebruik dit om de ondersteuning te controleren voordat een volledige oplossing wordt geprobeerd.

destroy()

Verbreekt de oplosser, sluit databaseverbindingen en geeft bronnen vrij wanneer de oplosser niet langer nodig is.

Caching

Opgeloste namen worden automatisch in de cache opgeslagen om redundante netwerkzoekopdrachten te verminderen backend is chosen based on the runtime environment:

EnvironmentBackendNotes
Node.jsSQLiteStored at dataPath. Uses WAL mode for concurrent access.
BrowserIndexedDBUses native IndexedDB transactions.
FallbackIn-memory Map. Wordt gebruikt als SQLite noch IndexedDB beschikbaar is

Alle cache-items hebben een één-uur TTL en worden na het verlopen automatisch verwijderd.

Integratie met pkc-js

De oplosser kan rechtstreeks in pkc-js worden aangesloten via de optie nameResolvers, waardoor transparant wordt mogelijk gemaakt. .bso naamresolutie tijdens sleutelzoekopdrachten:

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

Gelijktijdigheid

De oplosser is ontworpen om veilig te zijn bij gelijktijdig gebruik:

  • Een enkele gedeelde viem-client vermijdt redundante verbindingen.
  • SQLite werkt in WAL-modus (Write-Ahead Logging), waardoor gelijktijdige leesbewerkingen mogelijk zijn zonder te blokkeren.
  • Browsercaching is afhankelijk van op native IndexedDB-transacties voor isolatie.

Platformingangspunten

Het pakket verzendt afzonderlijke ingangspunten voor Node.js en browserbuilds die het veld exports in package.json ondersteunen, zullen automatisch de juiste selecteren.