Hopp over til hovedinnhold

BSO Resolver

BSO Resolver oversetter .bso domenenavn til deres tilsvarende offentlige nøkler ved å lese Bitsocial TXT-poster lagret på ENS. Det gir en delt viem-klient, vedvarende caching og fungerer i både Node.js og nettlesermiljøer.

Installasjon

npm install @bitsocial/bso-resolver

Opprette en resolver

Instantier resolveren ved å sende et konfigurasjonsobjekt til konstruktøren:

const resolver = new BsoResolver({ key, provider, dataPath });
ParameterPåkrevdBeskrivelse
keyJaIdentifikator for resolver-forekomsten.
providerJaTransportkonfigurasjon (se nedenfor).
dataPathNeiKatalog for SQLite-bufferfilen (kun Node.js).

Leverandøralternativer

provider-parameteren godtar tre formater:

  • "viem" -- Bruker standard offentlig transport levert av viem.
  • HTTP(S) URL -- Kobler til via et JSON-RPC-endepunkt (f.eks. https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL -- Kobler til via et WebSocket RPC-endepunkt (f.eks. wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Metoder

resolve({ name, abortSignal? })

Slår opp et .bso-navn og returnerer den tilhørende offentlige nøkkelen. En valgfri AbortSignal kan sendes for å kansellere langvarige forespørsler.

canResolve({ name })

Returnerer en boolsk verdi som indikerer om resolveren er i stand til å håndtere det gitte navnet. Bruk denne for å sjekke støtten før du prøver en full oppløsning.

destroy()

river ned resolveren, stenger databaseforbindelser og frigjør ressurser. Kall dette når resolveren ikke lenger er nødvendig.

Buffer

Løste navn bufres automatisk for å redusere redundante nettverksoppslag. Buffer-backend er valgt basert på kjøretidsmiljøet:

MiljøBackendMerknader
Node.jsSQLiteLagret på dataPath. Bruker WAL-modus for samtidig tilgang.
NettleserIndeksertDBBruker native IndexedDB-transaksjoner.
TilbakeslagI minnet MapBrukes når verken SQLite eller IndexedDB er tilgjengelig.

Alle cache-oppføringer har en en-times TTL og blir automatisk kastet ut etter utløp.

Integrasjon med pkc-js

Resolveren kan kobles direkte til pkc-js gjennom alternativet nameResolvers, noe som muliggjør transparent .bso navneoppløsning under nøkkeloppslag:

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

Samtidighet

Resolveren er designet for å være sikker ved samtidig bruk:

  • En enkelt delt viem-klient unngår redundante tilkoblinger.
  • SQLite opererer i WAL (Write-Ahead Logging)-modus, og tillater samtidig lesing uten blokkering.
  • Nettleserbufring er avhengig av native IndexedDB-transaksjoner for isolasjon.

Plattforminngangspunkter

Pakken sender separate inngangspunkter for Node.js og nettleserbygg. Forhandlere som støtter exports-feltet i package.json vil automatisk velge den riktige.