Coder Social home page Coder Social logo

evm-placeholder-verification's Introduction

EVM Placeholder proof system verifier

Discord Telegram Twitter

An application for in-EVM validation of zero-knowledge proofs generated with the Placeholder proof system.

Dependencies

  • Hardhat
  • Node.js - Hardhat requires an LTS version of Node.js; as of September 2023 it's v18

Contract Addresses

Network Address
Sepolia 0x489dbc0762b3d9bd9843db11eecd2a177d84ba2b

Installing with npm

You can install the package via npm from the command line:

npm install @nilfoundation/[email protected]

or add it to the package.json file manually:

"@nilfoundation/evm-placeholder-verification": "1.1.1"

Contributing

Clone the project from GitHub:

git clone [email protected]:NilFoundation/evm-placeholder-verification.git

After that, navigate to the evm-placeholder-verification directory:

cd evm-placeholder-verification

Install dependency packages

npm i

Compile contracts

npx hardhat compile

Deploy

Launch a local network using the following command:

npx hardhat node

Don'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 localhost

Hardhat 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 reporting

Local 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 computation

If 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 deploy

If 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-name

To verify all circuits from contracts/zkllvm directory, run:

npx hardhat verify-circuit-proof-all

Community

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.

evm-placeholder-verification's People

Contributors

etatuzova avatar nemothenoone avatar zerg1996 avatar hgedia avatar ukorvl avatar sk0m0r0h avatar nkaskov avatar vo-nil avatar x-mass avatar 307sagar avatar makxenov avatar tshchelovek avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.