Run the Client

To coordinate the communication to all the components, we need to run the Client. The Client will communicate each component to fetch the data and generate the proofs.

Requirements

Make sure to finish the initial configuration first.

Launch the Client

With our deployment machine properly configured, we can run the client.

The client can either work with STARK or SNARK proofs. To configure this, the environment variable MODE can be set to either STARK or SNARK. The default is STARK.

git clone git@github.com:argumentcomputer/zk-light-clients.git && \
  cd zk-light-clients/ethereum && \
  MODE=SNARK RUST_LOG="debug" cargo run -p light-client --release --bin client -- -c <CHECKPOINT_PROVIDER_ADDRESS> -b <BEACON_NODE_ADDRESS> -p <PROOF_SERVER_ADDRESS> -r <RPC_PROVIDER_ADDRESS>

The client only needs to communicate with the primary proof server, since requests to the secondary server are automatically forwarded.

With this, the Client should run through its initialization process and then start making requests to both the Proof Server and the Ethereum nodes, generating proofs as needed in a loop.