semaphore-protocol / semaphore

A zero-knowledge protocol for anonymous interactions.
https://semaphore.pse.dev
MIT License
883 stars 193 forks source link

Development - Build a project with just HTML, CSS, TS Semaphore Project #334

Open aguzmant103 opened 1 year ago

aguzmant103 commented 1 year ago

Sometimes Semaphore is mistakenly thought to be only for web3 (Ethereum) or with a specific front-end framework (i.e. React).

Create a simple application that just uses Semaphore with "pure" HTML, CSS, TypeScript.

nikitakent commented 10 months ago

Working on this issue.

auleki commented 1 month ago

@vplasencia I'd like to take on this issue but I need a little more description, is it just the landing page that should be written in HTML, CSS, JavaScript?

sripwoud commented 1 month ago

@nikitakent It seems you have built something already, haven't you? @vplasencia would https://github.com/nikitakent/semaphore-court-app close this issue (didn't try to run it or review it in details)

nikitakent commented 1 month ago

Hi @sripwoud - merkle trees used in the semaphore library need some kind of storage solution, which - to my knowledge -, is not well-supported by a vanilla web application. We'd need to build some custom TS capability for us to convert the merkle tree to a JSON and retrieve the data back as a merkle tree structure so we can perform validation etc. This new resource may help.

Once we have solved this merkle tree storage problem, the application can be finalised and we can close this issue.

@auleki, if you are still interested, I can guide you through the storage problem in more detail and/or work together on the issue, I have some time available. Please let me know.

cedoor commented 1 month ago

Hey @nikitakent, are you using on-chain groups? If so, you don't need to store Merkle trees.

nikitakent commented 1 month ago

Hey @cedoor. Yes, that would be the easy solution. But - and please correct me if I am mistaken - wouldn't using an on-chain functionality defeat the purpose of this project/issue?

cedoor commented 1 month ago

Hey @cedoor. Yes, that would be the easy solution. But - and please correct me if I am mistaken - wouldn't using an on-chain functionality defeat the purpose of this project/issue?

I read the description again. Yes, you're right, I think this task is supposed to be about a web2 app.

You could just save the list of members of 1 or more groups in a db (like Mongo) and then when the app starts you could create the groups on the fly with @semaphore-protocol/group by retrieving the list of members and passing it as a parameter in the constructor. How does it sound?