Hop til hovedindhold

BSO Resolver

BSO-resolveren oversætter .bso-domænenavne til deres tilsvarende offentlige nøgler ved at læse Bitsocial TXT-poster gemt på ENS. Det giver en delt viem-klient, vedvarende caching og fungerer i både Node.js og browsermiljøer.

Installation

npm install @bitsocial/bso-resolver

Oprettelse af en resolver

Instantiér resolveren ved at sende et konfigurationsobjekt til konstruktøren:

const resolver = new BsoResolver({ key, provider, dataPath });
ParameterPåkrævetBeskrivelse
keyJaIdentifikator for resolverforekomsten.
providerJaTransportkonfiguration (se nedenfor).
dataPathNejKatalog til SQLite-cachefilen (kun Node.js).

Udbyder muligheder

Parameteren provider accepterer tre formater:

  • "viem" -- Bruger standard offentlig transport leveret af viem.
  • HTTP(S) URL -- Opretter forbindelse via et JSON-RPC-slutpunkt (f.eks. https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL -- Opretter forbindelse via et WebSocket RPC-slutpunkt (f.eks. wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Metoder

resolve({ name, abortSignal? })

Slår et .bso navn op og returnerer den tilknyttede offentlige nøgle. En valgfri AbortSignal kan videregives for at annullere langvarige anmodninger.

canResolve({ name })

Returnerer en boolesk værdi, der angiver, om resolveren er i stand til at håndtere det givne navn. Brug dette til at kontrollere support, før du forsøger en fuld opløsning.

destroy()

Nedbryder resolveren, lukker databaseforbindelser og frigiver ressourcer. Kald dette, når resolveren ikke længere er nødvendig.

Caching

Løste navne cachelagres automatisk for at reducere redundante netværksopslag. Caching-backend er valgt baseret på runtime-miljøet:

MiljøBackendNoter
Node.jsSQLiteGemt på dataPath. Bruger WAL-tilstand til samtidig adgang.
BrowserIndekseretDBBruger native IndexedDB-transaktioner.
FallbackIn-memory MapBruges, når hverken SQLite eller IndexedDB er tilgængelig.

Alle cacheposter har en en-times TTL og bliver automatisk smidt ud efter udløb.

Integration med pkc-js

Resolveren kan tilsluttes direkte til pkc-js gennem nameResolvers-indstillingen, hvilket muliggør gennemsigtig .bso-navneopløsning under nøgleopslag:

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

Samtidighed

Resolveren er designet til at være sikker under samtidig brug:

  • En enkelt delt viem-klient undgår redundante forbindelser.
  • SQLite fungerer i WAL-tilstand (Write-Ahead Logging), hvilket tillader samtidige læsninger uden blokering.
  • Browsercaching er afhængig af native IndexedDB-transaktioner til isolering.

Platformens indgangspunkter

Pakken sender separate indgangspunkter for Node.js og browser builds. Bundlere, der understøtter feltet exports i package.json, vil automatisk vælge den korrekte.