Try   HackMD

Lagrange ZKsync Prover Setup

This is the document outlining the steps to run a Lagrange based ZKsync prover.

Setting up the server with CUDA

As the ZKsync prover makes heavy use of CUDA for fast computation, GPU passthru must be enabled in the Docker server to allow CUDA to be used from within a container.

General Instructions

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

Ubuntu-Specific Instructions

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update
sudo apt-get install nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Lagrange ZKsync prover setup

Getting the Image

The Lagrange/ZKsync prover is distributed in a Docker image, available here:

For L4 GPU:

docker pull lagrangelabs/lpn-zksync-prover:latest-89

For A10 GPU:

docker pull lagrangelabs/lpn-zksync-prover:latest-86

Two sources of data will must be injected through mounts in the running docker image instance.

Configuration

The configuration file must be edited according to the worker details. It will be mounted under /app/config/config.toml.

Important: change the worker_id in the config
below by putting the name of the company running it so we can identify the exact work provided by your server.

config.toml:

[prover]
setup_data_path = "/data/keys"

[gateway]
gateway_grpc_url = "https://gateway-lcp-dev-0-zk-sync.dev.distributed-query.io/"
max_grpc_message_size_mb = 16

[worker]
worker_id = "zksync-circuit-prover"
operator_id = "Lagrange"
lagr_private_key = "779ff5fe168de6560e95dff8c91d3af4c45ad1b261d03d22e2e1558fb27ea450"
class = "ZKSYNC"

[prometheus]
port = 9090

Proving Keys

Proving Keys generated by the ZKsync stack must be downloaded from https://pub-068f4ca2f03e4f21b6eb72b26008e90a.r2.dev/zksync-dev/data.tar.gz and extracted on the host.

curl -O https://pub-068f4ca2f03e4f21b6eb72b26008e90a.r2.dev/zksync-dev/data.tar.gz
tar -xzvf data.tar.gz

Execution

The docker image tag will be latest-89 for L4 and latest-86 for A10.

docker run \
    --restart=always
    --runtime=nvidia --gpus all \
    -e HEAVY_WVG=2 -e LIGHT_WVG=30 \
    --mount type=bind,src=./config.toml,target=/app/config/config.toml \
    --mount type=bind,src=./data,target=/data lagrangelabs/lpn-zksync-prover:latest-89