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

alberta-buck-contracts

v0.3.0

Published

Compiled ABI and bytecode for the Alberta Buck contracts (unaudited prototype): the BUCK token, BuckCredit, the BUCK_K controller, the identity registry, the Notes pool with Groth16 verifiers from a DEVELOPMENT trusted setup (forgeable until v1.0.0), and

Readme

alberta-buck-contracts

Compiled ABI and bytecode for the Alberta Buck contracts: the BUCK token (Buck), the insured asset NFT (BuckCredit), the on-chain PID controller (BuckKControllerDirect), the identity accumulator (IdentityRegistry) and the Poseidon hashers it takes, the Notes pool (Notes) with its verifier adapters and Groth16 verifiers, the equity basket (BuckBasketEquity, its components and venue facets, its turn director and its work wheel), the monetary desk beside it (EquityDesk), and the simulation helpers.

Unaudited prototype software for a monetary system. These contracts have never been audited. They are published so the research and simulations can be reproduced and built on -- not so they can be deployed with other people's money behind them.

The Groth16 verifiers come from a DEVELOPMENT trusted setup

Until v1.0.0, every Groth16 verifier in this package -- the batch-mint verifiers, the spend verifier, the two folded deposit gates and the B1 membership verifier -- comes from a development trusted setup. The setup scripts contribute fixed entropy that is published in the repository (scripts/snark/setup*.sh), so the toxic waste is public: anyone can forge a proof that these verifiers accept.

That is deliberate, and it is why they are published at all: with the toxic waste in hand, a simulation can model what an attacker holding a forged proof could do, and test the defences around the proof -- the batch signatures, the issuer bindings, the nullifier set -- which a production setup would make impossible to exercise. It also means none of this may guard anything of value. A production release will run a multi-party ceremony, and will say so.

The bundle carries the same warning as data: every verifier's artifact has "trustedSetup": "development", and the compiler record's trustedSetup names the setup and lists the verifiers.

Nothing here has an address

No Alberta Buck contract is deployed at a fixed address, on any chain. Every BUCK world -- the Python simulation, the JavaScript simulation, the browser demos, the test suites -- deploys fresh into its own EVM and learns the addresses from the deploy receipts. What this package ships is (abi, bytecode) pairs.

deployments is therefore empty. It exists so that publishing real addresses later is not a breaking change to the package's shape.

Install

npm install alberta-buck-contracts
pip install alberta-buck-contracts

Use

import { artifact, compiler } from "alberta-buck-contracts";

const { abi, bytecode } = artifact("Buck");
console.log(compiler.solc);        // the exact compiler that produced it
from buck_contracts import artifact, compiler

abi, bytecode = artifact("Buck")
print(compiler()["solc"])

Standing up Notes

Notes takes its verifiers through adapters, so a world deploys the adapters, registers a verifier per batch size, and wires them in:

  • MintVerifierAdapter / MintVerifierA2Adapter -- registerVerifier(n, address) for each MintBatchN{n}Groth16Verifier / MintBatchA2N{n}Groth16Verifier (n = 1, 2, 4, 8, 16, 32); a batch is verified by the verifier registered for its size.
  • SpendVerifierAdapter(SpendGroth16Verifier), then Notes(buck, mintAdapter, spendAdapter, governance).
  • setIdentityRegistry, setA2MintVerifier(a2Adapter), setIdentityMembershipVerifier(IdentityMembershipB1VerifierAdapter()) and setDepositFoldVerifier(DepositFoldVerifierAdapter(registry)). These two adapters deploy their own verifiers in their constructors; the verifier artifacts are shipped too, for direct use and inspection.
  • The registry's accumulator hashes with PoseidonT3 and PoseidonT4 (setIdentityPoseidon, setIdentityPoseidonT4).

alberta_buck/sim/notes_stack.py in the repository is the reference wiring. Every artifact fits EIP-170: the one verifier snarkjs emits too large (MintBatchA2N32Groth16Verifier, 228 public inputs) ships in a table-driven form with the same verification key.

What is not here

A BUCK world also needs Uniswap and WETH. Those are not bundled: they belong to Uniswap, under their own licences, and you should take them from their own published packages -- @uniswap/v3-core, @uniswap/v2-periphery, @uniswap/universal-router. Asking this package for one of them raises an error naming the package to install instead. compiler.external lists the mapping.

Reproducibility

The build is pinned and verified rather than assumed. compiler.json records the exact solc version, the optimizer settings, the EVM version, the git commit, and a sha256 over the bundle. The build asserts that every artifact was produced by the pinned compiler, and that only contracts we own are included.

Licence

GPL-3.0-or-later, matching the Solidity sources. See LICENSING.md.

Repository: https://github.com/alberta-buck/alberta-buck