mirror of
https://github.com/semaphore-protocol/semaphore.git
synced 2026-01-11 07:38:14 -05:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b9fde2676 | ||
|
|
ac4ddfc6eb | ||
|
|
afae06e8e1 | ||
|
|
4cc6980b55 | ||
|
|
6b04ec0eca | ||
|
|
13a9480165 | ||
|
|
53967a9a3c | ||
|
|
5b92c0a2bc | ||
|
|
31c776ea68 | ||
|
|
8d83d59220 | ||
|
|
9e4fb5376c | ||
|
|
745edb8e92 | ||
|
|
e732992952 | ||
|
|
3fcce15375 | ||
|
|
ebb6731d89 | ||
|
|
0c23acf9cf |
@@ -275,12 +275,18 @@ Clone this repository:
|
||||
git clone https://github.com/semaphore-protocol/semaphore.git
|
||||
```
|
||||
|
||||
And install the dependencies:
|
||||
Install the dependencies:
|
||||
|
||||
```bash
|
||||
cd semaphore && yarn
|
||||
```
|
||||
|
||||
And build the repositiory:
|
||||
|
||||
```bash
|
||||
yarn build
|
||||
```
|
||||
|
||||
## 📜 Usage
|
||||
|
||||
Copy the `.env.example` file as `.env`:
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
"message": "Valores públicos"
|
||||
},
|
||||
"section.identities.box2.description": {
|
||||
"message": "Semaphore utiliza la función hash Poseidon para crear el identtity commitment a partir de los valores privados. Los identity commitments se pueden compartir públicamente, de forma similar a las direcciones Ethereum."
|
||||
"message": "Semaphore utiliza la función hash Poseidon para crear el identity commitment a partir de los valores privados. Los identity commitments se pueden compartir públicamente, de forma similar a las direcciones Ethereum."
|
||||
},
|
||||
"section.identities.box3.title": {
|
||||
"message": "Generar identidades"
|
||||
|
||||
@@ -12,6 +12,6 @@ as well as relevant circuits in
|
||||
which the Semaphore zk-SNARK uses.
|
||||
|
||||
The summary of the audit results can be found
|
||||
[here](https://github.com/appliedzkp/semaphore/tree/master/audit). After three
|
||||
[here](https://github.com/semaphore-protocol/semaphore/blob/main/apps/docs/versioned_docs/version-V1/audit.md). After three
|
||||
rounds of fixes, all security and performance issues were fixed, and the few
|
||||
remaining issues are minor and do not affect security.
|
||||
|
||||
@@ -58,7 +58,7 @@ Hardhat includes the Hardhat Network, a local Ethereum network for development.
|
||||
|
||||
## Install Semaphore packages
|
||||
|
||||
Semaphore provides contracts, JavaScript libraries and an Hardhat plugin for developers building zero-knowledge applications.
|
||||
Semaphore provides contracts, JavaScript libraries and a Hardhat plugin for developers building zero-knowledge applications.
|
||||
|
||||
- `@semaphore-protocol/contracts` provides contracts to manage groups and verify Semaphore proofs on-chain.
|
||||
- JavaScript libraries help developers build zero-knowledge applications.
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"@docusaurus/core": "3.5.2",
|
||||
"@docusaurus/preset-classic": "3.5.2",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"@svgr/webpack": "^5.5.0",
|
||||
"clsx": "^1.2.1",
|
||||
"docusaurus-plugin-sass": "^0.2.5",
|
||||
|
||||
@@ -12,6 +12,6 @@ as well as relevant circuits in
|
||||
which the Semaphore zk-SNARK uses.
|
||||
|
||||
The summary of the audit results can be found
|
||||
[here](https://github.com/appliedzkp/semaphore/tree/master/audit). After three
|
||||
[here](https://github.com/semaphore-protocol/semaphore/blob/main/apps/docs/versioned_docs/version-V1/audit.md). After three
|
||||
rounds of fixes, all security and performance issues were fixed, and the few
|
||||
remaining issues are minor and do not affect security.
|
||||
|
||||
@@ -121,7 +121,7 @@ authenticity of the signal and prevents front-running attacks.
|
||||
|
||||
## Cryptographic primitives
|
||||
|
||||
Semaphore uses MiMC for the Merkle tree, Pedersen commmitments for the identity
|
||||
Semaphore uses MiMC for the Merkle tree, Pedersen commitments for the identity
|
||||
commitments, Blake2 for the nullifiers hash, and EdDSA for the signature.
|
||||
|
||||
MiMC is a relatively new hash function. We use the recommended MiMC
|
||||
|
||||
@@ -145,7 +145,7 @@ Returns `false` otherwise.
|
||||
|
||||
**`signMsg(privKey: EddsaPrivateKey, msg: SnarkBigInt): EdDSAMiMcSpongeSignature)`**
|
||||
|
||||
Encapsualtes `circomlib.eddsa.signMiMCSponge` to sign a message `msg` using private key `privKey`.
|
||||
Encapsulates `circomlib.eddsa.signMiMCSponge` to sign a message `msg` using private key `privKey`.
|
||||
|
||||
**`verifySignature(msg: SnarkBigInt, signature: EdDSAMiMcSpongeSignature, pubKey: EddsaPublicKey)`: boolean**
|
||||
|
||||
@@ -190,7 +190,7 @@ const genWitness = async (
|
||||
- `circuit` is the output of `genCircuit()`.
|
||||
- `identity` is the `Identity` whose identity commitment you want to prove is
|
||||
in the set of registered identities.
|
||||
- `idCommitments` is an array of registered identity commmitments; i.e. the
|
||||
- `idCommitments` is an array of registered identity commitments; i.e. the
|
||||
leaves of the tree.
|
||||
- `treeDepth` is the number of levels which the Merkle tree used has
|
||||
- `externalNullifier` is the current external nullifier
|
||||
@@ -212,7 +212,7 @@ Only `witness` is essential to generate the proof; the other data is only
|
||||
useful for debugging and additional off-chain checks, such as verifying the
|
||||
signature and the Merkle tree root.
|
||||
|
||||
**`formatForVerifierContract = (proof: SnarkProof, publicSignals: SnarkPublicSignals`**
|
||||
**`formatForVerifierContract = (proof: SnarkProof, publicSignals: SnarkPublicSignals)`**
|
||||
|
||||
Converts the data in `proof` and `publicSignals` to strings and rearranges
|
||||
elements of `proof.pi_b` so that `snarkjs`'s `verifier.sol` will accept it.
|
||||
|
||||
@@ -55,7 +55,7 @@ In sum, Semaphore provides the ability to:
|
||||
### External nullifiers
|
||||
|
||||
Think of an external nullifier as a voting booth where each user may only cast
|
||||
one vote. If they try to cast a second vote a the same booth, that vote is
|
||||
one vote. If they try to cast a second vote at the same booth, that vote is
|
||||
invalid.
|
||||
|
||||
An external nullifier is any 29-byte value. Semaphore always starts with one
|
||||
@@ -89,7 +89,7 @@ An anonymous voting app would be configured differently:
|
||||
| ----------------------------------- | ------------------------ |
|
||||
| The hash of the respondent's answer | The hash of the question |
|
||||
|
||||
This allows any user to vote with an arbitary response (e.g. yes, no, or maybe)
|
||||
This allows any user to vote with an arbitrary response (e.g. yes, no, or maybe)
|
||||
to any question. The user, however, can only vote once per question.
|
||||
|
||||
## About the code
|
||||
|
||||
@@ -9,7 +9,7 @@ Site owners publish _subgraphs_ that expose site data for anyone to query.
|
||||
Semaphore's subgraph allows you to retrieve data from the [`Semaphore.sol`](https://github.com/semaphore-protocol/semaphore/tree/v2.6.1/packages/contracts/Semaphore.sol) smart contract.
|
||||
|
||||
:::tip
|
||||
The Graph protocol uses the [GraphQL](https://graphql.org/) query lanaguage. For examples, see the [GraphQL API documentation](https://thegraph.com/docs/developer/graphql-api). Visit the [subgraph repository](https://github.com/semaphore-protocol/subgraph) to see the list of Semaphore subgraphs.
|
||||
The Graph protocol uses the [GraphQL](https://graphql.org/) query language. For examples, see the [GraphQL API documentation](https://thegraph.com/docs/developer/graphql-api). Visit the [subgraph repository](https://github.com/semaphore-protocol/subgraph) to see the list of Semaphore subgraphs.
|
||||
:::
|
||||
|
||||
## Schema
|
||||
|
||||
@@ -20,7 +20,7 @@ To prevent fraud, the owner should keep their private key secret.
|
||||
|
||||
## Install package
|
||||
|
||||
In your code, use the [`@semaphore-protocol/identity`](https://github.com/semaphore-protocol/semaphore/tree/main/packages/identity) package to manage Semaphore identites.
|
||||
In your code, use the [`@semaphore-protocol/identity`](https://github.com/semaphore-protocol/semaphore/tree/main/packages/identity) package to manage Semaphore identities.
|
||||
|
||||
<Tabs
|
||||
defaultValue="npm"
|
||||
|
||||
@@ -79,7 +79,7 @@ const group = new Group(members)
|
||||
|
||||
Each proof requires a [scope](/glossary#scope), on which each user may only generate one valid proof. The scope, together with the user's private key, is used to generate the nullifier, which is the value you can actually use to check whether a proof with that scope has already been generated by that user. In a voting application where double-voting must be prevented, the scope could be the ballot id, or the Merkle root of the group.
|
||||
|
||||
### 4. Generate the anomymous message
|
||||
### 4. Generate the anonymous message
|
||||
|
||||
Finally, you can generate the proof with the anonymous message using the `generateProof` function. For example:
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
## Networks
|
||||
|
||||
You can access any subgraph supported by Semaphore with the following URL: https://api.studio.thegraph.com/query/14377/semaphore-<network-name>/v4.1.0.
|
||||
You can access any subgraph supported by Semaphore with the following URL: `https://api.studio.thegraph.com/query/14377/semaphore-<network-name>/v4.2.0`.
|
||||
|
||||
Supported networks:
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ export default function Build() {
|
||||
url: "https://github.com/semaphore-protocol/boilerplate",
|
||||
details: [
|
||||
"Begin your projects with a ready-to-use example template",
|
||||
"Create identity, join group, send anonmous feedback",
|
||||
"Create identity, join group, send anonymous feedback",
|
||||
"Easily modify to align with specific project goals"
|
||||
]
|
||||
},
|
||||
@@ -133,7 +133,7 @@ export default function Build() {
|
||||
</VStack>
|
||||
</Flex>
|
||||
|
||||
<Box position="relative" w={{ base: "full", xl: "727px" }} h="630" overflow="hidden">
|
||||
<Box position="relative" w={{ base: "full", xl: "727px" }} h="630px" overflow="hidden">
|
||||
<Image
|
||||
src="https://semaphore.cedoor.dev/flower-shadow.jpg"
|
||||
alt=""
|
||||
|
||||
@@ -287,7 +287,7 @@ export default function Home() {
|
||||
Upcoming Events
|
||||
</Heading>
|
||||
|
||||
<VStack align="left" spacing="10" maxH="600" overflowY="auto">
|
||||
<VStack align="left" spacing="10" maxH="600px" overflowY="auto">
|
||||
{events.map((event) => (
|
||||
<Link href={event.link} key={event.name} isExternal>
|
||||
<VStack align="left">
|
||||
|
||||
@@ -10,5 +10,11 @@
|
||||
"date": "Nov 12-15, 2024",
|
||||
"description": "Semaphore team will deliver an in-person talk and run workshops.",
|
||||
"link": "https://devcon.org/en/"
|
||||
},
|
||||
{
|
||||
"name": "ETHIndia",
|
||||
"date": "Dec 6-8, 2024",
|
||||
"description": "Semaphore team will deliver an in-person talk on Semaphore and Bandada.",
|
||||
"link": "https://ethindia.co"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/circuits",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore Circom circuits to generate zero-knowledge proofs.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
13
packages/cli-template-contracts-foundry/.editorconfig
Normal file
13
packages/cli-template-contracts-foundry/.editorconfig
Normal file
@@ -0,0 +1,13 @@
|
||||
#root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
max_line_length = 120
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
3
packages/cli-template-contracts-foundry/.env.example
Normal file
3
packages/cli-template-contracts-foundry/.env.example
Normal file
@@ -0,0 +1,3 @@
|
||||
SEPOLIA_RPC_URL=
|
||||
PRIVATE_KEY=
|
||||
ETHERSCAN_API_KEY=
|
||||
43
packages/cli-template-contracts-foundry/.gitignore
vendored
Normal file
43
packages/cli-template-contracts-foundry/.gitignore
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
node_modules
|
||||
.env
|
||||
|
||||
# solidity-coverage files
|
||||
/coverage
|
||||
/coverage.json
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
.DS_Store
|
||||
|
||||
# yarn v3
|
||||
.pnp.*
|
||||
.pnp.js
|
||||
.yarn/*
|
||||
!.yarn/patches
|
||||
!.yarn/plugins
|
||||
!.yarn/releases
|
||||
!.yarn/sdks
|
||||
!.yarn/versions
|
||||
|
||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
||||
|
||||
# Foundry artifact
|
||||
cache/
|
||||
out/
|
||||
|
||||
# artifact for deploying on local Anvil node
|
||||
**/31337
|
||||
|
||||
30
packages/cli-template-contracts-foundry/.prettierignore
Normal file
30
packages/cli-template-contracts-foundry/.prettierignore
Normal file
@@ -0,0 +1,30 @@
|
||||
# dependencies
|
||||
node_modules
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
.yarn
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# testing
|
||||
coverage
|
||||
coverage.json
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Foundry artifact
|
||||
cache/
|
||||
out/
|
||||
|
||||
# artifact for deploying on local Anvil node
|
||||
**/31337
|
||||
6
packages/cli-template-contracts-foundry/.prettierrc.json
Normal file
6
packages/cli-template-contracts-foundry/.prettierrc.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"semi": false,
|
||||
"arrowParens": "always",
|
||||
"trailingComma": "none",
|
||||
"plugins": ["prettier-plugin-solidity"]
|
||||
}
|
||||
6
packages/cli-template-contracts-foundry/.solhint.json
Normal file
6
packages/cli-template-contracts-foundry/.solhint.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"extends": "solhint:recommended",
|
||||
"rules": {
|
||||
"func-visibility": ["error", { "ignoreConstructors": true }]
|
||||
}
|
||||
}
|
||||
893
packages/cli-template-contracts-foundry/.yarn/releases/yarn-4.1.0.cjs
vendored
Executable file
893
packages/cli-template-contracts-foundry/.yarn/releases/yarn-4.1.0.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
7
packages/cli-template-contracts-foundry/.yarnrc.yml
Normal file
7
packages/cli-template-contracts-foundry/.yarnrc.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
compressionLevel: mixed
|
||||
|
||||
enableGlobalCache: false
|
||||
|
||||
nodeLinker: node-modules
|
||||
|
||||
yarnPath: .yarn/releases/yarn-4.1.0.cjs
|
||||
113
packages/cli-template-contracts-foundry/README.md
Normal file
113
packages/cli-template-contracts-foundry/README.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Semaphore Foundry Template
|
||||
|
||||
This project demonstrates a basic Semaphore use case. It comes with a sample contract, a test for that contract and a sample script that deploys that contract.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
This project requires [**Foundry**](https://getfoundry.sh/), and thus a [**Rust environment**](https://www.rust-lang.org/), installed in the machine.
|
||||
|
||||
## Install
|
||||
|
||||
### Install dependencies
|
||||
|
||||
```bash
|
||||
yarn
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Compile contracts
|
||||
|
||||
```bash
|
||||
yarn compile
|
||||
```
|
||||
|
||||
### Test contracts
|
||||
|
||||
```bash
|
||||
yarn test
|
||||
```
|
||||
|
||||
You can also generate a test coverage report:
|
||||
|
||||
```bash
|
||||
yarn test:coverage
|
||||
```
|
||||
|
||||
Or a test gas report:
|
||||
|
||||
```bash
|
||||
yarn test:gas-report
|
||||
```
|
||||
|
||||
You can also start a local [Anvil node](https://book.getfoundry.sh/anvil/) with Semaphore and Feedback contracts deployed on it with:
|
||||
|
||||
```bash
|
||||
yarn dev
|
||||
```
|
||||
|
||||
### Code quality and formatting
|
||||
|
||||
Run [solhint](https://github.com/protofire/solhint) to analyze the code and catch bugs:
|
||||
|
||||
```bash
|
||||
yarn lint
|
||||
```
|
||||
|
||||
Run [Prettier](https://prettier.io/) to check formatting rules:
|
||||
|
||||
```bash
|
||||
yarn prettier
|
||||
```
|
||||
|
||||
Or to automatically format the code:
|
||||
|
||||
```bash
|
||||
yarn prettier:write
|
||||
```
|
||||
|
||||
### Integrating with Semaphore Boilerplate
|
||||
|
||||
You can also integrate this project with [Semaphore Boilerplate](https://github.com/semaphore-protocol/boilerplate), using this project as the contract end and connecting with Boilerplate front end.
|
||||
|
||||
1. In `cli-template-contracts-foundry` package directory, run:
|
||||
|
||||
```sh
|
||||
yarn install
|
||||
yarn dev
|
||||
```
|
||||
|
||||
After running `yarn dev`, notice the output of
|
||||
|
||||
```sh
|
||||
# ...
|
||||
# ...
|
||||
|
||||
== Return ==
|
||||
feedbackAddr: address 0x6f1AFCA8BCA87bF02091AF6187a5002802f9FB31
|
||||
semaphoreAddr: address 0xb730ce6CAE3FB706e83E4E00dFA31623966570eB
|
||||
semaphoreVerifierAddr: address 0xE2c114f548bEf410eaCe04D0390b61cc963df295
|
||||
|
||||
# ...
|
||||
# ...
|
||||
```
|
||||
|
||||
2. Now, with another terminal, clone Semaphore Boilerplate down:
|
||||
|
||||
```sh
|
||||
# Clone Semaphore boilerplate and build dependencies
|
||||
git clone https://github.com/semaphore-protocol/boilerplate.git
|
||||
cd boilerplate
|
||||
yarn install
|
||||
|
||||
# Use the sample .env.example
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
3. Open the file `apps/web-app/.env.development`. Modify the values of `NEXT_PUBLIC_FEEDBACK_CONTRACT_ADDRESS` and `NEXT_PUBLIC_SEMAPHORE_CONTRACT_ADDRESS` with **feedbackAddr** and **semaphoreAddr** values shown in step 1.
|
||||
|
||||
4. Run the Boilerplate front end:
|
||||
|
||||
```sh
|
||||
yarn dev:web-app
|
||||
```
|
||||
15
packages/cli-template-contracts-foundry/foundry.toml
Normal file
15
packages/cli-template-contracts-foundry/foundry.toml
Normal file
@@ -0,0 +1,15 @@
|
||||
[profile.default]
|
||||
src = "src"
|
||||
out = "out"
|
||||
script = "script"
|
||||
libs = ["node_modules"]
|
||||
allow_paths = ["*", "../.."]
|
||||
|
||||
[rpc_endpoints]
|
||||
anvil = "http://127.0.0.1:8545"
|
||||
# sepolia = "${SEPOLIA_RPC_URL}"
|
||||
|
||||
[etherscan]
|
||||
# sepolia = { key = "${ETHERSCAN_API_KEY}" }
|
||||
|
||||
# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options
|
||||
44
packages/cli-template-contracts-foundry/package.json
Normal file
44
packages/cli-template-contracts-foundry/package.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-contracts-foundry",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore Foundry template.",
|
||||
"license": "Unlicense",
|
||||
"devDependencies": {
|
||||
"@semaphore-protocol/contracts": "4.8.1",
|
||||
"@zk-kit/lean-imt.sol": "2.0.0",
|
||||
"forge-std": "github:foundry-rs/forge-std#v1.9.4",
|
||||
"poseidon-solidity": "0.0.5",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-solidity": "^1.3.1",
|
||||
"solhint": "^4.1.1",
|
||||
"wait-on": "^8.0.1"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "anvil & (wait-on tcp:8545 && forge script script/DeployFeedback.s.sol --rpc-url anvil --broadcast --sender 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266)",
|
||||
"compile": "forge build",
|
||||
"clean": "forge clean",
|
||||
"test": "forge test -vvv",
|
||||
"test:report-gas": "forge test --gas-report",
|
||||
"test:coverage": "forge coverage",
|
||||
"lint": "yarn solhint \"{script,src,test}/**/*.sol\"",
|
||||
"prettier": "prettier -c \"**/*.{json,md,svg,yml,sol}\"",
|
||||
"prettier:write": "prettier -w \"**/*.{json,md,svg,yml,sol}\"",
|
||||
"check": "yarn test & yarn lint & yarn prettier",
|
||||
"prepublish": "tar -czf files.tgz .gitignore .yarn .yarnrc.yml"
|
||||
},
|
||||
"files": [
|
||||
"src",
|
||||
"test",
|
||||
"script",
|
||||
"package.json",
|
||||
"foundry.toml",
|
||||
"remappings.txt",
|
||||
"README.md",
|
||||
"files.tgz",
|
||||
".editorconfig",
|
||||
".env.example",
|
||||
".prettierignore",
|
||||
".prettierrc.json"
|
||||
],
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
4
packages/cli-template-contracts-foundry/remappings.txt
Normal file
4
packages/cli-template-contracts-foundry/remappings.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
@semaphore/contracts/=./node_modules/@semaphore-protocol/contracts/
|
||||
@zk-kit/lean-imt.sol/=./node_modules/@zk-kit/lean-imt.sol/
|
||||
forge-std/=./node_modules/forge-std/src/
|
||||
poseidon-solidity/=./node_modules/poseidon-solidity/
|
||||
@@ -0,0 +1,37 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.23;
|
||||
|
||||
import {Feedback} from "../src/Feedback.sol";
|
||||
import {Semaphore} from "@semaphore/contracts/Semaphore.sol";
|
||||
import {SemaphoreVerifier} from "@semaphore/contracts/base/SemaphoreVerifier.sol";
|
||||
import {ISemaphoreVerifier} from "@semaphore/contracts/interfaces/ISemaphoreVerifier.sol";
|
||||
import {Script} from "forge-std/Script.sol";
|
||||
|
||||
// Passing SALT parameter to use CREATE2 for deterministic contract address
|
||||
bytes32 constant SALT = bytes32(0);
|
||||
|
||||
contract DeployFeedback is Script {
|
||||
function run() external returns (address feedbackAddr, address semaphoreAddr, address semaphoreVerifierAddr) {
|
||||
// Default to use the first test user private key of anvil node
|
||||
uint256 deployerPrivateKey = vm.envOr(
|
||||
"PRIVATE_KEY",
|
||||
uint256(0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80)
|
||||
);
|
||||
|
||||
vm.startBroadcast(deployerPrivateKey);
|
||||
|
||||
// Deploy SemaphoreVerifier
|
||||
SemaphoreVerifier semaphoreVerifierContract = new SemaphoreVerifier{salt: SALT}();
|
||||
semaphoreVerifierAddr = address(semaphoreVerifierContract);
|
||||
|
||||
// Deploy Semaphore
|
||||
Semaphore semaphoreContract = new Semaphore{salt: SALT}(ISemaphoreVerifier(semaphoreVerifierAddr));
|
||||
semaphoreAddr = address(semaphoreContract);
|
||||
|
||||
// Deploy Feedback
|
||||
Feedback feedbackContract = new Feedback{salt: SALT}(semaphoreAddr);
|
||||
feedbackAddr = address(feedbackContract);
|
||||
|
||||
vm.stopBroadcast();
|
||||
}
|
||||
}
|
||||
39
packages/cli-template-contracts-foundry/src/Feedback.sol
Normal file
39
packages/cli-template-contracts-foundry/src/Feedback.sol
Normal file
@@ -0,0 +1,39 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.23;
|
||||
|
||||
import {ISemaphore} from "@semaphore/contracts/interfaces/ISemaphore.sol";
|
||||
|
||||
contract Feedback {
|
||||
ISemaphore public semaphore;
|
||||
|
||||
uint256 public groupId;
|
||||
|
||||
constructor(address semaphoreAddress) {
|
||||
semaphore = ISemaphore(semaphoreAddress);
|
||||
|
||||
groupId = semaphore.createGroup();
|
||||
}
|
||||
|
||||
function joinGroup(uint256 identityCommitment) external {
|
||||
semaphore.addMember(groupId, identityCommitment);
|
||||
}
|
||||
|
||||
function sendFeedback(
|
||||
uint256 merkleTreeDepth,
|
||||
uint256 merkleTreeRoot,
|
||||
uint256 nullifier,
|
||||
uint256 feedback,
|
||||
uint256[8] calldata points
|
||||
) external {
|
||||
ISemaphore.SemaphoreProof memory proof = ISemaphore.SemaphoreProof(
|
||||
merkleTreeDepth,
|
||||
merkleTreeRoot,
|
||||
nullifier,
|
||||
feedback,
|
||||
groupId,
|
||||
points
|
||||
);
|
||||
|
||||
semaphore.validateProof(groupId, proof);
|
||||
}
|
||||
}
|
||||
74
packages/cli-template-contracts-foundry/test/Feedback.t.sol
Normal file
74
packages/cli-template-contracts-foundry/test/Feedback.t.sol
Normal file
@@ -0,0 +1,74 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.23;
|
||||
|
||||
import {Test} from "forge-std/Test.sol";
|
||||
import {ISemaphore} from "@semaphore/contracts/interfaces/ISemaphore.sol";
|
||||
import {ISemaphoreGroups} from "@semaphore/contracts/interfaces/ISemaphoreGroups.sol";
|
||||
import {Feedback} from "../src/Feedback.sol";
|
||||
import {DeployFeedback} from "../script/DeployFeedback.s.sol";
|
||||
|
||||
contract FeedbackTest is Test {
|
||||
event MemberAdded(uint256 indexed groupId, uint256 index, uint256 identityCommitment, uint256 merkleTreeRoot);
|
||||
|
||||
Feedback internal feedbackContract;
|
||||
ISemaphore internal semaphoreContract;
|
||||
ISemaphoreGroups internal semaphoreGroups;
|
||||
uint256 internal groupId;
|
||||
|
||||
function setUp() external {
|
||||
DeployFeedback deployFeedback = new DeployFeedback();
|
||||
(address feedbackAddress, address semaphoreAddress, ) = deployFeedback.run();
|
||||
feedbackContract = Feedback(feedbackAddress);
|
||||
semaphoreContract = ISemaphore(semaphoreAddress);
|
||||
semaphoreGroups = ISemaphoreGroups(semaphoreAddress);
|
||||
groupId = feedbackContract.groupId();
|
||||
}
|
||||
|
||||
function testGroupCreatedInConstructor() public view {
|
||||
uint256 groupCount = semaphoreContract.groupCounter();
|
||||
assertEq(groupCount, 1);
|
||||
}
|
||||
|
||||
function testJoinGroup() public {
|
||||
// The commitment below is generated with private key of the first account in Anvil
|
||||
uint256 identityCommitment = 15072455385723004728391568434269917452175057560864330595979104241296826134229;
|
||||
|
||||
// Test: expect an event emitted. Check for all event topics and data
|
||||
vm.expectEmit(true, true, true, true);
|
||||
emit MemberAdded(groupId, 0, identityCommitment, identityCommitment);
|
||||
|
||||
feedbackContract.joinGroup(identityCommitment);
|
||||
}
|
||||
|
||||
function testSendFeedback() public {
|
||||
uint256[] memory commitments = new uint256[](2);
|
||||
commitments[0] = uint256(11005642493773047649202648265396872197147567800455247120861783398111750817516);
|
||||
commitments[1] = uint256(14473821761500463903284857947161896352613497175238126022206384102438097355186);
|
||||
|
||||
for (uint256 i = 0; i < commitments.length; ++i) {
|
||||
feedbackContract.joinGroup(commitments[i]);
|
||||
}
|
||||
|
||||
uint256 merkleTreeDepth = 1;
|
||||
uint256 merkleTreeRoot = semaphoreGroups.getMerkleTreeRoot(groupId);
|
||||
uint256 feedback = uint256(bytes32("Hello World"));
|
||||
|
||||
// These values are computed by running through @semaphore-protocol/circuits
|
||||
uint256 nullifier = 14622092170088252518938850323258916742048811914834592843410744760450844885096;
|
||||
uint256[8] memory points = [
|
||||
2004484873491928515306456072357737929124240734208600886081152392890959117520,
|
||||
21291026142870585364296731900941597996672838511394659364623185352043543529323,
|
||||
4657264777014371046112557309523098953851041383509685591373847255581509612788,
|
||||
6904165961903336246592681066375875983213983935764940579845010085396463328555,
|
||||
1952750241178995674697344628236393389729638396609772141225880353616301956443,
|
||||
106937615136633409337870509099767689510837462832227699340906789167349502398,
|
||||
13080722838047436988558418790480431472161933638137155324683844808531903905810,
|
||||
2547578906197450986657523555784319153413167960139250957065929818900731634820
|
||||
];
|
||||
|
||||
vm.expectEmit(true, true, true, true);
|
||||
emit ISemaphore.ProofValidated(groupId, merkleTreeDepth, merkleTreeRoot, nullifier, feedback, groupId, points);
|
||||
|
||||
feedbackContract.sendFeedback(merkleTreeDepth, merkleTreeRoot, nullifier, feedback, points);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-contracts-hardhat",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore Hardhat template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
@@ -41,9 +41,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.7.0",
|
||||
"@semaphore-protocol/hardhat": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/core": "4.8.1",
|
||||
"@semaphore-protocol/hardhat": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -59,7 +59,7 @@
|
||||
"eslint-config-airbnb-typescript": "^17.1.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"ethers": "^6.4.0",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat": "^2.20.1",
|
||||
"hardhat-gas-reporter": "^1.0.8",
|
||||
"prettier": "^3.2.5",
|
||||
@@ -71,7 +71,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.7.0"
|
||||
"@semaphore-protocol/contracts": "4.8.1"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.7.0",
|
||||
"@semaphore-protocol/hardhat": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/core": "4.8.1",
|
||||
"@semaphore-protocol/hardhat": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -38,7 +38,7 @@
|
||||
"eslint-config-airbnb-typescript": "^17.1.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"ethers": "^6.4.0",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat": "^2.20.1",
|
||||
"hardhat-gas-reporter": "^1.0.8",
|
||||
"prettier": "^3.2.5",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.7.0"
|
||||
"@semaphore-protocol/contracts": "4.8.1"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.7.0",
|
||||
"@semaphore-protocol/data": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"ethers": "^6.11.1",
|
||||
"@semaphore-protocol/core": "4.8.1",
|
||||
"@semaphore-protocol/data": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"ethers": "^6.13.4",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
"react": "^18",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-ethers",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore Hardhat + Next.js + SemaphoreEthers template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
|
||||
"@nomicfoundation/hardhat-toolbox": "^4.0.0",
|
||||
"@nomicfoundation/hardhat-verify": "^2.0.0",
|
||||
"@semaphore-protocol/core": "4.7.0",
|
||||
"@semaphore-protocol/hardhat": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/core": "4.8.1",
|
||||
"@semaphore-protocol/hardhat": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -38,7 +38,7 @@
|
||||
"eslint-config-airbnb-typescript": "^17.1.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"ethers": "^6.4.0",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat": "^2.20.1",
|
||||
"hardhat-gas-reporter": "^1.0.8",
|
||||
"prettier": "^3.2.5",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.7.0"
|
||||
"@semaphore-protocol/contracts": "4.8.1"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.7.0",
|
||||
"@semaphore-protocol/data": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"ethers": "^6.11.1",
|
||||
"@semaphore-protocol/core": "4.8.1",
|
||||
"@semaphore-protocol/data": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"ethers": "^6.13.4",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
"react": "^18",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-subgraph",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore Hardhat + Next.js + SemaphoreSubgraph template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli",
|
||||
"type": "module",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A command line tool to set up your Semaphore project and get group data.",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
@@ -41,8 +41,8 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/data": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/data": "4.8.1",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"axios": "^1.6.7",
|
||||
"boxen": "^7.1.1",
|
||||
"chalk": "^5.3.0",
|
||||
|
||||
@@ -32,6 +32,10 @@ const supportedTemplates = [
|
||||
{
|
||||
value: "contracts-hardhat",
|
||||
name: "Hardhat"
|
||||
},
|
||||
{
|
||||
value: "contracts-foundry",
|
||||
name: "Foundry"
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/contracts",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Semaphore contracts to manage groups and broadcast anonymous signals.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"@types/ncp": "^2",
|
||||
"@types/node": "^20.10.7",
|
||||
"chai": "^4.2.0",
|
||||
"ethers": "^6.4.0",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat": "^2.19.4",
|
||||
"hardhat-gas-reporter": "^1.0.8",
|
||||
"ncp": "^2.0.0",
|
||||
|
||||
@@ -463,9 +463,62 @@ describe("Semaphore", () => {
|
||||
|
||||
const proof = await generateProof(identity, group, message, group.root, merkleTreeDepth)
|
||||
|
||||
return { semaphoreContract, groupId, proof }
|
||||
return { semaphoreContract, groupId, proof, accountAddresses }
|
||||
}
|
||||
|
||||
it("Should insert members,remove member,update member and verifyProof", async () => {
|
||||
const { semaphoreContract, accountAddresses } = await loadFixture(deployValidateProofFixture)
|
||||
|
||||
const identity = new Identity("0")
|
||||
const members = Array.from({ length: 3 }, (_, i) => new Identity(i.toString())).map(
|
||||
({ commitment }) => commitment
|
||||
)
|
||||
const group = new Group(members)
|
||||
|
||||
// Create a group and add 3 members.
|
||||
await semaphoreContract["createGroup(address)"](accountAddresses[0])
|
||||
|
||||
const groupId = 2
|
||||
|
||||
// Adding members to group
|
||||
|
||||
await semaphoreContract.addMembers(groupId, members)
|
||||
|
||||
// Remove the third member.
|
||||
{
|
||||
group.removeMember(2)
|
||||
const { siblings } = group.generateMerkleProof(2)
|
||||
|
||||
await semaphoreContract.removeMember(groupId, members[2], siblings)
|
||||
}
|
||||
|
||||
// Update the second member.
|
||||
{
|
||||
group.updateMember(1, members[2])
|
||||
const { siblings } = group.generateMerkleProof(1)
|
||||
|
||||
await semaphoreContract.updateMember(groupId, members[1], members[2], siblings)
|
||||
}
|
||||
|
||||
// Validate a proof.
|
||||
|
||||
const proof = await generateProof(identity, group, 42, group.root)
|
||||
|
||||
const transaction = await semaphoreContract.validateProof(groupId, proof)
|
||||
|
||||
await expect(transaction)
|
||||
.to.emit(semaphoreContract, "ProofValidated")
|
||||
.withArgs(
|
||||
groupId,
|
||||
proof.merkleTreeDepth,
|
||||
proof.merkleTreeRoot,
|
||||
proof.nullifier,
|
||||
proof.message,
|
||||
proof.merkleTreeRoot,
|
||||
proof.points
|
||||
)
|
||||
})
|
||||
|
||||
it("Should throw an exception if the proof is not valid", async () => {
|
||||
const { semaphoreContract, groupId, proof } = await loadFixture(deployValidateProofFixture)
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/core",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "Core library for the essential Semaphore features.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -42,8 +42,8 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/group": "4.7.0",
|
||||
"@semaphore-protocol/identity": "4.7.0",
|
||||
"@semaphore-protocol/proof": "4.7.0"
|
||||
"@semaphore-protocol/group": "4.8.1",
|
||||
"@semaphore-protocol/identity": "4.8.1",
|
||||
"@semaphore-protocol/proof": "4.8.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/data",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A library for querying Semaphore smart contract.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -37,8 +37,8 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"axios": "1.6.6",
|
||||
"ethers": "6.11.0"
|
||||
"ethers": "6.13.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,13 +58,13 @@ export default class SemaphoreEthers {
|
||||
options.address ??= address
|
||||
options.startBlock ??= startBlock
|
||||
} else {
|
||||
if (options.address === undefined) {
|
||||
throw new Error(`Network '${networkOrEthereumURL}' needs a Semaphore contract address`)
|
||||
}
|
||||
|
||||
options.startBlock ??= 0
|
||||
}
|
||||
|
||||
if (options.address === undefined) {
|
||||
throw new Error(`Network '${networkOrEthereumURL}' needs a Semaphore contract address`)
|
||||
}
|
||||
|
||||
let provider: Provider
|
||||
|
||||
switch (options.provider) {
|
||||
|
||||
@@ -12,5 +12,5 @@ export default function getURL(supportedNetwork: SupportedNetwork): string {
|
||||
throw new TypeError(`Network '${supportedNetwork}' is not supported`)
|
||||
}
|
||||
|
||||
return `https://api.studio.thegraph.com/query/14377/semaphore-${supportedNetwork}/v4.1.0`
|
||||
return `https://api.studio.thegraph.com/query/14377/semaphore-${supportedNetwork}/v4.2.0`
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/group",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A library to create and manage Semaphore groups.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -36,7 +36,7 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@zk-kit/lean-imt": "2.2.1",
|
||||
"@zk-kit/lean-imt": "2.2.2",
|
||||
"@zk-kit/utils": "1.2.1",
|
||||
"poseidon-lite": "0.3.0"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/hardhat",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A Hardhat plugin to deploy Semaphore contracts.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -41,8 +41,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@nomicfoundation/hardhat-ethers": "^3.0.0",
|
||||
"@semaphore-protocol/contracts": "4.7.0",
|
||||
"ethers": "^6.4.0",
|
||||
"@semaphore-protocol/contracts": "4.8.1",
|
||||
"ethers": "^6.13.4",
|
||||
"hardhat-dependency-compiler": "^1.1.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/identity",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A library to create Semaphore identities.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/proof",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A library to generate and verify Semaphore proofs.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -47,14 +47,14 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@semaphore-protocol/group": "4.7.0",
|
||||
"@semaphore-protocol/identity": "4.7.0"
|
||||
"@semaphore-protocol/group": "4.8.1",
|
||||
"@semaphore-protocol/identity": "4.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.7.0",
|
||||
"@semaphore-protocol/utils": "4.8.1",
|
||||
"@zk-kit/artifacts": "1.8.0",
|
||||
"@zk-kit/utils": "1.2.1",
|
||||
"ethers": "6.10.0",
|
||||
"ethers": "6.13.4",
|
||||
"snarkjs": "0.7.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/utils",
|
||||
"version": "4.7.0",
|
||||
"version": "4.8.1",
|
||||
"description": "A library to provide utility functions to the other Semaphore packages.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -54,6 +54,6 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ethers": "^6.11.1"
|
||||
"ethers": "^6.13.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ const EXCLUDE_PKGS = [
|
||||
"cli-template-contracts-hardhat",
|
||||
"cli-template-monorepo-ethers",
|
||||
"cli-template-monorepo-subgraph",
|
||||
"cli-template-contracts-foundry",
|
||||
"contracts",
|
||||
"core",
|
||||
"hardhat"
|
||||
|
||||
252
yarn.lock
252
yarn.lock
@@ -5,13 +5,6 @@ __metadata:
|
||||
version: 8
|
||||
cacheKey: 10
|
||||
|
||||
"@adraffy/ens-normalize@npm:1.10.0":
|
||||
version: 1.10.0
|
||||
resolution: "@adraffy/ens-normalize@npm:1.10.0"
|
||||
checksum: 10/5cdb5d2a9c9f8c0a71a7bb830967da0069cae1f1235cd41ae11147e4000f368f6958386e622cd4d52bf45c1ed3f8275056b387cba28902b83354e40ff323ecde
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@adraffy/ens-normalize@npm:1.10.1":
|
||||
version: 1.10.1
|
||||
resolution: "@adraffy/ens-normalize@npm:1.10.1"
|
||||
@@ -7326,6 +7319,21 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/cli-template-contracts-foundry@workspace:packages/cli-template-contracts-foundry":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/cli-template-contracts-foundry@workspace:packages/cli-template-contracts-foundry"
|
||||
dependencies:
|
||||
"@semaphore-protocol/contracts": "npm:4.8.1"
|
||||
"@zk-kit/lean-imt.sol": "npm:2.0.0"
|
||||
forge-std: "github:foundry-rs/forge-std#v1.9.4"
|
||||
poseidon-solidity: "npm:0.0.5"
|
||||
prettier: "npm:^3.2.5"
|
||||
prettier-plugin-solidity: "npm:^1.3.1"
|
||||
solhint: "npm:^4.1.1"
|
||||
wait-on: "npm:^8.0.1"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/cli-template-contracts-hardhat@workspace:packages/cli-template-contracts-hardhat":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/cli-template-contracts-hardhat@workspace:packages/cli-template-contracts-hardhat"
|
||||
@@ -7335,10 +7343,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.7.0"
|
||||
"@semaphore-protocol/core": "npm:4.7.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.8.1"
|
||||
"@semaphore-protocol/core": "npm:4.8.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -7354,7 +7362,7 @@ __metadata:
|
||||
eslint-config-airbnb-typescript: "npm:^17.1.0"
|
||||
eslint-config-prettier: "npm:^9.1.0"
|
||||
eslint-plugin-import: "npm:^2.29.1"
|
||||
ethers: "npm:^6.4.0"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.20.1"
|
||||
hardhat-gas-reporter: "npm:^1.0.8"
|
||||
prettier: "npm:^3.2.5"
|
||||
@@ -7388,8 +7396,8 @@ __metadata:
|
||||
resolution: "@semaphore-protocol/cli@workspace:packages/cli"
|
||||
dependencies:
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/data": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/data": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@types/figlet": "npm:^1.5.8"
|
||||
"@types/inquirer": "npm:^9.0.7"
|
||||
"@types/pacote": "npm:^11.1.8"
|
||||
@@ -7413,7 +7421,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/contracts@npm:4.7.0, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
"@semaphore-protocol/contracts@npm:4.8.1, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/contracts@workspace:packages/contracts/contracts"
|
||||
dependencies:
|
||||
@@ -7421,37 +7429,37 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/core@npm:4.7.0, @semaphore-protocol/core@workspace:^, @semaphore-protocol/core@workspace:packages/core":
|
||||
"@semaphore-protocol/core@npm:4.8.1, @semaphore-protocol/core@workspace:^, @semaphore-protocol/core@workspace:packages/core":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/core@workspace:packages/core"
|
||||
dependencies:
|
||||
"@semaphore-protocol/group": "npm:4.7.0"
|
||||
"@semaphore-protocol/identity": "npm:4.7.0"
|
||||
"@semaphore-protocol/proof": "npm:4.7.0"
|
||||
"@semaphore-protocol/group": "npm:4.8.1"
|
||||
"@semaphore-protocol/identity": "npm:4.8.1"
|
||||
"@semaphore-protocol/proof": "npm:4.8.1"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/data@npm:4.7.0, @semaphore-protocol/data@workspace:packages/data":
|
||||
"@semaphore-protocol/data@npm:4.8.1, @semaphore-protocol/data@workspace:packages/data":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/data@workspace:packages/data"
|
||||
dependencies:
|
||||
"@rollup/plugin-json": "npm:^6.1.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
axios: "npm:1.6.6"
|
||||
ethers: "npm:6.11.0"
|
||||
ethers: "npm:6.13.4"
|
||||
rimraf: "npm:^5.0.5"
|
||||
rollup: "npm:^4.12.0"
|
||||
rollup-plugin-cleanup: "npm:^3.2.1"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/group@npm:4.7.0, @semaphore-protocol/group@workspace:packages/group":
|
||||
"@semaphore-protocol/group@npm:4.8.1, @semaphore-protocol/group@workspace:packages/group":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/group@workspace:packages/group"
|
||||
dependencies:
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@zk-kit/lean-imt": "npm:2.2.1"
|
||||
"@zk-kit/lean-imt": "npm:2.2.2"
|
||||
"@zk-kit/utils": "npm:1.2.1"
|
||||
poseidon-lite: "npm:0.3.0"
|
||||
rimraf: "npm:^5.0.5"
|
||||
@@ -7460,14 +7468,14 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/hardhat@npm:4.7.0, @semaphore-protocol/hardhat@workspace:packages/hardhat":
|
||||
"@semaphore-protocol/hardhat@npm:4.8.1, @semaphore-protocol/hardhat@workspace:packages/hardhat":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/hardhat@workspace:packages/hardhat"
|
||||
dependencies:
|
||||
"@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/contracts": "npm:4.7.0"
|
||||
ethers: "npm:^6.4.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.8.1"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.19.4"
|
||||
hardhat-dependency-compiler: "npm:^1.1.3"
|
||||
rimraf: "npm:^5.0.5"
|
||||
@@ -7478,7 +7486,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/identity@npm:4.7.0, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
"@semaphore-protocol/identity@npm:4.8.1, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/identity@workspace:packages/identity"
|
||||
dependencies:
|
||||
@@ -7494,35 +7502,35 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/proof@npm:4.7.0, @semaphore-protocol/proof@workspace:packages/proof":
|
||||
"@semaphore-protocol/proof@npm:4.8.1, @semaphore-protocol/proof@workspace:packages/proof":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/proof@workspace:packages/proof"
|
||||
dependencies:
|
||||
"@rollup/plugin-alias": "npm:^5.1.0"
|
||||
"@rollup/plugin-json": "npm:^6.1.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@types/snarkjs": "npm:^0"
|
||||
"@zk-kit/artifacts": "npm:1.8.0"
|
||||
"@zk-kit/utils": "npm:1.2.1"
|
||||
ethers: "npm:6.10.0"
|
||||
ethers: "npm:6.13.4"
|
||||
rimraf: "npm:^5.0.5"
|
||||
rollup: "npm:^4.12.0"
|
||||
rollup-plugin-cleanup: "npm:^3.2.1"
|
||||
snarkjs: "npm:0.7.4"
|
||||
peerDependencies:
|
||||
"@semaphore-protocol/group": 4.7.0
|
||||
"@semaphore-protocol/identity": 4.7.0
|
||||
"@semaphore-protocol/group": 4.8.1
|
||||
"@semaphore-protocol/identity": 4.8.1
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/utils@npm:4.7.0, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
"@semaphore-protocol/utils@npm:4.8.1, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/utils@workspace:packages/utils"
|
||||
dependencies:
|
||||
"@rollup/plugin-json": "npm:^6.1.0"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
ethers: "npm:^6.11.1"
|
||||
ethers: "npm:^6.13.4"
|
||||
rimraf: "npm:^5.0.5"
|
||||
rollup: "npm:^4.12.0"
|
||||
rollup-plugin-cleanup: "npm:^3.2.1"
|
||||
@@ -8690,10 +8698,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:18.15.13":
|
||||
version: 18.15.13
|
||||
resolution: "@types/node@npm:18.15.13"
|
||||
checksum: 10/b9bbe923573797ef7c5fd2641a6793489e25d9369c32aeadcaa5c7c175c85b42eb12d6fe173f6781ab6f42eaa1ebd9576a419eeaa2a1ec810094adb8adaa9a54
|
||||
"@types/node@npm:22.7.5":
|
||||
version: 22.7.5
|
||||
resolution: "@types/node@npm:22.7.5"
|
||||
dependencies:
|
||||
undici-types: "npm:~6.19.2"
|
||||
checksum: 10/e8ba102f8c1aa7623787d625389be68d64e54fcbb76d41f6c2c64e8cf4c9f4a2370e7ef5e5f1732f3c57529d3d26afdcb2edc0101c5e413a79081449825c57ac
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -9589,12 +9599,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@zk-kit/lean-imt@npm:2.2.1":
|
||||
version: 2.2.1
|
||||
resolution: "@zk-kit/lean-imt@npm:2.2.1"
|
||||
"@zk-kit/lean-imt@npm:2.2.2":
|
||||
version: 2.2.2
|
||||
resolution: "@zk-kit/lean-imt@npm:2.2.2"
|
||||
dependencies:
|
||||
"@zk-kit/utils": "npm:1.2.1"
|
||||
checksum: 10/f57ba0ab15ff38609c352862b21023d370bd250c37c7ef15d4ee7724c8179a7fdd6647ac8a555e6cf523032d1c769fb9eae6de5364a97574224ff7de1a34f8a8
|
||||
checksum: 10/321e1964a4a0b7a19083c01743f5ee2a7311b1eede6775ce952a6fecf07d347dc4cdb250a557ff459bc6d3bff030e2a571f5116510c2392ca523f50c4d02311d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -10472,6 +10482,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"axios@npm:^1.7.7":
|
||||
version: 1.7.8
|
||||
resolution: "axios@npm:1.7.8"
|
||||
dependencies:
|
||||
follow-redirects: "npm:^1.15.6"
|
||||
form-data: "npm:^4.0.0"
|
||||
proxy-from-env: "npm:^1.1.0"
|
||||
checksum: 10/7ddcde188041ac55090186254b4025eb2af842be3cf615ce45393fd7f543c1eab0ad2fdd2017a5f6190695e3ecea73ee5e9c37f204854aec2698f9579046efdf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"axobject-query@npm:^3.2.1":
|
||||
version: 3.2.1
|
||||
resolution: "axobject-query@npm:3.2.1"
|
||||
@@ -14852,33 +14873,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ethers@npm:6.10.0":
|
||||
version: 6.10.0
|
||||
resolution: "ethers@npm:6.10.0"
|
||||
dependencies:
|
||||
"@adraffy/ens-normalize": "npm:1.10.0"
|
||||
"@noble/curves": "npm:1.2.0"
|
||||
"@noble/hashes": "npm:1.3.2"
|
||||
"@types/node": "npm:18.15.13"
|
||||
aes-js: "npm:4.0.0-beta.5"
|
||||
tslib: "npm:2.4.0"
|
||||
ws: "npm:8.5.0"
|
||||
checksum: 10/04fdd3f76ea93a8b45b2fe4d9c8e2bd0d688823faba672897dd19cc3303c202a166902fe6058004562f13aaecf9f77a9f70ff113f995e94107efef2457b016dd
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ethers@npm:6.11.0":
|
||||
version: 6.11.0
|
||||
resolution: "ethers@npm:6.11.0"
|
||||
"ethers@npm:6.13.4, ethers@npm:^6.13.4":
|
||||
version: 6.13.4
|
||||
resolution: "ethers@npm:6.13.4"
|
||||
dependencies:
|
||||
"@adraffy/ens-normalize": "npm:1.10.1"
|
||||
"@noble/curves": "npm:1.2.0"
|
||||
"@noble/hashes": "npm:1.3.2"
|
||||
"@types/node": "npm:18.15.13"
|
||||
"@types/node": "npm:22.7.5"
|
||||
aes-js: "npm:4.0.0-beta.5"
|
||||
tslib: "npm:2.4.0"
|
||||
ws: "npm:8.5.0"
|
||||
checksum: 10/c6e5964ceabf2d289f8ae5b16e634995375457a8c5b814ea54799b5a3c951668465adb9b6dda3aea559d9c4fe3faa8297a38651853b54a53de9448663a908f12
|
||||
tslib: "npm:2.7.0"
|
||||
ws: "npm:8.17.1"
|
||||
checksum: 10/221192fed93f6b0553f3e5e72bfd667d676220577d34ff854f677e955d6f608e60636a9c08b5d54039c532a9b9b7056384f0d7019eb6e111d53175806f896ac6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -14920,21 +14926,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ethers@npm:^6.11.1, ethers@npm:^6.4.0":
|
||||
version: 6.12.1
|
||||
resolution: "ethers@npm:6.12.1"
|
||||
dependencies:
|
||||
"@adraffy/ens-normalize": "npm:1.10.1"
|
||||
"@noble/curves": "npm:1.2.0"
|
||||
"@noble/hashes": "npm:1.3.2"
|
||||
"@types/node": "npm:18.15.13"
|
||||
aes-js: "npm:4.0.0-beta.5"
|
||||
tslib: "npm:2.4.0"
|
||||
ws: "npm:8.5.0"
|
||||
checksum: 10/2995766164292b531499764d319d753b1f4e1cd7ddb4f26c6557a26e42947d5642a4b3bbeace0b8bb398b909dc22fafa4f52d5190a9bb8180bebf2dd3d4d48a9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ethjs-unit@npm:0.1.6":
|
||||
version: 0.1.6
|
||||
resolution: "ethjs-unit@npm:0.1.6"
|
||||
@@ -15605,6 +15596,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"forge-std@github:foundry-rs/forge-std#v1.9.4":
|
||||
version: 1.9.4
|
||||
resolution: "forge-std@https://github.com/foundry-rs/forge-std.git#commit=1eea5bae12ae557d589f9f0f0edae2faa47cb262"
|
||||
checksum: 10/7076c68c066e3831963a485543816f3c0381b626c1e365e71f1c8ad28ef06265f6e49d7e1f37118064c93751c68971561dfaab2f77fad87b9c2e8901aa7bfe10
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"fork-ts-checker-webpack-plugin@npm:^6.5.0":
|
||||
version: 6.5.3
|
||||
resolution: "fork-ts-checker-webpack-plugin@npm:6.5.3"
|
||||
@@ -18983,6 +18981,19 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"joi@npm:^17.13.3":
|
||||
version: 17.13.3
|
||||
resolution: "joi@npm:17.13.3"
|
||||
dependencies:
|
||||
"@hapi/hoek": "npm:^9.3.0"
|
||||
"@hapi/topo": "npm:^5.1.0"
|
||||
"@sideway/address": "npm:^4.1.5"
|
||||
"@sideway/formula": "npm:^3.0.1"
|
||||
"@sideway/pinpoint": "npm:^2.0.0"
|
||||
checksum: 10/4c150db0c820c3a52f4a55c82c1fc5e144a5b5f4da9ffebc7339a15469d1a447ebb427ced446efcb9709ab56bd71a06c4c67c9381bc1b9f9ae63fc7c89209bdf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"joi@npm:^17.9.2":
|
||||
version: 17.13.1
|
||||
resolution: "joi@npm:17.13.1"
|
||||
@@ -21066,7 +21077,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"minimist@npm:^1.0.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6":
|
||||
"minimist@npm:^1.0.0, minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
|
||||
version: 1.2.8
|
||||
resolution: "minimist@npm:1.2.8"
|
||||
checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f
|
||||
@@ -21286,10 +21297,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.7.0"
|
||||
"@semaphore-protocol/core": "npm:4.7.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.8.1"
|
||||
"@semaphore-protocol/core": "npm:4.8.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -21305,7 +21316,7 @@ __metadata:
|
||||
eslint-config-airbnb-typescript: "npm:^17.1.0"
|
||||
eslint-config-prettier: "npm:^9.1.0"
|
||||
eslint-plugin-import: "npm:^2.29.1"
|
||||
ethers: "npm:^6.4.0"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.20.1"
|
||||
hardhat-gas-reporter: "npm:^1.0.8"
|
||||
prettier: "npm:^3.2.5"
|
||||
@@ -21322,16 +21333,16 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "monorepo-ethers-web-app@workspace:packages/cli-template-monorepo-ethers/apps/web-app"
|
||||
dependencies:
|
||||
"@semaphore-protocol/core": "npm:4.7.0"
|
||||
"@semaphore-protocol/data": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/core": "npm:4.8.1"
|
||||
"@semaphore-protocol/data": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
dotenv: "npm:^16.4.5"
|
||||
eslint: "npm:^8"
|
||||
eslint-config-next: "npm:14.1.0"
|
||||
ethers: "npm:^6.11.1"
|
||||
ethers: "npm:^6.13.4"
|
||||
next: "npm:14.1.0"
|
||||
next-pwa: "npm:^5.6.0"
|
||||
react: "npm:^18"
|
||||
@@ -21349,10 +21360,10 @@ __metadata:
|
||||
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0"
|
||||
"@nomicfoundation/hardhat-toolbox": "npm:^4.0.0"
|
||||
"@nomicfoundation/hardhat-verify": "npm:^2.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.7.0"
|
||||
"@semaphore-protocol/core": "npm:4.7.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.8.1"
|
||||
"@semaphore-protocol/core": "npm:4.8.1"
|
||||
"@semaphore-protocol/hardhat": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -21368,7 +21379,7 @@ __metadata:
|
||||
eslint-config-airbnb-typescript: "npm:^17.1.0"
|
||||
eslint-config-prettier: "npm:^9.1.0"
|
||||
eslint-plugin-import: "npm:^2.29.1"
|
||||
ethers: "npm:^6.4.0"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.20.1"
|
||||
hardhat-gas-reporter: "npm:^1.0.8"
|
||||
prettier: "npm:^3.2.5"
|
||||
@@ -21385,16 +21396,16 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "monorepo-subgraph-web-app@workspace:packages/cli-template-monorepo-subgraph/apps/web-app"
|
||||
dependencies:
|
||||
"@semaphore-protocol/core": "npm:4.7.0"
|
||||
"@semaphore-protocol/data": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/core": "npm:4.8.1"
|
||||
"@semaphore-protocol/data": "npm:4.8.1"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
dotenv: "npm:^16.4.5"
|
||||
eslint: "npm:^8"
|
||||
eslint-config-next: "npm:14.1.0"
|
||||
ethers: "npm:^6.11.1"
|
||||
ethers: "npm:^6.13.4"
|
||||
next: "npm:14.1.0"
|
||||
next-pwa: "npm:^5.6.0"
|
||||
react: "npm:^18"
|
||||
@@ -25857,7 +25868,7 @@ __metadata:
|
||||
"@types/node": "npm:^20.10.7"
|
||||
"@zk-kit/lean-imt.sol": "npm:2.0.0"
|
||||
chai: "npm:^4.2.0"
|
||||
ethers: "npm:^6.4.0"
|
||||
ethers: "npm:^6.13.4"
|
||||
hardhat: "npm:^2.19.4"
|
||||
hardhat-gas-reporter: "npm:^1.0.8"
|
||||
ncp: "npm:^2.0.0"
|
||||
@@ -25880,7 +25891,7 @@ __metadata:
|
||||
"@docusaurus/preset-classic": "npm:3.5.2"
|
||||
"@docusaurus/tsconfig": "npm:3.5.2"
|
||||
"@mdx-js/react": "npm:^3.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.7.0"
|
||||
"@semaphore-protocol/utils": "npm:4.8.1"
|
||||
"@svgr/webpack": "npm:^5.5.0"
|
||||
"@types/react": "npm:^18.2.29"
|
||||
clsx: "npm:^1.2.1"
|
||||
@@ -27935,6 +27946,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tslib@npm:2.7.0":
|
||||
version: 2.7.0
|
||||
resolution: "tslib@npm:2.7.0"
|
||||
checksum: 10/9a5b47ddac65874fa011c20ff76db69f97cf90c78cff5934799ab8894a5342db2d17b4e7613a087046bc1d133d21547ddff87ac558abeec31ffa929c88b7fce6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"tslib@npm:^1.8.1, tslib@npm:^1.9.3":
|
||||
version: 1.14.1
|
||||
resolution: "tslib@npm:1.14.1"
|
||||
@@ -28325,6 +28343,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici-types@npm:~6.19.2":
|
||||
version: 6.19.8
|
||||
resolution: "undici-types@npm:6.19.8"
|
||||
checksum: 10/cf0b48ed4fc99baf56584afa91aaffa5010c268b8842f62e02f752df209e3dea138b372a60a963b3b2576ed932f32329ce7ddb9cb5f27a6c83040d8cd74b7a70
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"undici@npm:^5.12.0, undici@npm:^5.14.0":
|
||||
version: 5.28.4
|
||||
resolution: "undici@npm:5.28.4"
|
||||
@@ -28945,6 +28970,21 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"wait-on@npm:^8.0.1":
|
||||
version: 8.0.1
|
||||
resolution: "wait-on@npm:8.0.1"
|
||||
dependencies:
|
||||
axios: "npm:^1.7.7"
|
||||
joi: "npm:^17.13.3"
|
||||
lodash: "npm:^4.17.21"
|
||||
minimist: "npm:^1.2.8"
|
||||
rxjs: "npm:^7.8.1"
|
||||
bin:
|
||||
wait-on: bin/wait-on
|
||||
checksum: 10/41f933031b994718dfb50af35bb843f7f7017d601ef22927e92c211736fadd21808fdbf7ae367e998bcaf995cb9c05cf6160552dc655db9082aeecc346bc926d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"walk-up-path@npm:^3.0.1":
|
||||
version: 3.0.1
|
||||
resolution: "walk-up-path@npm:3.0.1"
|
||||
@@ -29762,18 +29802,18 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ws@npm:8.5.0":
|
||||
version: 8.5.0
|
||||
resolution: "ws@npm:8.5.0"
|
||||
"ws@npm:8.17.1":
|
||||
version: 8.17.1
|
||||
resolution: "ws@npm:8.17.1"
|
||||
peerDependencies:
|
||||
bufferutil: ^4.0.1
|
||||
utf-8-validate: ^5.0.2
|
||||
utf-8-validate: ">=5.0.2"
|
||||
peerDependenciesMeta:
|
||||
bufferutil:
|
||||
optional: true
|
||||
utf-8-validate:
|
||||
optional: true
|
||||
checksum: 10/f0ee700970a0bf925b1ec213ca3691e84fb8b435a91461fe3caf52f58c6cec57c99ed5890fbf6978824c932641932019aafc55d864cad38ac32577496efd5d3a
|
||||
checksum: 10/4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Reference in New Issue
Block a user