or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
PSE Acceleration Program: Semaphore ERC7579 Validator Module
Project Overview
Overview
Semaphore is a zero knowledge component that allows users to prove their group membership and send signals without revealing their original identity.
With the recent development of Account Abstraction ERC-4337 and Minimal Modular Smart Account ERC-7579, these advancements allow a smart account to install modules to gain extra functionalities.
The objective of this accelerator program proposal is to develop a Semaphore ERC-7579 validator module so when this module installed, the smart account allows Semaphore group members (of that particular account) to sign transactions on behalf of the account. I will also integrate MultiFactor validator so a transaction requires a M (1<=M<=N) of N member signatures, behaving like a multisig wallet. M is configurable by the Semaphore group admin.
One advantage of this setup compared to a normal multisig wallet is that signers' privacy is preserved. Because of the smart account interaction model, the original transaction initiator sends http/RPC requests to a bundler, and the bundler in turn sends the transaction on-chain with paymaster configured to pay for the tx fee. So we won't be able to trace who the original transaction initiator is.
Project Details
The idea of this project has been explored by Saleel, and is documented in his blogpost. It was built at a time when the tool stack was still primitive. In this proposal, I aim to formalize this and solve semaphore-protocol/semaphore#345. When a smart account owner install this Semaphore ERC-7579 module to a smart account, a new Semaphore group is created. The user becomes the admin of the group and can manage the members inside. Any members in the Semaphore group will be able to send a zk proof of transaction on behalf the smart account. This is like a 1/N mult-sig wallet, with N being the number of members in the Semaphore group.
Next, MultiFactor validator will be integrated to work with Semaphore validator to make it behave as a M of N multisig wallet. This module will be integrated via ModuleSDK to demonstrate the composibility of ERC-7579 modules.
At the end of the proposal, the following will be delivered:
Overview of the technology stack to be used
PoC/MVP or other relevant prior work or research on the topic
Team 👥
Team Members
Email: jimmychu0807@gmail.com
Telegram: @jimmychu0807
Discord: @jimmychu0807
Team Website
website: https://jimmychu0807.hk/
Team's experience
I participated in the PSE Core Program 2024 - Taiwan, and delivered a capstone project of a zero-knowledge Number Guessing Game, built upon Semaphore boilerplate.
I previously worked in Parity as Polkadot developer advocate and CESS as developer advocate advisor. Other prior experience can be seen in my github profile. Other prior experience can be seen in my github profile.
Team Code Repos
https://github.com/jimmychu0807
Development Roadmap 🔩
Overview
Milestone 1: M-of-N Semaphore validator module
Deliverables and Specifications
1. Semaphore ERC7579 validator module
It will be a module in ModuleKit validator. Semaphore and related contracts will be deployed to be used in the validator module. With this module, the smart account behave like an 1-of-N multisig wallet.
2. Integration with MultiFactor validator
Using ModuleSDK to integrate MultiFactor validator with Semaphore validator developed above. With this integration, the smart account will behave like an M-of-N multisig wallet.
3. End-to-end testing code
Both hardhat and foundry test will be written to cover 85% of the Solidity code for unit tests. Local development environment can also be spin up by Docker-compose to run end-to-end test of the module.
4. Inline code documentation
All public functions of the module contract will be documented according to NatSpec format.
Milestone 2: Front-end demo, deployment scripts, and writeup
Deliverables and Specifications
5. Front-end demo & deployment scripts
A front-end demo will be able to spin up locally with a single
yarn
command. Because it relies on existing EntryPoint singleton and Paymaster contract to work, the locally running front end will need to connect to a testnet in order to execute all the functionality of the module.Deployment scripts will be developed for front end being deployed to Vercel hosting and smart contracts deployed on a chosen testnet.
6. Writeup
A writeup will be submitted for review giving a technical overview of the project.
Notes