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 circuit

    file located in zero-knowledge-proof/circuits and generates a

    new folder compiled-circuits.

Establish Trusted Setup

  • etherlime zk setup Running this command will establish a trusted

    setup based on compiled circuit and generates a folder `trusted

    setupwithproving_keyandverification_key`. The command

    reads the compiled circuit from

    zero-knowledge-proof/compiled-circuits.

Generate ZK Proof

  • etherlime zk proof [signal] [circuit] [provingKey] Running this

    command will generates a proof based on compiled circuit, public

    signal input and proving key. A new folder generated-proof is

    generated with proof and public_signals. This proof can be

    used for off-chain Zero-Knowledge-Proof verification.

    • Parameters:

      • signal - [Optional] Specifies the file with public

        signals input to be used for generating a proof.

        Defaults to input.json read from

        zero-knowledge-proof/input folder.

      • circuit - [Optional] Specifies the compiled circuit

        for checking of matched signals. Defaults to:

        circuit.json read from

        zero-knowledge-proof/compiled-circuits folder.

      • provingKey - [Optional] Specifies the prooving key

        to 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 with

        signals 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 that

        would 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 key

        to 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 smart

    contract 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

    compileandetherlime deploy`. The verifier smart contract has a

    public view method verifyProof that can be called for on-chain

    verification. You can generate the call parameters with `etherlime

    zk-generate-call` cli command.

    • Parameters:

      • verifierKey - [Optional] Specifies the verifier key

        to 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 command

    will 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 generated

    verifier contract with this data.

    • Parameters:

      • publicSignals - [Optional] Specifies the file with

        signals 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 that

        would be used for generating a proof based on it.

        Defaults to: circuit_proof.json read from

        zero-knowledge-proof/generated-proof folder.