zkAsk: Anonymous participation in AMA sessions (Based on Semaphore)

zkAsk: Participate in AMA sessions anonymously

zkAsk allows a host to create an AMA session where the audience can join and ask questions anonymously, creating an open and safe environment. Audiences can also vote anonymously for questions to be answered (community moderation via anonymous voting).

It leverages on Semaphore and zk-proofs to preserve the user’s identity.

This project is inspired by Koh Weijie’s Semaphore presentation at Devcon 5.

Application Type


Proposal Overview

To have a working and feature complete version on testnet and mainnet.

Host should minimally be able to:

  • create AMA sessions which may be public or secured with an access code (ie. audience would need an access code to join the AMA session - useful for study groups where only students can join, or corporate groups where only employees can join)
  • update status of the AMA session
    • start: audience may join and post questions
    • pause: audience may join but cannot post questions
    • resume: audience may post questions
    • end: session has ended
  • list created AMA sessions

Audience/Participant should minimally be able to:

  • list AMA sessions that are paused/active (ie. ready for audiences to join)
  • join a public session or enter access code to join a private AMA session
  • post a question to an AMA session anonymously
  • vote on other audience’s questions anonymously

Use Cases

  1. Private AMA sessions where the topic discussed is sensitive in nature (eg. HR sessions, group review sessions)
  2. Public face-to-face AMA sessions at conferences/talks where the audience can freely ask questions without the pressure of the environment. Questions can be posted while the talk is ongoing, without interrupting the speaker. Based on the number of votes for each question, the speaker/host can ensure that the most important questions (or what most of the audience wants to know) are answered.

Competitive Landscape

Proposal Ask
zkAsk will be established to be community-driven and self-funded by its DAO. To get this up and running, we will be requesting the $15k/year stable basic income to take care of initial development, welfare, and operation costs.

This ask will be in line with the laid down milestones as detailed below:

  1. launching a feature-complete product on our testnet
  2. forming a DAO with 5-out-of-9 multisig
  3. launching on mainnet with audit
  4. attracting 1k daily active users (with launch video, full PR promotion)
  5. attracting 10k daily active users (with a detailed roadmap, governance process)

Road Map

Objective Date Status
Testnet Launch 25 April 2022 Done
Beta Testing and Fixes 5 May 2022 Done
Mainnet Launch 5 May 2022 Done
Smart Contract Audit 31 July 2022 Pending
Improvements and Fixes Post Audit 30 Aug 2022 Pending

External Links


Audience: Post questions and vote for questions to be answered

Feature complete product with an attractive UI. Yes from me as a zkDAO governor. Also confirming that the first milestone is met.

Interesting use case, a yes from me as a governor in zkDAO and milestone one is confirmed

yes vote from me too. agreed that first milestone is met

Good UI! Yes from me as governor of zkdao.
First milestone also approved.

Yes vote from me as a zkdao governor and 1st milestone met indeed

Yes from me as a governor of zkDAO. I confirm that 1st milestone is met.

Also agree that first milestone has been met. Voting yes as zkDao governor

How does posting a question work? Who pays for the gas fees?

My understanding is that one pre-determined address pays for all the gas fees for question posting functionality. If this is the case, can we just brute-force it, by posting a lot of questions? Then contract will have no more tokens and the app would be broken.

Yes a predetermined account pays for the gas for posting of questions.

A host pays a fee (amount may change in future; is set to 1 ONE right now) to create an AMA session. This is in turn used for the gas for posting of questions. To mitigate brute force of posting a lot of questions, I have capped the number of questions for each session to 100.