0.3.4 • Published 1 year ago

@axiom-crypto/halo2-lib-js v0.3.4

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

halo2-lib-js

This repository aims to streamline the process of writing circuits in Typescript using halo2-lib-wasm. To discuss or collaborate, join our community on Telegram.

Getting Started

To build your own halo2-wasm module, see this README.

Install halo2-js in your own JS/TS project with

pnpm install @axiom-crypto/halo2-lib-js

or use your favorite package manager (npm, yarn, etc.).

Setting up the CircuitScaffold

The halo2-wasm package already has an abstract CircuitScaffold that must be implemented. Here is an example using Halo2LibWasm and Halo2CircuitRunner:

Web

import { Halo2LibWasm, CircuitConfig, CircuitScaffold } from "@axiom-crypto/halo2-wasm/web";
import { Halo2CircuitRunner, Halo2Lib } from "@axiom-crypto/halo2-lib-js";

export class WebCircuitScaffold extends CircuitScaffold {

    halo2Lib!: Halo2LibWasm;

    constructor(options) {
        super(options);
    }

    newCircuitFromConfig(config: CircuitConfig): void {
        super.newCircuitFromConfig(config);
        if (this.halo2Lib) this.halo2Lib.free();
        this.halo2Lib = getHalo2LibWasm(this.halo2wasm);
    }

    async populateCircuit(circuit: (halo2Lib: Halo2Lib, inputs: any) => Promise<void>, inputs: any) {
        this.newCircuitFromConfig(this.config);
        this.timeStart("Witness generation");
        await Halo2CircuitRunner(this.halo2wasm, this.halo2Lib, this.config).run(circuit, inputs);
        this.timeEnd("Witness generation");
    }

}

Node.js

import { Halo2LibWasm, CircuitConfig, CircuitScaffold } from "@axiom-crypto/halo2-wasm/js";
import { Halo2CircuitRunner, Halo2Lib } from "@axiom-crypto/halo2-lib-js";

export class JsCircuitScaffold extends CircuitScaffold {

    halo2Lib!: Halo2LibWasm;

    constructor(options) {
        super(options);
    }

    newCircuitFromConfig(config: CircuitConfig): void {
        super.newCircuitFromConfig(config);
        if (this.halo2Lib) this.halo2Lib.free();
        this.halo2Lib = getHalo2LibWasm(this.halo2wasm);
    }

    async populateCircuit(circuit: (halo2Lib: Halo2Lib, inputs: any) => Promise<void>, inputs: any) {
        this.newCircuitFromConfig(this.config);
        this.timeStart("Witness generation");
        await Halo2CircuitRunner(this.halo2wasm, this.halo2Lib, this.config).run(circuit, inputs);
        this.timeEnd("Witness generation");
    }

}
0.3.2

1 year ago

0.3.4

1 year ago

0.3.3

1 year ago

0.3.1-rc2.0

1 year ago

0.3.0-rc2.0

1 year ago

0.2.15-alpha.0

1 year ago

0.2.14-rc.0

2 years ago

0.2.13

2 years ago

0.2.13-alpha.3

2 years ago

0.2.13-alpha.0

2 years ago

0.2.11-alpha.3

2 years ago

0.2.12

2 years ago

0.2.11

2 years ago

0.2.11-alpha.0

2 years ago

0.2.11-alpha.1

2 years ago

0.2.11-alpha.2

2 years ago

0.2.13-alpha.1

2 years ago

0.2.13-alpha.2

2 years ago

0.2.11-alpha

2 years ago

0.2.10

2 years ago

0.2.9

2 years ago

0.2.8

2 years ago

0.2.7

2 years ago

0.2.6

2 years ago

0.2.5

2 years ago

0.2.4

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago