etherlime zk¶
In order to start a project with Zero Knowledge Proof, please refer to etherlime init command.
Available Commands:
Circuit Compilation¶
etherlime zk compileRunning this command will compile a circuit file located inzero-knowledge-proof/circuitsand generates a new foldercompiled-circuits.
Establish Trusted Setup¶
etherlime zk setupRunning this command will establish a trusted setup based on compiled circuit and generates a foldertrusted setupwithproving_keyandverification_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-proofis generated withproofandpublic_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.jsonread fromzero-knowledge-proof/inputfolder.circuit- [Optional] Specifies the compiled circuit for checking of matched signals. Defaults to:circuit.jsonread fromzero-knowledge-proof/compiled-circuitsfolder.provingKey- [Optional] Specifies the prooving key to be used for generating a proof. Defaults to:circuit_proving_key.jsonread fromzero-knowledge-proof/trusted-setupfolder.
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-proofis generated withoutput.jsonfile.
- Parameters:
publicSignals- [Optional] Specifies the file with signals to be used for generating verifying a proof. Defaults tocircuit_public_signals.jsonread fromzero-knowledge-proof/generated-prooffolder.proof- [Optional] Specifies the compiled proof that would be used for generating a proof based on it. Defaults to:circuit_proof.jsonread fromzero-knowledge-proof/generated-prooffolder.verifierKey- [Optional] Specifies the verifier key to be used for generating a proof. Defaults to:circuit_verification_key.jsonread fromzero-knowledge-proof/trusted-setupfolder.output.jsonfile 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 compileandetherlime deploy. The verifier smart contract has a public view methodverifyProofthat can be called for on-chain verification. You can generate the call parameters withetherlime zk-generate-callcli 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-prooffolder.
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-callis generated withgeneratedCall.jsonfile. This generated call can be used for on-chain verification, for calling public view methodverifyProofof 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.jsonread fromzero-knowledge-proof/generated-prooffolder.proof- [Optional] Specifies the compiled proof that would be used for generating a proof based on it. Defaults to:circuit_proof.jsonread fromzero-knowledge-proof/generated-prooffolder.