ZKprover as an Actively Validated Services(AVS) revolutionizes task verification through a seamless interaction between users and operators. Users initiate tasks, such as mathematical computations or data verification, by submitting requests to the AVS. Operators, registered and staked within the system, then respond by generating zero-knowledge proofs (zkProofs) that validate the task's correctness without revealing sensitive information. These proofs are securely submitted back to the AVS for on-chain validation, ensuring transparency and integrity through blockchain technology.
- AVS consumer requests a Task to be generated and signed.
- AVS emits an event for operators to pick up the request.
- A staked operator generates the result and signs it.
- The operator submits the signed result back to the AVS.
- AVS verifies the operator's registration and stake,zkproof, then accepts the submission.
- npm
- Foundry
- Docker (ensure it's running)
- NodeJS packages:
- tcs
- ethers
- Clone the repository:
git clone https://github.com/ABD-AZE/ZK_Prover_AVS.git
- Run
npm install
- Run
cp .env
- Run
make start-chain-with-contracts-deployed
- Open new terminal tab and run
make start-operator
- Run
cd frontend
- Run
npm install
- Run
npm start
- Open new terminal tab and run
cd backend
- Run
npm install
- Run
ts-node index.ts
The building block of our project was AVS so understanding it in depth was truly a necessary as well as a cumbersome task.
EigenLayer's Repo has a lot of smart contracts. Understanding each of them was necessary to build our project, although we learned a lot but it was quite challenging
First we planned to use a complex circuit but we were facing issues while intergation due to the large input sizes for a more complex circuit. So instead we went ahead with using simpler circuits i.e. The Adder Circuit
-
Frontend
-
Backend
-
Modification and Integration of Smart Contracts
-
ZKproofs Integration with Operator
-
Modification and Integration of Smart Contracts
-
Bash scripting
- Our main aim was to build a ZK prover for a ZK roll up as an AVS. So in the initial phase of our project we also learned about roll up functioning and the problem with the prover being a centralized entity.
- We undestood the architecture of EigenLayer AVS which included understaing its complex smart ocntracts and how they interact with each other
- We used the ethers library a lot during the project, thereby deepening our understanding of its methods.
- Understanding how pre-saved states can be used to start a local anvil chain from that particular state was also really fascinating.
- We also learned a lot about bash scripting along with javascript promises to integrate out circuit with the operator file which was written in js.
- We first and foremost plan to implement a staking and slashing logic so that our AVS can truly demonstrate the working of an Eigen Layer AVS.
- We would also be working on the zero knowledge proofs. Our main aim was to make a ZK prover, so we would continue on that path and increase the complexity of our circuit. Next we are thinking to upgrade to a merkle inclusion proof.
- working on BLSIntegration for our AVS.