# etherlime zk

In order to start a project with Zero Knowledge Proof, please refer to etherlime init command.

Available Commands:

## Circuit Compilation

`etherlime zk compile`

Running this command will compile a circuitfile located in

`zero-knowledge-proof/circuits`

and generates anew folder

`compiled-circuits`

.

## Establish Trusted Setup

`etherlime zk setup`

Running this command will establish a trustedsetup based on compiled circuit and generates a folder `trusted

setup

`with`

proving_key`and`

verification_key`. The commandreads the compiled circuit from

`zero-knowledge-proof/compiled-circuits`

.

## Generate ZK Proof

`etherlime zk proof [signal] [circuit] [provingKey]`

Running thiscommand will generates a proof based on compiled circuit, public

signal input and proving key. A new folder

`generated-proof`

isgenerated with

`proof`

and`public_signals`

. This proof can beused for off-chain Zero-Knowledge-Proof verification.

Parameters:

`signal`

- [Optional] Specifies the file with publicsignals input to be used for generating a proof.

Defaults to

`input.json`

read from

`zero-knowledge-proof/input`

folder.

`circuit`

- [Optional] Specifies the compiled circuitfor checking of matched signals. Defaults to:

`circuit.json`

read from

`zero-knowledge-proof/compiled-circuits`

folder.

`provingKey`

- [Optional] Specifies the prooving keyto be used for generating a proof. Defaults to:

`circuit_proving_key.json`

read from

`zero-knowledge-proof/trusted-setup`

folder.

## Verify Proof (Off-chain)

`etherlime zk verify [publicSignals] [proof] [verifierKey]`

Running this command will generates a verifier based on public

signals file that comes out of the proof command, the proof itself

and verifier key. A new folder

`verified-proof`

is generated with

`output.json`

file.

Parameters:

`publicSignals`

- [Optional] Specifies the file withsignals to be used for generating verifying a proof.

Defaults to

`circuit_public_signals.json`

read from

`zero-knowledge-proof/generated-proof`

folder.

`proof`

- [Optional] Specifies the compiled proof thatwould be used for generating a proof based on it.

Defaults to:

`circuit_proof.json`

read from

`zero-knowledge-proof/generated-proof`

folder.

`verifierKey`

- [Optional] Specifies the verifier keyto be used for generating a proof. Defaults to:

`circuit_verification_key.json`

read from

`zero-knowledge-proof/trusted-setup`

folder.

`output.json`

file has two params:

`verified`

- whatever the proof is verified or not

`timestamp`

- identifier for the time that event occurs

## Generate Smart Contract for On-Chain Verification

`etherlime zk generate [verifierKey]`

Generates a verifier smartcontract based on verification key which can be used for on-chain

verification. The smart contract is written in contracts folder

and it is ready to be compiled and deployed with `etherlime

compile

`and`

etherlime deploy`. The verifier smart contract has apublic view method

`verifyProof`

that can be called for on-chainverification. You can generate the call parameters with `etherlime

zk-generate-call` cli command.

Parameters:

`verifierKey`

- [Optional] Specifies the verifier keyto be used for generating a verifier smart contract.

Defaults to: circuit_verification_key.json read from

`zero-knowledge-proof/generated-proof`

folder.

## Generate output call based for On-chanin Verification

`etherlime zk call [publicSignals] [proof]`

Running this commandwill generates a call based on proof and public signals. A new

folder

`generated-call`

is generated with`generatedCall.json`

file. This generated call can be used for on-chain verification,

for calling public view method

`verifyProof`

of the generatedverifier contract with this data.

Parameters:

`publicSignals`

- [Optional] Specifies the file withsignals to be used for generating verifying a proof.

Defaults to

`circuit_public_signals.json`

read from

`zero-knowledge-proof/generated-proof`

folder.

`proof`

- [Optional] Specifies the compiled proof thatwould be used for generating a proof based on it.

Defaults to:

`circuit_proof.json`

read from

`zero-knowledge-proof/generated-proof`

folder.

Last updated