npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@voter-protocol/bb.js

v0.87.0-fork.1

Published

Barretenberg WASM bindings with stateful keygen API (fork of @aztec/bb.js)

Readme

bb.js

Prover/verifier library for barretenberg. It bundles support for the following:

  • x86_64 on linux.
  • aarch64 on linux.
  • x86_64 on macos.
  • aarch64 on macos.
  • Single-threaded WASM.
  • Multi-threaded WASM.

If running within node.js on a support os/architecture we will use appropriate native code. If running within node.js on an unsupported architecture we will fallback to multi-threaded WASM. If running within the browser and served without COOP/COEP headers, we use the single-threaded WASM. If running within the browser served with COOP/COEP headers, we use the multi-threaded WASM.

Installing

npm install @aztec/bb.js

or with yarn

yarn add @aztec/bb.js

Usage

To create the API and do a blake2s hash:

import { Crs, Barretenberg, RawBuffer } from './index.js';

const api = await Barretenberg.new({ threads: 1 });
const input = Buffer.from('hello world!');
const result = await api.blake2s(input);
await api.destroy();

All methods are asynchronous. If no threads are specified, will default to number of cores with a maximum of 32. If 1 is specified, fallback to non multi-threaded wasm that doesn't need shared memory.

See src/main.ts for larger example of how to use.

Browser Context

It's recommended to use a dynamic import. This allows the developer to pick the time at which the package (several MB in size) is loaded and keeps page load times responsive.

const { Barretenberg, RawBuffer, Crs } = await import('@aztec/bb.js');

Multithreading in browser

Multithreading in bb.js requires SharedArrayBuffer to be enabled. It is only enabled in browsers if COOP and COEP headers are set by the server. Read more here.

You can configure your server to set these headers for pages that perform proof generation. See this example project that implements multi-threaded browser proving, which contains the below Next.js config:

{
  ...
  async headers() {
    return [
      {
        source: '/:path*',
        headers: [
          { key: 'Cross-Origin-Embedder-Policy', value: 'require-corp' },
          { key: 'Cross-Origin-Opener-Policy', value: 'same-origin' },
        ],
      },
    ];
  },
}

Note that adding COOP and COEP headers will disable loading of external scripts, which might be required by your application.

You can enable these headers for specific pages that perform proof generation, but this may be challenging, especially in single-page applications. One workaround is to move the proof generation to a separate page, load it in an invisible iframe within your main application, and then use postMessage to communicate between the pages for generating proofs.

Debugging

Got an unhelpful stack trace in wasm? Run:

BUILD_CPP=1 NO_STRIP=1 ./script/copy_wasm.sh

This will drop unstripped wasms into the dest folder. Run your test again to get a trace.