zscan - etherscan for zk!

zscan - etherscan for zk!

zscan is probably one of the first native explorer like etherscan for the zk ecosystem. This would empower the developer in better understanding the public inputs, proof, circuit metadata, etc.

The problem zscan - etherscan for zk! solves

Detailed Problem-Solving Aspects of zscan in the zk-Space

The primary objective of zscan is to streamline and enhance the user experience and functionality in the zk-SNARKs domain, particularly focusing on key aspects such as user interface, contract interaction, and zk-SNARKs management. Here's how zscan addresses these specific needs:

1. Advanced User Interface:

  • Display and Interaction:
    • Integrates features to display smart contract code, constraints, and metadata in a simplified manner.
    • Provides visualization of zKeys and the actual proofs used in zk-SNARKs.
  • Verification and Creation:
    • Includes a verification button for users to reverify proofs, adding an extra layer of trust and validation.
    • Incorporates a placeholder (currently disabled) for future functionality to create proofs manually.
  • Search and Query:
    • Implements search and query features based on addresses, enhancing the ease of accessing relevant data.
  • Data Visualization:
    • Adds aesthetically pleasing graphs to track historical data and trends within the zk-SNARKs ecosystem.

2. Integration with zkEmail Ecosystem:

  • Connects with the applications developed on the zkEmail base, such as zkP2P and email wallet.

3. Enhanced Analytical Tools:

  • Static Analysis Integration:
    • Plans to incorporate static analysis tools, offering deeper insights into circuit efficiency and security.
  • Powers of Tau Ceremony:
    • Aims to facilitate the performance of 'Powers of Tau' ceremonies directly on the platform, contributing to the setup of zk-SNARKs parameters.

4. Smart Contract Deployment on Mantle:

  • Data Storage and Accessibility:
    • Deploys a contract on the Mantle network to store hashes of zKeys, contract addresses, and Circom code for the verifier.
    • This feature significantly streamlines the management and accessibility of critical zk-SNARKs components.

Challenges I ran into

During the zscan development, I took a deep dive into using GraphQL, drawing inspiration from the 'BlockScout' project. But here’s the catch: 'BlockScout' is built on Elixir, and I wasn’t exactly an Elixir whiz. Tackling a language that's heavy on concurrent processing and functional programming was like learning to swim in deep waters – challenging, but definitely a brain teaser I enjoyed cracking.

One of the trickier parts was dealing with the blockchain's verifiers. They're like a box of assorted chocolates – each one's different. This variety made automating our block explorer a bit like fitting square pegs into round holes. It's a puzzle I'm still piecing together, figuring out how to make our system play nice with these diverse verifier protocols.

And then there was this big idea I had – to add features for 'Powers of Tau' ceremonies and static analysis for circuits on zscan. Think of it as trying to host a huge virtual party and making sure every guest gets their favorite dessert. Ambitious, right? But with the hackathon clock ticking, fully baking these features just wasn’t on the cards. They’re still in the pipeline, though, and I’m keen on rolling these out over the next few weeks.

Discussion