Hoppa till huvudinnehåll

BSO Resolver

BSO Resolver översätter .bso-domännamn till deras motsvarande publika nycklar genom att läsa Bitsocial TXT-poster lagrade på ENS. Den tillhandahåller en delad viem-klient, beständig cachning och fungerar i både Node.js och webbläsarmiljöer.

Installation

npm install @bitsocial/bso-resolver

Skapa en resolver

Instantiera resolvern genom att skicka ett konfigurationsobjekt till konstruktorn:

const resolver = new BsoResolver({ key, provider, dataPath });
ParameterKrävsBeskrivning
keyJaIdentifierare för resolver-instansen.
providerJaTransportkonfiguration (se nedan).
dataPathNejKatalog för SQLite-cachefilen (endast Node.js).

Leverantörsalternativ

Parametern provider accepterar tre format:

  • "viem" -- Använder standard kollektivtrafik som tillhandahålls av viem.
  • HTTP(S) URL -- Ansluter via en JSON-RPC-slutpunkt (t.ex. https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL -- Ansluter via en WebSocket RPC-slutpunkt (t.ex. wss://mainnet.infura.io/ws/v3/YOUR_KEY).

Metoder

resolve({ name, abortSignal? })

Slår upp ett .bso-namn och returnerar den tillhörande publika nyckeln. En valfri AbortSignal kan skickas för att avbryta långvariga förfrågningar.

canResolve({ name })

Returnerar en boolean som indikerar om resolvern kan hantera det angivna namnet. Använd detta för att kontrollera support innan du försöker en full upplösning.

destroy()

Rivrar resolvern, stänger databasanslutningar och frigör resurser. Ring detta när resolvern inte längre behövs.

Cachning

Lösta namn cachelagras automatiskt för att minska redundanta nätverkssökningar. Backend för cachning väljs baserat på runtime-miljön:

MiljöBackendAnteckningar
Node.jsSQLiteLagrat på dataPath. Använder WAL-läge för samtidig åtkomst.
WebbläsareIndexeradDBAnvänder inbyggda IndexedDB-transaktioner.
FallbackI minnet MapAnvänds när varken SQLite eller IndexedDB är tillgängliga.

Alla cacheposter har en en timmes TTL och vräkas automatiskt efter utgången.

Integration med pkc-js

Resolvern kan anslutas direkt till pkc-js genom alternativet nameResolvers, vilket möjliggör transparent .bso namnupplösning under nyckelsökningar:

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

Samtidighet

Resolvern är designad för att vara säker vid samtidig användning:

  • En enda delad viem-klient undviker redundanta anslutningar.
  • SQLite fungerar i WAL-läge (Write-Ahead Logging), vilket tillåter samtidiga läsningar utan att blockera.
  • Webbläsarcache förlitar sig på inbyggda IndexedDB-transaktioner för isolering.

Ingångspunkter för plattformar

Paketet levererar separata ingångspunkter för Node.js och webbläsarbyggen. Samlare som stöder fältet exports i package.json kommer automatiskt att välja rätt.