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 🙏

© 2024 – Pkg Stats / Ryan Hefner

circuitscan

v0.1.3

Published

Deploy and verify your circuits to Circuitscan with a simple command.

Downloads

15

Readme

Circuitscan CLI

Deploy and verify your circuits to Circuitscan with a simple command.

See also: Circuitscan CLI Documentation

[!NOTE] Supports circom 2.0.8-2.1.9, snarkjs 0.6.11-0.7.4

Supports noir 0.31.0-0.34.0

Installation

npm install -g circuitscan

Usage

[!TIP] Close a running compiler job, then use --resume later complete verification or deployment. Alternatively, use --resume to duplicate a verifier, avoiding waiting for the circuit to compile again.

[!TIP] Configuring the circuit field size prime value must be done using a circomkit.json file.

API Key precedence:

  1. Command line argument -a or --api-key
  2. CIRCUITSCAN_API_KEY environment variable
  3. ~/.circuitscan JSON user configuration { "apiKey": "xxx" }

Chaind ID can be specified as the number or the name from viem/chains

verify:circom

Usage: circuitscan verify:circom [options] <mainCircomFile> <chainId> <verifierContractAddress>

Verify verifier contracts by their circom sources. Can also specify chain by name.

Options:
  -p, --protocol <protocol>             Specify the protocol: groth16 (default), fflonk, plonk (overrides circomkit.json if available)
  -k, --proving-key <provingKey>        Specify the proving key filename or url (optional, for Groth16 trusted setups). Must be https hosted if >6 MB
  -t, --ptau <ptauSize>                   Force a specific Powers of Tau size (8-28 or url to download specific file)
  -v, --circom-version <circomVersion>  Specify the Circom version (e.g. "v2.1.8")
  -s, --snarkjs-version <snarkjsVersion>  Specify the SnarkJS version (e.g. "0.7.3")
  -i, --instance <memorySize>           Specify the memory (GB) of compiler instance: 4, 8, 16, 32, 64, 128, 256, 384, 512 (default: 4 for smallest circuits)
  -r, --resume <requestId>              In case of errors during compilation, reattach to a job and attempt a new verification. Overrides all other options.
  -c, --config <configUrl>              Specify a different configuration file (default: https://circuitscan.org/cli.json)
  -a, --api-key <apiKey>                  Specify your API Key as a command line argument
  -h, --help                            display help for command

Scans for dependent included sources for bundle. Includes paths in circomkit.json if available.

Example using an already existing groth16 setup:

$ circuitscan verify -k https://circuitscan-blobs.clonk.me/test-semaphore.zkey ~/semaphore/packages/circuits/src/main/semaphore.circom sepolia 0x73885e40715F6D77C4Ab2863756e4ee523f3be15
Found 15 file(s):
    packages/circuits/src/main/semaphore.circom
    packages/circuits/src/semaphore.circom
    node_modules/circomlib/circuits/babyjub.circom
    node_modules/circomlib/circuits/bitify.circom
    node_modules/circomlib/circuits/comparators.circom
    node_modules/circomlib/circuits/binsum.circom
    node_modules/circomlib/circuits/aliascheck.circom
    node_modules/circomlib/circuits/compconstant.circom
    node_modules/circomlib/circuits/escalarmulfix.circom
    node_modules/circomlib/circuits/mux3.circom
    node_modules/circomlib/circuits/montgomery.circom
    node_modules/circomlib/circuits/poseidon.circom
    node_modules/circomlib/circuits/poseidon_constants.circom
    node_modules/@zk-kit/circuits/circom/binary-merkle-root.circom
    node_modules/circomlib/circuits/mux1.circom

> Compiling semaphore-hidden-purple-chicken...
> Downloading PTAU... @ 1.5922s
> Downloading finalZkey... @ 4.6542s
> Verifying finalZkey... @ 4.9471s
> Exporting verification key and solidity verifier... @ 13.7048s
> Storing build artifacts... @ 13.7297s
# Verifying circuit...
# Completed successfully!

deploy:circom

Usage: circuitscan deploy:circom [options] <mainCircomFile> <chainId>

Deploy verifier contract by their circom sources. Can also specify chain by name.

Options:
  -p, --protocol <protocol>             Specify the protocol: groth16 (default), fflonk, plonk (overrides circomkit.json if available)
  -k, --proving-key <provingKey>        Specify the proving key filename or url (optional, for Groth16 trusted setups). Must be https hosted if >6 MB
  -t, --ptau <ptauSize>                   Force a specific Powers of Tau size (8-28 or url to download specific file)
  -v, --circom-version <circomVersion>  Specify the Circom version (e.g. "v2.1.8")
  -s, --snarkjs-version <snarkjsVersion>  Specify the SnarkJS version (e.g. "0.7.3")
  -i, --instance <memorySize>           Specify the memory (GB) of compiler instance: 4, 8, 16, 32, 64, 128, 256, 384, 512 (default: 4 for smallest circuits)
  -r, --resume <requestId>              In case of errors during compilation, reattach to a job and attempt a new deploy. Overrides all other options.
  -c, --config <configUrl>              Specify a different configuration file (default: https://circuitscan.org/cli.json)
  -a, --api-key <apiKey>                  Specify your API Key as a command line argument
  -b, --browser-wallet                    Send transaction in browser instead of by passing private key env var (overrides passed chainId)
  -h, --help                            display help for command

[!TIP] If there's a timeout error while waiting for a contract deployment transaction, wait for the transaction to be included on chain then use the verify:circom command passing the new contract address.

The contract will have to be verified manually on Etherscan or Sourcify. Find the contract source at https://circuitscan-artifacts.s3.us-west-2.amazonaws.com/build/<build-name-adjective-animal>/verifier.sol

[!IMPORTANT] DEPLOYER_PRIVATE_KEY environment variable is required unless using -b or --browser-wallet

Contracts are always verified on Sourcify. If you would also like to verify on Etherscan, a corresponding Etherscan API key is required:

| name | apiKeyEnvVar | |--------------|---------------------------| | holesky | ETHERSCAN_API_KEY | | sepolia | ETHERSCAN_API_KEY | | mainnet | ETHERSCAN_API_KEY | | optimism | OPTIMISM_ETHERSCAN_API_KEY| | polygon | POLYGON_ETHERSCAN_API_KEY | | fantom | FANTOM_ETHERSCAN_API_KEY | | arbitrum | ARBITRUM_ETHERSCAN_API_KEY| | arbitrumNova | ARBITRUM_NOVA_ETHERSCAN_API_KEY| | gnosis | GNOSIS_ETHERSCAN_API_KEY | | celo | CELO_ETHERSCAN_API_KEY | | base | BASE_ETHERSCAN_API_KEY |

Example usage using .env for configuration:

$ dotenv run circuitscan deploy circuits/multiplier.circom polygon
Found 1 file(s):
    multiplier.circom

> Compiling multiplier-worried-aqua-roundworm...
> Downloading PTAU... @ 0.0207s
> Groth16 setup with random entropy... @ 0.0211s
> Exporting verification key and solidity verifier... @ 0.0676s
> Storing build artifacts... @ 0.0860s
# Sent transaction 0x5b208fa766f744840fcf3827b7f2573f2ab1ec03c200c294dd6c73c98c6108f2
# Deployed to 0x269e831b930f4c1ec7eee28aa53e5756b0f96d0c
# Waiting for verification on Etherscan...
> Pass - Verified
# Verifying circuit...
# Completed successfully!

https://circuitscan.org/chain/137/address/0x269e831b930f4c1ec7eee28aa53e5756b0f96d0c

verify:noir

Usage: circuitscan verify:noir [options] <chainId> <verifierContractAddress> [packageDir]

Verify verifier contracts by their noir sources. Can also specify chain by name.

Options:
  -v, --nargo-version <version>  Specify nargo version
  -i, --instance <memorySize>    Specify the memory (GB) of compiler instance: 4, 8, 16, 32, 64, 128, 256, 384, 512 (default: 4 for smallest circuits)
  -r, --resume <requestId>       In case of errors during compilation, reattach to a job and attempt a new deploy. Overrides all other options.
  -c, --config <configUrl>       Specify a different configuration file (default: https://circuitscan.org/cli.json)
  -a, --api-key <apiKey>         Specify your API Key as a command line argument
  -h, --help                     display help for command

deploy:noir

Usage: circuitscan deploy:noir [options] <chainId> [packageDir]

Deploy verifier contracts by their noir sources. Can also specify chain by name.

Options:
  -v, --nargo-version <version>  Specify nargo version
  -i, --instance <memorySize>    Specify the memory (GB) of compiler instance: 4, 8, 16, 32, 64, 128, 256, 384, 512 (default: 4 for smallest circuits)
  -r, --resume <requestId>       In case of errors during compilation, reattach to a job and attempt a new deploy. Overrides all other options.
  -c, --config <configUrl>       Specify a different configuration file (default: https://circuitscan.org/cli.json)
  -a, --api-key <apiKey>         Specify your API Key as a command line argument
  -b, --browser-wallet           Send transaction in browser instead of by passing private key env var (overrides chainId argument)
  -h, --help                     display help for command

Additional Configuration

Env Var | Description --------|--------------- CIRCUITSCAN_CONFIG | Instead of --config, the configuration URL can also be set by environment variable

License

MIT