# zkHack Krakow Polygon Bounties
# Bounty Prizes
There will be a total of **$6000** allocated for the project submissions. The idea is to allocate $3000 for Power Builder track and $3000 for zkEVM Stack Extension track, although this can vary depending on the amount of submissions for each track.
If you have any questions or need support, please join [Polygon Devs Discord](https://discord.com/invite/0xpolygondevs) and share your questions.
# Track 1: Power Builder ~ $3000
This track encourages participants propose and implement ideas for enhancing core functioning, The focus areas include the development of Mini-zkCPU, Keccak Implementation , and BenchmarkingBounties are listed below:
## Mini-zkCPU:
The zkEVM's architecture resembles that of a traditional CPU, featuring essential components such as registers, a program-loaded ROM, an ALU, and memory. This design enables efficient management of arithmetization, allowing state changes to be expressed through a set of constraints. The objective of this bounty is to implement a streamlined iteration of the zkCPU architecture, optimized and adaptable beyond the limitations of EVM transaction encoding.
**Criteria:**
* *Correctness and Completeness*: The implemented zkCPU should accurately adhere to the specifications and requirements outlined.
* *Efficiency*: The zkCPU design should demonstrate improved efficiency compared to the existing architecture, particularly in terms of resource utilization and computational performance.
* *Compatibility*: The implemented zkCPU should seamlessly integrate with existing zkEVM frameworks and protocols without introducing compatibility issues.
* *Documentation*: Brief documentation covering the design, implementation, and rationale behind the zkCPU architecture should be provided to facilitate understanding and future development efforts.
## Keccak Coprocessor Optimization and Benchmarking
Keccak plays a crucial role in Ethereum as the primary hash function, essential for transaction validation and storage compression, thus ensuring blockchain reliability and security. The zkEVM incorporates a dedicated coprocessor for executing and verifying Keccak hash computations. This bounty seeks to propose an optimized version of the Keccak coprocessor within the zkEVM, potentially removing restrictions aligned with the current design. Additionally, the performance of the optimized coprocessor will be evaluated based on metrics such as the number of Keccak operations, proving time, proof size, and verification time.
**Criteria**:
* *Optimization*: The proposed optimized Keccak coprocessor should demonstrate significant improvements in computational efficiency and resource utilization compared to the existing implementation.
* *Performance Benchmarking*: Brief benchmarking results to validate the performance enhancements achieved by the optimized coprocessor.
* *Security*: Measures should be implemented to ensure the security and integrity of the optimized coprocessor, including resistance to potential cryptographic attacks.
* *Compatibility*: Compatibility with existing zkEVM frameworks and protocols should be maintained to ensure seamless integration and interoperability.
# Track 2: zkEVM Stack Extension ~ $3000
This track invites ideas on extending the Polygon zkEVM Stack with a few ideas, Some of them are mentioned below:
## Removing Censorship Resistance:
Censorship resistance is paramount to ensure the integrity and decentralization of the network. This bounty focuses on implementing mechanisms to remove censorship resistance, including thoughts like decentralized sequencing or encrypted transaction batching , etc.
**Criteria**:
* *Correctness and Soundness*: The implemented mechanisms should accurately and securely enable to present the concept of removing Censorship Resistance.
* *Innovation*: Innovative approaches and enhancements to existing mechanisms are encouraged to strengthen censorship resistance within the zkEVM ecosystem.
## zkEVM Testing Frameworks/Suites:
Develop comprehensive testing frameworks for the zkEVM, covering stress testing, unit testing, and integration testing, Maybe try Simulating high transaction volumes to assess zkEVM performance under peak loads, Validate interactions between zkEVM components to ensure seamless operation. Implement test coverage analysis and code review procedures to identify and address potential vulnerabilities. Consider integrating with existing testing frameworks and libraries to leverage community resources and best practices.
**Criteria:**
* *Coverage*: How well do the testing frameworks cover various aspects of zkEVM functionality?
* *Effectiveness*: How accurately do the testing frameworks identify potential issues and vulnerabilities?
* *Desired Output*: Testing frameworks for the zkEVM, including scripts, test cases, and documentation.
Some of the repository to look for:
* https://github.com/0xPolygonHermez/zkevm-node/tree/develop/test
* https://github.com/0xPolygonHermez/zkevm-rom/tree/main/test
* https://github.com/0xPolygonHermez/zkevm-prover/tree/main/test
## Forced Batching
Implement forced batching mechanisms to optimize transaction processing and network efficiency in the zkEVM, Explore concepts such as transaction priority queues, dynamic batching algorithms, and fee-based incentivization to maximize transaction throughput and minimize latency. Consider compatibility with existing zkEVM protocols and standards to ensure seamless integration and interoperability.
**Criteria:**
* *Efficiency*: How effectively do the forced batching mechanisms optimize transaction processing and network efficiency?
* *Scalability*: To what extent do the forced batching mechanisms improve the scalability of the zkEVM network?
* *Desired Output*: Implementation of forced batching mechanisms within the zkEVM, along with performance analysis and scalability testing results.
## Resources
### [Polygon zkEVM Repositry](https://github.com/0xPolygonHermez)
Repository containing a few circom examples, some handy scripts and an example of a zkDapp built on top of Polygon zkEVM:
- https://github.com/RogerTaule/example-repo.
Circom:
- [Circom Docs](https://docs.circom.io).
- [SnarkJS](https://github.com/iden3/snarkjs) (generating a Groth16/PlonK/FflonK from a circom).
PIL:
- [PIL documentation](https://wiki.polygon.technology/docs/category/polynomial-identity-language/).
- [PIL-STARK repository](https://github.com/0xPolygonHermez/pil-stark) (generating a STARK from a PIL).
zkASM:
- [zkASM documentation](https://wiki.polygon.technology/docs/category/zk-assembly/).
- [Polygon zkEVM ROM zkASM's implementation](https://github.com/0xPolygonHermez/zkevm-rom).