@nilfoundation/evm-placeholder-verification v1.1.2
EVM Placeholder proof system verifier
An application for in-EVM validation of zero-knowledge proofs generated with the Placeholder proof system.
Dependencies
Contract Addresses
| Network | Address |
|---|---|
| Sepolia | 0x489dbc0762b3d9bd9843db11eecd2a177d84ba2b |
Installing with npm
You can install the package via npm from the command line:
npm install @nilfoundation/evm-placeholder-verification@1.1.1or add it to the package.json file manually:
"@nilfoundation/evm-placeholder-verification": "1.1.1"Contributing
Clone the project from GitHub:
git clone git@github.com:NilFoundation/evm-placeholder-verification.gitAfter that, navigate to the evm-placeholder-verification directory:
cd evm-placeholder-verificationInstall dependency packages
npm iCompile contracts
npx hardhat compileDeploy
Launch a local network using the following command:
npx hardhat nodeDon't close the terminal and don't finish this process, the Hardhat node should be running for the next steps.
To deploy to a test environment (Ganache, for example), run the following from another terminal:
npx hardhat deploy --network localhostHardhat reuses old deployments by default; to force re-deploy,
add the --reset flag to the command.
Testing
Tests are located in the test directory.
To run tests:
npx hardhat test # Execute tests
REPORT_GAS=true npx hardhat test # Test with gas reportingLocal verification of zkLLVM circuit compiler output
zkLLVM compiler prepares circuits as instantiated contracts that can be deployed to a blockchain.
Once you get zkLLVM output, create a circuit directory under contracts/zkllvm for your output.
That directory should contain the following files:
* proof.bin — Placeholder proof file
* circuit_params.json — parameters file
* public_input.json — file with public input
* linked_libs_list.json — list of external libraries that have to be deployed for gate argument computation
* gate_argument.sol, gate0.sol, ... gateN.sol — Solidity files with gate argument computationIf all these files are in place, you can deploy the verifier app and verify the proofs. You only need to deploy the verifier once, and then you can verify as many proofs as you want.
Deploying the contracts:
npx hardhat deployIf you've put the files under, let's say, contracts/zkllvm/circuit-name directory,
you can verify the proofs with the following:
npx hardhat verify-circuit-proof --test circuit-nameTo verify all circuits from contracts/zkllvm directory, run:
npx hardhat verify-circuit-proof-allCommunity
Submit your issue reports to the project's Github Issues.
Join us on our Discord server or in our Telegram chat and ask your questions about the verifier's usage and development.