Etherlime
  • Introduction
  • Developer Documentation
    • Quick Start
    • Etherlime Library API
      • Deployer
      • Deployed Contract Wrapper
    • Etherlime CLI
      • Installing and Help
      • etherlime init
      • etherlime ganache
      • etherlime compile
      • etherlime deploy
      • etherlime history
      • etherlime test
      • etherlime coverage
      • etherlime flatten
      • etherlime ide
      • etherlime zk
      • etherlime utils
    • Migration from Truffle to Etherlime
    • Migration from v1.2 to v2.0
    • License
Powered by GitBook
On this page
  • Circuit Compilation
  • Establish Trusted Setup
  • Generate ZK Proof
  • Verify Proof (Off-chain)
  • Generate Smart Contract for On-Chain Verification
  • Generate output call based for On-chanin Verification

Was this helpful?

  1. Developer Documentation
  2. Etherlime CLI

etherlime zk

Previousetherlime ideNextetherlime utils

Last updated 6 years ago

Was this helpful?

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

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.

etherlime init command