Skip to Content

Provers

Prover Nodes need local access to installed binaries corresponding to proof systems supported. These binaries are installed to ~/.fermah/[prover]/bin.

Provers can have their configuration customized through the Prover Node configuration, see configuration.

Currently, only ZkSync binaries are being distributed.

ZkSync

After the release installation, this prover is available under ~/.fermah/zksync.

There are three folders to note:

  • bin contains the executables
  • etc contains necessary keys for proving and verification
  • var contains application-specific files, such as the unix socket and logs.

Configuration

This is the top level config regardless of the mode running. Please check that root_path points to the right user.

[zksync] storage_bucket = "fermah-mainnet" root_path = "/home/fermah/.fermah/zksync"

Storage configuration will change in the future.

Modes

Currently, this prover can be ran in two modes:

Witness Generator and Compressor (WGC)
Configuration
[[zksync.mode.WGC]] round = ["all"]

Minimum requirements for a ZkSync CPU witness generator.

RoundRAMvCPUs
all128 GB32
basic_circuits32 GB16
leaf_aggregation80 GB16
node_aggregation4 GB8
recursion_tip1 GB4
scheduler1 GB4

Suggested Cloud Instance Types:

  • AWS g6.8xlarge
  • GCP g2-standard-32

This mode also runs the proof compressor, which needs a GPU with at least 24GB of memory.

Circuit Prover (CP)
Configuration
[zksync.mode.CP] num_workers = 16 max_gpu_vram_allocation = 25769803776

Minimum requirements for a ZkSync circuit prover.

vCPUsRAMVRAMStorage
32128 GB24 GB375 GB SSD

Suggested Cloud Instance Types:

  • AWS g6.8xlarge
  • GCP g2-standard-32

This prover is automatically installed with our latest release.

Increasing Workers

The num_workers setting in the Circuit Prover (CP) configuration controls how many proving jobs run in parallel. Setting this to match your machine’s vCPU count improves proving speed and results in more tasks being allocated to your node.

In ~/.fermah/config/prover-node-config.toml, update num_workers to match your vCPU count:

[zksync] mode = { CP = { num_workers = 32, max_gpu_vram_allocation = 25769803776 } }

For example, on a machine with 32 vCPUs, set num_workers = 32.

Setting num_workers higher than your vCPU count does not increase performance. The optimal value is equal to the number of available vCPUs.

In a future update, the binary will automatically detect the number of vCPUs and set the correct worker count. For now, this must be configured manually.

Last updated on