---
# System prepended metadata

title: General Grant Proposal

---

# General Grant Proposal

* **Project:** Isokratia -  a trust minimized governance platform with off-chain voting.

## Project Overview :page_facing_up: 

### Overview

Isokratia is a trust minimized governance platform that uses off-chain (free) voting and recursive SNARKs to increase decentralization and reduce trust assumptions. 

### Project Details 
The project aims to take current Isokratia and build it into a production-ready public good. Snapshot, a decentralized governance platform, will partner to support the development and set the performance targets for Isokratia. After successful, the project will be adopted by Snapshot and scale voting in a trust minimized way.

A summary of skills:
- ZK Engineering
    - Familiarity with circuit programming (Circom) as well as proving system and verifier development (Nova/groth16/PLONK/Spartan)
- DevOps
    - Familiarity with deploying webapps, complex scripting with tools like Docker, and reliable monitoring infrastructure
- Solidity
    - Familiarity with smart contract development, deployment, tooling etc.
    - Familiarity with deploying ZK circuit verifiers to smart contracts
- TypeScript/Vue
    - Familiarity with the codebase and technical stack used by [Snapshot](https://github.com/snapshot-labs/snapshot) 

An overview of the technology stack to be used (and some recommended readings):
- Recursive SNARKs
    - [Recursive zkSNARKs: Exploring New Territory](https://0xparc.org/blog/groth16-recursion)
    - [Recursive zkSNARKs in Isokratia](https://nibnalin.me/dust-nib/isokratia.html)
- zk-SNARK
    - https://learn.0xparc.org
- TypeScript/Vue
- Nova
    - [Nova proving system](https://github.com/microsoft/Nova)
    - [Nova Scotia middleware](https://github.com/nalinbhardwaj/Nova-Scotia)
    - [Nova research paper](https://eprint.iacr.org/2021/370)


## Team :busts_in_silhouette:

### Team members
* Names of team members
Amir
* Email
amir.amgad01@gmail.com
* Telegram handle
amirbolous

### Team Website	
* https://amirbolous.com

### Team's experience
More information [here](https://amirbolous.com), [here for past projects](https://amirbolous.com/projects/), and [here](https://github.com/amirgamil) 

### Advisors
- Product Owner - Andy - PSE @andyguzman506
- Technical Point of Contact - Nalin
- Main Stakeholder - Fabien

### Team Code Repos
* https://github.com/nalinbhardwaj/isokratia


## Development Roadmap :nut_and_bolt: 



### Overview
* **Total Estimated Duration:** 5 months
* **Full-time equivalent (FTE):**  3.5 months
* **Total Costs:** $31,200


### Milestone 1 - Beta
* **Estimated Duration:** 4 months (2 months part time @ 5hr/week, 2 months full time)
* **FTE:**  2.125
* **Costs:** $21,600
* **Estimated delivery date**: Start Date + 4 months (May 18th -> September 18th)
* Total hours = 8 weeks * 5hr/week + 8 weeks * 40hr/week = 360 hours
* At $60/hour = $21,600 

| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
| 1. | Nova | Switch recursion from groth16 pairing based recursion to instead use Nova using [Nova Scotia](https://github.com/nalinbhardwaj/Nova-Scotia)
| 1a. | Verifier | Write a verifier for Nova outputs in a succinct proof system like Groth16 circom or plonk-kzg based halo2 that can be used on-chain |
| 2. | EIP712 |  Support [EIP712](https://eips.ethereum.org/EIPS/eip-712) signature verification in Circom instead of just personal sign. For compatibility with existing Snapshot. | 
| 3. | Compound Governance | Support [Compound Governance smart contracts](https://docs.openzeppelin.com/contracts/4.x/governance) to calculate voting power without relying/verifying any entity | 
| 4. | Testing Guide | The code will have proper unit-test coverage (e.g. 90%) to ensure functionality and robustness. In the guide we will describe how to run these tests | 
| 5. | Documentation | Provide both inline documentation of the code and a basic tutorial that explains how a user can (for example) spin up the application. Application is up, it will be possible to send test transactions that will show how the new functionality works. | 

### Milestone 2 - Alpha
* **Estimated Duration:** 1 month (October 18th)
* **FTE:**  1
* **Costs:** $9,600
* **Estimated delivery date**: Milestone 1 End data + 1 months
* * Total hours = 4 weeks * 40hr/week = 160 hours
* At $60/hour = $9,600 


| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
| 1. | On-Chain Voting | Support direct voting on-chain. This is to support smart contract wallets and relax the requirement of running an aggregator node for censorship resistance. This is unfortunately gas expensive but I’ve not found a way around.| 
| 2. | Snapshot Client Integration |  Integrate with Snapshot client.  Likely will need some small modifications to support verification of voting powe.     - Do in another Snapshot UI - Snapshot might make a SDK for than | 
| 3. | State Proofs | Support ethereum state proofs for creating proposal in smart contract | 
| 4. | Testing Guide | The code will have proper unit-test coverage (e.g. 90%) to ensure functionality and robustness. In the guide we will describe how to run these tests | 
| 5. | Documentation Guide | Provide both inline documentation of the code and a basic tutorial that explains how a user can (for example) spin up the application. Application is up, it will be possible to send test transactions that will show how the new functionality works. | 
| 5. | BlogPost | Write a blogpost about the goal of this project, background, challenges and development approaches and decisions as well as how it can be incorporated in other projects. Lastly, include future improvements ideas or directions for others to explore. | 

## Additional Information :heavy_plus_sign: 
Most of the current work is documented and open-sourced in [this blogpost](https://nibnalin.me/dust-nib/isokratia.html) and on [this repository](https://github.com/nalinbhardwaj/isokratia)