Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds 2 new smart contracts:
CypherCity
has the application level functionality with functions such asjoinGroup
andaddToGroup
. It also has some helper functions (getMerkleRootCreationDate
,getMerkleTreeRoot
) that are either required for offchain proof verification or helps with optimizations. It interacts with theCypherCitySemaphore
smart contract.CypherCitySemaphore
: this is a thin wrapper over theSemaphore
smart contract, exposing internal functionality.Some notes:
joinGroup
functionality is meant to be private, but I kept it public for now because it makes testing easier. Probably there is a pattern how to achieve this better.getMerkleRootCreationDate
needs to be exposed so that the proofs of older messages can be verified offchain.getMerkleTreeRoot
needs to be exposed so that it is cheap to check if the membership has changed.Error: cannot estimate gas
) suggests that there is a problem with gas, but I think this is an environment or configuration issue.