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 inzero-knowledge-proof/circuits
and generates a new foldercompiled-circuits
.
Establish Trusted Setup¶
etherlime zk setup
Running this command will establish a trusted setup based on compiled circuit and generates a foldertrusted setup
withproving_key
andverification_key
. The command reads the compiled circuit fromzero-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 foldergenerated-proof
is generated withproof
andpublic_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 toinput.json
read fromzero-knowledge-proof/input
folder.circuit
- [Optional] Specifies the compiled circuit for checking of matched signals. Defaults to:circuit.json
read fromzero-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 fromzero-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 folderverified-proof
is generated withoutput.json
file.
- Parameters:
publicSignals
- [Optional] Specifies the file with signals to be used for generating verifying a proof. Defaults tocircuit_public_signals.json
read fromzero-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 fromzero-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 fromzero-knowledge-proof/trusted-setup
folder.output.json
file has two params:
verified
- whatever the proof is verified or nottimestamp
- 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 withetherlime compile
andetherlime deploy
. The verifier smart contract has a public view methodverifyProof
that can be called for on-chain verification. You can generate the call parameters withetherlime 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 fromzero-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 foldergenerated-call
is generated withgeneratedCall.json
file. This generated call can be used for on-chain verification, for calling public view methodverifyProof
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 tocircuit_public_signals.json
read fromzero-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 fromzero-knowledge-proof/generated-proof
folder.