본문으로 건너뛰기

BSO Resolver

BSO 확인자는 ENS에 저장된 Bitsocial TXT 레코드를 읽어 .bso 도메인 이름을 해당 공개 키로 변환합니다. 공유 viem 클라이언트, 영구 캐싱을 제공하고 Node.js 및 브라우저 환경 모두에서 작동합니다.

설치

npm install @bitsocial/bso-resolver

해석기 생성

구성 객체를 생성자에 전달하여 해석기를 인스턴스화합니다:

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

Provider 옵션

provider 매개변수는 세 가지 형식을 허용합니다.

  • "viem" -- viem에서 제공하는 기본 대중 교통을 사용합니다.
  • HTTP(S) URL -- JSON-RPC 끝점을 통해 연결합니다(예: https://mainnet.infura.io/v3/YOUR_KEY).
  • WebSocket URL -- WebSocket RPC 엔드포인트(예: wss://mainnet.infura.io/ws/v3/YOUR_KEY)를 통해 연결합니다.

방법

resolve({ name, abortSignal? })

.bso 이름을 조회하고 관련 공개 키를 반환합니다. 선택적인 AbortSignal는 다음과 같습니다. 장기 실행 요청을 취소하기 위해 전달됩니다.

canResolve({ name })

해결 프로그램이 지정된 이름을 처리할 수 있는지 여부를 나타내는 부울을 반환합니다. 이를 사용하여 전체 해결을 시도하기 전에 지원을 확인합니다.

destroy()

확인자를 해제하고 데이터베이스 연결을 닫고 리소스를 해제합니다. 확인자가 더 이상 필요하지 않을 때 이 호출을 호출하세요.

캐싱

확인된 이름은 중복 네트워크 조회를 줄이기 위해 자동으로 캐시됩니다. 캐싱 백엔드는 런타임 환경에 따라 선택됩니다:

환경백엔드참고
Node.jsSQLitedataPath에 저장되어 있습니다. 동시 액세스를 위해 WAL 모드를 사용합니다.
브라우저인덱스DB기본 IndexedDB 트랜잭션을 사용합니다.
대체인메모리 MapSQLite나 IndexedDB를 모두 사용할 수 없을 때 사용됩니다.

모든 캐시 항목에는 1시간 TTL이 있으며 만료 후 자동으로 제거됩니다.

pkc-js와의 통합

리졸버는 nameResolvers 옵션을 통해 pkc-js에 직접 연결할 수 있으므로 키 중에 투명한 .bso 이름 확인이 가능합니다. 조회:

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

동시성

리졸버는 동시 사용 시 안전하도록 설계되었습니다.

  • 단일 공유 viem 클라이언트는 중복 연결을 방지합니다.
  • SQLite는 WAL(Write-Ahead Logging) 모드에서 작동하여 차단 없이 동시 읽기를 허용합니다.
  • 브라우저 캐싱은 기본 IndexedDB 트랜잭션에 의존합니다. 격리.

플랫폼 진입점

패키지는 Node.js 및 브라우저 빌드에 대한 별도의 진입점을 제공합니다. package.jsonexports 필드를 지원하는 번들러는 자동으로 올바른 항목을 선택합니다.