mirror of
https://github.com/semaphore-protocol/semaphore.git
synced 2026-01-11 07:38:14 -05:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
48b0694586 | ||
|
|
28684fdb1a | ||
|
|
49a16635d8 | ||
|
|
4bfe6d8791 | ||
|
|
a3d97795fe | ||
|
|
4c8d297902 | ||
|
|
fdbadf5b71 | ||
|
|
4496eee137 | ||
|
|
215a12e25c | ||
|
|
87331114c1 | ||
|
|
0d41562dad | ||
|
|
c435712656 | ||
|
|
7d48311474 | ||
|
|
5ef73e2819 | ||
|
|
de7bdd6d17 | ||
|
|
21c2739f19 | ||
|
|
1ed170d0db | ||
|
|
bc041486b0 | ||
|
|
5db1bccb84 | ||
|
|
b2da0a685a | ||
|
|
9329eed754 | ||
|
|
75563ee0d5 | ||
|
|
368bbd4bcd |
@@ -26,5 +26,13 @@
|
||||
"no-console": ["warn", { "allow": ["info", "warn", "error"] }],
|
||||
"@typescript-eslint/lines-between-class-members": "off",
|
||||
"no-param-reassign": "off"
|
||||
}
|
||||
},
|
||||
"overrides": [
|
||||
{
|
||||
"files": ["./scripts/*"],
|
||||
"rules": {
|
||||
"no-console": "off"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -94,3 +94,5 @@ typechain-types
|
||||
|
||||
# Other
|
||||
snark-artifacts
|
||||
|
||||
*.zip
|
||||
|
||||
1
.soldeerignore
Normal file
1
.soldeerignore
Normal file
@@ -0,0 +1 @@
|
||||
package.json
|
||||
@@ -53,7 +53,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
<span> | </span>
|
||||
@@ -374,5 +374,5 @@ yarn version:bump <version>
|
||||
# e.g. yarn version:bump 2.0.0
|
||||
```
|
||||
|
||||
It will create a commit and a git tag that will need to pushed on the main branch. A workflow will be triggered and will
|
||||
It will create a commit and a git tag that will need to be pushed on the main branch. A workflow will be triggered and will
|
||||
publish the Semaphore packages on [npm](https://www.npmjs.com/) and release a new version on Github with its changelogs automatically.
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -67,7 +67,7 @@ const config: Config = {
|
||||
announcementBar: {
|
||||
id: "semaphore-v4-beta",
|
||||
content:
|
||||
'<b>Semaphore V4-beta is out 🎉 <a href="/getting-started">Try it out</a> and contribute to the <a href="/trusted-setup">Trusted Setup ceremony</a>. Let us know for any feedback on <a href="https://semaphore.pse.dev/discord" target="_blank">Discord</a> or <a href="https://github.com/orgs/semaphore-protocol/discussions" target="_blank">Github</a>!</b>',
|
||||
'<b><a href="https://github.com/semaphore-protocol/semaphore/releases/tag/v4.0.0" target="_blank">Semaphore V4</a> is out 🎉 <a href="/getting-started">Try it out</a> and let us know if you have any feedback on <a href="https://semaphore.pse.dev/telegram" target="_blank">Telegram</a> or <a href="https://github.com/orgs/semaphore-protocol/discussions" target="_blank">Github</a>!</b>',
|
||||
backgroundColor: "#dde6fc",
|
||||
textColor: "#000000"
|
||||
},
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
"message": "Connect"
|
||||
},
|
||||
"footer.right.connect.link1": {
|
||||
"message": "Discord"
|
||||
"message": "Telegram"
|
||||
},
|
||||
"footer.right.connect.link2": {
|
||||
"message": "X (Twitter)"
|
||||
|
||||
@@ -386,7 +386,7 @@
|
||||
"message": "Conecta con nosotros"
|
||||
},
|
||||
"footer.right.connect.link1": {
|
||||
"message": "Discord"
|
||||
"message": "Telegram"
|
||||
},
|
||||
"footer.right.connect.link2": {
|
||||
"message": "X (Twitter)"
|
||||
|
||||
@@ -14,7 +14,7 @@ También proporciona un mecanismo simple para evitar la doble señalización, lo
|
||||
|
||||
## ¿Dónde puedo hacer preguntas sobre Semaphore?
|
||||
|
||||
Puede hacer preguntas sobre Semaphore en [Discord](https://semaphore.pse.dev/discord) o abriendo un [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions).
|
||||
Puede hacer preguntas sobre Semaphore en [Telegram](https://semaphore.pse.dev/telegram) o abriendo un [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions).
|
||||
|
||||
## ¿Por qué las identidades requieren tanto `identity trapdoor` como `identity nullifier`?
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import TabItem from "@theme/TabItem"
|
||||
|
||||
# Solución de problemas
|
||||
|
||||
Si estas sugerencias no funcionan, no dude en preguntar en las [Semaphore Discussions](https://github.com/semaphore-protocol/semaphore/discussions) o en el canal `dev-chat` en el [Semaphore Discord](https://semaphore.pse.dev/discord).
|
||||
Si estas sugerencias no funcionan, no dude en preguntar en las [Semaphore Discussions](https://github.com/semaphore-protocol/semaphore/discussions) o en el canal [Semaphore Telegram](https://semaphore.pse.dev/telegram).
|
||||
|
||||
## Usando Semaphore en the frontend
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"@docusaurus/core": "3.1.1",
|
||||
"@docusaurus/preset-classic": "3.1.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"@svgr/webpack": "^5.5.0",
|
||||
"clsx": "^1.2.1",
|
||||
"docusaurus-plugin-sass": "^0.2.5",
|
||||
|
||||
@@ -32,7 +32,7 @@ function Footer() {
|
||||
id: "footer.right.connect.title"
|
||||
})}
|
||||
</h3>
|
||||
<Link href="https://semaphore.pse.dev/discord" target="_blank">
|
||||
<Link href="https://semaphore.pse.dev/telegram" target="_blank">
|
||||
{translate({
|
||||
id: "footer.right.connect.link1"
|
||||
})}
|
||||
|
||||
@@ -21,7 +21,7 @@ The first external nullifier will be added as an external nullifier to the
|
||||
contract, and this external nullifier will be active once the deployment
|
||||
completes.
|
||||
|
||||
## Add, deactivate, or reactivate external nullifiiers
|
||||
## Add, deactivate, or reactivate external nullifiers
|
||||
|
||||
**Contract ABI**:
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ An identity is comprised of the following information:
|
||||
|
||||
1. An [EdDSA](https://en.wikipedia.org/wiki/EdDSA) private key. Note that it is
|
||||
_not_ an Ethereum private key.
|
||||
2. An identity nullifier, whih is a random 32-byte value.
|
||||
3. An identity trapdoor, whih is a random 32-byte value.
|
||||
2. An identity nullifier, which is a random 32-byte value.
|
||||
3. An identity trapdoor, which is a random 32-byte value.
|
||||
|
||||
An identity commitment is the Pedersen hash of:
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ It returns an object as such:
|
||||
- `msg`: The hash of the external nullifier and the signal hash
|
||||
- `signature`: The signature on the above msg.
|
||||
- `tree`: The Merkle tree object after it has been updated with the identity commitment
|
||||
- `identityPath`: The Merkle path to the identity commmitment
|
||||
- `identityPath`: The Merkle path to the identity commitment
|
||||
- `identityPathIndex`: The leaf index of the identity commitment
|
||||
- `identityPathElements`: The elements along the above Merkle path
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ It also provides a simple mechanism to prevent double-signaling, which means you
|
||||
|
||||
## Where can I ask questions about Semaphore?
|
||||
|
||||
You can ask questions about Semaphore on [Discord](https://semaphore.pse.dev/discord) or by opening a [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions).
|
||||
You can ask questions about Semaphore on [Telegram](https://semaphore.pse.dev/telegram) or by opening a [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions).
|
||||
|
||||
## Why do identities require both the `identity trapdoor` and the `identity nullifier`?
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import TabItem from "@theme/TabItem"
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If these suggestions do not work, feel free to ask in the [Semaphore Discussions](https://github.com/semaphore-protocol/semaphore/discussions) or in the `dev-chat` channel in the [Semaphore Discord](https://semaphore.pse.dev/discord).
|
||||
If these suggestions do not work, feel free to ask in the [Semaphore Discussions](https://github.com/semaphore-protocol/semaphore/discussions) or in the [Semaphore Telegram](https://semaphore.pse.dev/telegram).
|
||||
|
||||
## Using Semaphore in the frontend
|
||||
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
---
|
||||
sidebar_position: 6
|
||||
---
|
||||
|
||||
# Trusted Setup
|
||||
|
||||
gm, everyone 😎 we are excited to announce the upcoming Multi-Party Computation (MPC) Phase 2 Trusted Setup ceremony for the Semaphore V4 circuit - this is crucial for establishing a robust security foundation for the cryptographic protocol 🎉
|
||||
|
||||
The ceremony will take place from **June 10** to **July 10**. If all goes to plan, finalization should take place on **July 15** with the announcement of the final beacon on **July 12**.
|
||||
|
||||
## Securing Semaphore V4
|
||||
|
||||
To contribute to this ceremony, you will just need your browser!
|
||||
|
||||
1. Visit [ceremony.pse.dev](https://ceremony.pse.dev/projects/Semaphore%20V4%20Ceremony).
|
||||
2. Login and associate your **Github** account.
|
||||
3. Hit the `contribute` button and wait for your turn.
|
||||
|
||||
nb. you will find your contribution certificate on your GitHub gists - and, if all goes wrong or you feel lost, there are instructions on site or post a message on Semaphore / PSE discord.
|
||||
|
||||
## What You Need to Know About the Ceremony
|
||||
|
||||
### Your Role
|
||||
|
||||
Many zero-knowledge proof systems, including those based on the Groth16 scheme, require this layer of randomness, often referred to as "toxic waste” which must remain unknown to anyone to maintain the integrity of the zero-knowledge proof system. Trusted setups rely on a 1 of N honest participant assumption. As long as just one participant actually discards their “toxic waste”, the proof system will be secure. You can be that one participant by providing your unique entropy with your contribution, making the ceremony unpredictable and unbiased, safeguarding the entire process against potential vulnerabilities.
|
||||
|
||||
### Why It Matters
|
||||
|
||||
Trusted setups are crucial as they generate a set of parameters necessary to initiate SNARK-based systems. Through a series of computations performed by various participants. This sequence involves downloading previous contributions, adding generated randomness, and uploading the results of your contribution. These contributions are then integrated into the final artifacts crucial for proof generation/verification.
|
||||
|
||||
### Semaphore Circuit
|
||||
|
||||
The [Semaphore circuit](https://github.com/semaphore-protocol/semaphore/blob/main/packages/circuits/src/semaphore.circom) centered around the creation of the _Semaphore identity_ and _identity commitment_, includes verification processes, and facilitates the generation of the _nullifier_. We are going to support `MAX_DEPTH` from 1 to 32 - therefore you will have to contribute to 32 variants of the same circuit. Since the constraints will range from 2k to less than 10k with very small artifacts size (≤ 8mb x contribution), the waiting and contribution time shouldn’t be much!
|
||||
|
||||
### Transparency and Fairness
|
||||
|
||||
We are committed to transparency on ceremony setup, execution, finalization, and later verification. Our primary goal is to **engage as many contributors as possible** to ensure the circuit is **secure** and **production-ready**. To this end, the ceremony is designed to _maximize contributor inclusion_, monitor & troubleshoot whenever is needed, _lower the entry barriers_, _making contributiong as effortless as possible_. A key step towards achieving these goals is running the ceremony w/ [p0tion](https://github.com/privacy-scaling-explorations/p0tion): an in-house developed, open-source, battle-tested tool that is fully equipped to meet our needs.
|
||||
|
||||
### Ceremony Settings
|
||||
|
||||
To protect the ceremony from sybils, in order to contribute you must have a GitHub account such that you have: 1 public repository, at least 1 follower, following at least 5 other accounts and, your account is at least 1 month old. While to protect from fake contributors or people hanging due to connection/machine resources, we are going to set a 10 minutes time-window on contributions (+ 1 hour verification) - after this amount of time, you will be kicked out and will have to wait **1 day** before you can contribute again.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- If you have been idle longer than expected, it may be that the current contributor has been blocked for some reason. Do not worry, the maximum wait in this case is one hour, after which you will be able to continue contributing.
|
||||
|
||||
### Learn more about Trusted Setups
|
||||
|
||||
- [How Do Trusted Setups Work? - Vitalik](https://vitalik.eth.limo/general/2022/03/14/trustedsetup.html)
|
||||
- [p0tion FAQs](https://p0tion.super.site/faqs#block-cebca23ebb514c2ea096ad44d4833356)
|
||||
@@ -17,3 +17,4 @@ Semaphore is the work of several people, for a complete list of contributors you
|
||||
- [LauNaMu](https://github.com/0xyNaMu)
|
||||
- [0xjei](https://github.com/0xjei)
|
||||
- [Mari Poveda](https://github.com/maripoveda)
|
||||
- [Gauthier](https://github.com/sripwoud)
|
||||
@@ -6,7 +6,7 @@ sidebar_position: 11
|
||||
|
||||
## Where can I ask questions about Semaphore?
|
||||
|
||||
You can ask questions about Semaphore on [Discord](https://semaphore.pse.dev/discord) or by opening a [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions). The most frequent questions will be listed below.
|
||||
You can ask questions about Semaphore on [Telegram](https://semaphore.pse.dev/telegram) or by opening a [Semaphore Discussion](https://github.com/semaphore-protocol/semaphore/discussions). The most frequent questions will be listed below.
|
||||
|
||||
## Why should I prevent proofs from being verified twice?
|
||||
|
||||
@@ -7,13 +7,7 @@ import TabItem from "@theme/TabItem"
|
||||
|
||||
# Troubleshooting
|
||||
|
||||
If these suggestions do not work, feel free to ask for more help and support on [Github Discussions](https://github.com/semaphore-protocol/semaphore/discussions) or [Discord](https://semaphore.pse.dev/discord) ("dev-chat" channel).
|
||||
|
||||
## Creating a Group
|
||||
|
||||
When you create a group and the transaction is reverted, make sure that the group id you are using does not exist on the network you are using.
|
||||
|
||||
To check that, you can use the [Semaphore CLI](https://github.com/semaphore-protocol/semaphore/tree/main/packages/cli) with the command `get-groups` and the network you are using and then, make sure that your group id is not part of that list. You can also use the [Semaphore explorer](https://explorer.semaphore.pse.dev/).
|
||||
If these suggestions do not work, feel free to ask for more help and support on [Github Discussions](https://github.com/semaphore-protocol/semaphore/discussions) or [Telegram](https://semaphore.pse.dev/telegram).
|
||||
|
||||
## Transaction reverted when using the same nullifier
|
||||
|
||||
@@ -38,6 +38,10 @@ In addition to circuits,
|
||||
Semaphore provides [Solidity contracts](https://github.com/semaphore-protocol/semaphore/tree/main/packages/contracts)
|
||||
and [JavaScript libraries](https://github.com/semaphore-protocol/semaphore/tree/main#-packages) that allow developers to generate zero-knowledge proofs and verify them with minimal effort.
|
||||
|
||||
## Trusted Setup Ceremony
|
||||
|
||||
The [secure parameters](https://snark-artifacts.pse.dev) for generating valid proofs with Semaphore circuits were generated in a [Trusted Setup Ceremony](https://ceremony.pse.dev/projects/Semaphore%20V4%20Ceremony) that was completed with over 400 participants on [13 July 2024](https://etherscan.io/block/20300394).
|
||||
|
||||
### Audits
|
||||
|
||||
| Version | Auditors | Report | Scope |
|
||||
@@ -46,7 +50,3 @@ and [JavaScript libraries](https://github.com/semaphore-protocol/semaphore/tree/
|
||||
| v2.5.0 | [PSE](https://pse.dev/) | [Semaphore_2.5.0_Audit.pdf](https://semaphore.pse.dev/Semaphore_2.5.0_Audit.pdf) | `contracts`, `libraries` |
|
||||
| v3.0.0 | [Veridise](https://veridise.com/) | [Semaphore_3.0.0_Audit.pdf](https://semaphore.pse.dev/Semaphore_3.0.0_Audit.pdf) | `circuits`, `contracts` |
|
||||
| v4.0.0 | [PSE](https://pse.dev/) | [Semaphore_4.0.0_Audit.pdf](https://semaphore.pse.dev/Semaphore_4.0.0_Audit.pdf) | `circuits`, `contracts`, `libraries` |
|
||||
|
||||
:::caution
|
||||
Semaphore V4 is in early testing and might have bugs. Please, don't use it in production.
|
||||
:::
|
||||
@@ -1 +1 @@
|
||||
["V4-beta", "V3", "V2", "V1"]
|
||||
["V4", "V3", "V2", "V1"]
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
@@ -42,15 +42,21 @@
|
||||
|
||||
## Networks
|
||||
|
||||
| Semaphore version | Sepolia | Polygon Mumbai | Optimism Sepolia | Arbitrum Sepolia | Arbitrum One | Polygon Amoy |
|
||||
| ----------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
||||
| v2.0 | N/A | N/A | N/A | N/A | [semaphore-protocol/arbitrum](https://thegraph.com/hosted-service/subgraph/semaphore-protocol/arbitrum) | N/A |
|
||||
| v2.5 | N/A | N/A | N/A | N/A | N/A | N/A |
|
||||
| v2.6 | N/A | N/A | N/A | N/A | [semaphore-protocol/arbitrum-86337c](https://thegraph.com/hosted-service/subgraph/semaphore-protocol/arbitrum-86337c) | N/A |
|
||||
| v3.0 - v3.1 | N/A | N/A | N/A | N/A | [semaphore-protocol/arbitrum-72dca3](https://thegraph.com/hosted-service/subgraph/semaphore-protocol/arbitrum-72dca3) | N/A |
|
||||
| >= v3.2 | [semaphore-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-sepolia/v3.6.1) | [semaphore-mumbai](https://api.studio.thegraph.com/query/14377/semaphore-mumbai/v3.6.1) | N/A | N/A | [semaphore-arbitrum](https://api.studio.thegraph.com/query/14377/semaphore-arbitrum/v3.6.1) | N/A |
|
||||
| v4.0.0-beta | [semaphore-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-sepolia/v4.0.0-beta) | [semaphore-matic-mumbai](https://api.studio.thegraph.com/query/14377/semaphore-matic-mumbai/v4.0.0-beta) | [semaphore-optimism-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-optimism-sepolia/v4.0.0-beta) | [semaphore-arbitrum-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-arbitrum-sepolia/v4.0.0-beta) | N/A | N/A |
|
||||
| >= v4.0.0-beta.17 | [semaphore-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-sepolia/v4.0.0-beta.17) | N/A | [semaphore-optimism-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-optimism-sepolia/v4.0.0-beta.17) | [semaphore-arbitrum-sepolia](https://api.studio.thegraph.com/query/14377/semaphore-arbitrum-sepolia/v4.0.0-beta.17) | N/A | [semaphore-matic-amoy](https://api.studio.thegraph.com/query/14377/semaphore-matic-amoy/v4.0.0-beta.17) |
|
||||
You can access any subgraph supported by Semaphore with the following URL: https://api.studio.thegraph.com/query/14377/semaphore-<network-name>/v4.0.0-beta.17.
|
||||
|
||||
Supported networks:
|
||||
|
||||
- `sepolia`
|
||||
- `optimism`
|
||||
- `optimism-sepolia`
|
||||
- `arbitrum-one`
|
||||
- `arbitrum-sepolia`
|
||||
- `matic`
|
||||
- `polygon-amoy`
|
||||
- `base-sepolia`
|
||||
- `base`
|
||||
- `linea-sepolia`
|
||||
- `linea`
|
||||
|
||||
## 🛠 Install
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
"dependencies": {
|
||||
"@graphprotocol/graph-cli": "0.78.0",
|
||||
"@graphprotocol/graph-ts": "0.35.1",
|
||||
"@semaphore-protocol/utils": "4.0.0"
|
||||
"@semaphore-protocol/utils": "workspace:packages/utils"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/mustache": "^4.2.2",
|
||||
|
||||
@@ -6,8 +6,20 @@ const network = process.argv.at(2)
|
||||
|
||||
const template = readFileSync("./subgraph.template.yaml", "utf-8")
|
||||
|
||||
function mapNetwork(n) {
|
||||
if (n === "matic-amoy") {
|
||||
return "polygon-amoy"
|
||||
}
|
||||
|
||||
if (n === "arbitrum") {
|
||||
return "arbitrum-one"
|
||||
}
|
||||
|
||||
return network
|
||||
}
|
||||
|
||||
const subgraph = Mustache.render(template, {
|
||||
network: network === "matic-amoy" ? "polygon-amoy" : network,
|
||||
network: mapNetwork(network),
|
||||
...getDeployedContract(network)
|
||||
})
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -32,19 +32,18 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
||||
<body suppressHydrationWarning>
|
||||
<Providers>
|
||||
<Banner>
|
||||
Semaphore V4
|
||||
<Link
|
||||
_hover={{
|
||||
textDecoration: "underline",
|
||||
textDecorationColor: "primary.600"
|
||||
}}
|
||||
href="https://ceremony.pse.dev/projects/Semaphore%20V4%20Ceremony"
|
||||
href="https://github.com/semaphore-protocol/semaphore/releases/tag/v4.0.0"
|
||||
ml="1"
|
||||
isExternal
|
||||
>
|
||||
<b>Trusted Setup</b>
|
||||
<b>Semaphore V4</b>
|
||||
</Link>{" "}
|
||||
ceremony is open for contributions until <b>July 10</b>.
|
||||
has been released 🚀
|
||||
</Banner>
|
||||
<Navbar />
|
||||
<Container maxW="1440px" px={{ base: "5", md: "10" }}>
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
import { Box, Button, Card, CardBody, HStack, Heading, Image, Link, Stack, Text, VStack } from "@chakra-ui/react"
|
||||
import NextLink from "next/link"
|
||||
import { Sora } from "next/font/google"
|
||||
import NextLink from "next/link"
|
||||
import Carousel from "../components/Carousel"
|
||||
import ProjectCard from "../components/ProjectCard"
|
||||
import events from "../data/events.json"
|
||||
import allProjects from "../data/projects.json"
|
||||
import IconDiscord from "../icons/IconDiscord"
|
||||
import IconTelegram from "../icons/IconTelegram"
|
||||
import HRoadmap from "@/components/HRoadmap"
|
||||
import VRoadmap from "@/components/VRoadmap"
|
||||
|
||||
const sora = Sora({
|
||||
subsets: ["latin"]
|
||||
@@ -220,6 +222,35 @@ export default function Home() {
|
||||
</Card>
|
||||
</HStack>
|
||||
|
||||
<VStack mb="32" spacing="32">
|
||||
<VStack w="full" maxW="1110px">
|
||||
<Heading fontSize={{ base: "30px", md: "44px" }} pb="90px">
|
||||
2024 Roadmap
|
||||
</Heading>
|
||||
|
||||
<HStack display={{ base: "none", md: "flex" }} w="full" mt="60px">
|
||||
<HRoadmap />
|
||||
</HStack>
|
||||
|
||||
<VStack display={{ base: "flex", md: "none" }}>
|
||||
<VRoadmap />
|
||||
</VStack>
|
||||
</VStack>
|
||||
|
||||
<VStack maxW="650" align="center" spacing="8">
|
||||
<Heading fontSize={{ base: "30px", md: "44px" }}>Join the Semaphore community</Heading>
|
||||
<Text fontSize={{ base: "16px", md: "18px" }} textAlign="center">
|
||||
Ask questions, suggest ideas, stay up-to-date, and meet other people building privacy
|
||||
applications with Zero Knowledge.
|
||||
</Text>
|
||||
<Link href="https://semaphore.pse.dev/telegram" isExternal>
|
||||
<Button leftIcon={<IconTelegram />} size="lg">
|
||||
Telegram
|
||||
</Button>
|
||||
</Link>
|
||||
</VStack>
|
||||
</VStack>
|
||||
|
||||
<VStack justify="center" spacing="40" py="32" position="relative">
|
||||
<Box
|
||||
zIndex="-1"
|
||||
@@ -239,27 +270,16 @@ export default function Home() {
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<Stack direction={{ base: "column", md: "row" }} px={{ base: "0", md: "12" }} spacing="32">
|
||||
<VStack maxW="450" align="left" spacing="8">
|
||||
<Heading fontSize={{ base: "30px", md: "44px" }}>Join the Semaphore community</Heading>
|
||||
<Text fontSize={{ base: "16px", md: "18px" }}>
|
||||
Ask questions, suggest ideas, stay up-to-date, and meet other people building privacy
|
||||
applications with Zero Knowledge.
|
||||
</Text>
|
||||
<Link href="https://semaphore.pse.dev/discord" isExternal>
|
||||
<Button leftIcon={<IconDiscord />} size="lg">
|
||||
Discord
|
||||
</Button>
|
||||
</Link>
|
||||
</VStack>
|
||||
<Stack direction={{ base: "column", md: "row" }} px={{ base: "0", md: "12" }} w="full">
|
||||
<Box flex="1" />
|
||||
|
||||
<Card
|
||||
bg="inherit"
|
||||
flex="1"
|
||||
bg="darkBlue"
|
||||
color="white"
|
||||
backdropFilter="blur(4px)"
|
||||
borderRadius="18px"
|
||||
border="1px"
|
||||
borderColor="white"
|
||||
borderColor="text.900"
|
||||
padding="50px"
|
||||
>
|
||||
<CardBody padding="0">
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Divider, Heading, HStack, Link, Stack, Text, VStack } from "@chakra-ui/
|
||||
import Image from "next/image"
|
||||
import NextLink from "next/link"
|
||||
import IconArrowUpRight from "../icons/IconArrowUpRight"
|
||||
import IconDiscord from "../icons/IconDiscord"
|
||||
import IconTelegram from "../icons/IconTelegram"
|
||||
import IconThumbsUp from "../icons/IconThumbsUp"
|
||||
import IconX from "@/icons/IconX"
|
||||
|
||||
@@ -59,11 +59,11 @@ export default function Footer() {
|
||||
<Divider />
|
||||
<VStack spacing="5">
|
||||
<HStack spacing="5">
|
||||
<Link href="https://semaphore.pse.dev/discord" isExternal>
|
||||
<Link href="https://semaphore.pse.dev/telegram" isExternal>
|
||||
<HStack>
|
||||
<IconDiscord boxSize={{ base: "16px", md: "24px" }} />
|
||||
<IconTelegram boxSize={{ base: "16px", md: "24px" }} />
|
||||
<Heading fontSize={{ base: "14px", md: "18px" }} fontWeight="normal">
|
||||
Discord
|
||||
Telegram
|
||||
</Heading>
|
||||
</HStack>
|
||||
</Link>
|
||||
|
||||
58
apps/website/src/components/HRoadmap.tsx
Normal file
58
apps/website/src/components/HRoadmap.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
import { Box, Text } from "@chakra-ui/react"
|
||||
import roadmap from "../data/roadmap.json"
|
||||
import IconInnerCheck from "../icons/IconInnerCheck"
|
||||
|
||||
export default function HRoadmap() {
|
||||
return roadmap.map((milestone, i) => (
|
||||
<Box
|
||||
key={milestone.name}
|
||||
borderBottomWidth={i % 2 === 0 ? "5px" : "0px"}
|
||||
borderTopWidth={i % 2 !== 0 ? "5px" : "0px"}
|
||||
borderLeftWidth="1px"
|
||||
borderColor="#1E46F2"
|
||||
transform={i % 2 === 0 ? "translateY(-74px)" : ""}
|
||||
h="80px"
|
||||
w="full"
|
||||
pos="relative"
|
||||
>
|
||||
{milestone.done ? (
|
||||
<IconInnerCheck
|
||||
pos="absolute"
|
||||
top={i % 2 !== 0 ? "-14px" : "inherit"}
|
||||
bottom={i % 2 === 0 ? "-14px" : "inherit"}
|
||||
left="-12px"
|
||||
bg="#1E46F2"
|
||||
borderRadius="50px"
|
||||
p="7px"
|
||||
w="24px"
|
||||
h="24px"
|
||||
color="white"
|
||||
/>
|
||||
) : (
|
||||
<Box
|
||||
pos="absolute"
|
||||
top={i % 2 !== 0 ? "-14px" : "inherit"}
|
||||
bottom={i % 2 === 0 ? "-14px" : "inherit"}
|
||||
left="-12px"
|
||||
bg="darkBlueBg"
|
||||
borderWidth="5px"
|
||||
borderColor="#1E46F2"
|
||||
borderRadius="50px"
|
||||
w="24px"
|
||||
h="24px"
|
||||
/>
|
||||
)}
|
||||
<Text
|
||||
pos="absolute"
|
||||
bg="darkBlueBg"
|
||||
fontSize="14px"
|
||||
py="5px"
|
||||
top={i % 2 === 0 ? "-35px" : "inherit"}
|
||||
bottom={i % 2 !== 0 ? "-35px" : "inherit"}
|
||||
left="-1px"
|
||||
>
|
||||
{milestone.name}
|
||||
</Text>
|
||||
</Box>
|
||||
))
|
||||
}
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
} from "@chakra-ui/react"
|
||||
import Image from "next/image"
|
||||
import NextLink from "next/link"
|
||||
import IconDiscord from "../icons/IconDiscord"
|
||||
import IconTelegram from "../icons/IconTelegram"
|
||||
import IconMenu from "../icons/IconMenu"
|
||||
import IconThumbsUp from "../icons/IconThumbsUp"
|
||||
import NavbarLinks from "./NavbarLinks"
|
||||
@@ -71,11 +71,11 @@ export default function Navbar() {
|
||||
|
||||
<VStack w="full" justify="center" spacing="5">
|
||||
<HStack spacing="5">
|
||||
<Link href="https://semaphore.pse.dev/discord" isExternal>
|
||||
<Link href="https://semaphore.pse.dev/telegram" isExternal>
|
||||
<HStack>
|
||||
<IconDiscord boxSize={{ base: "16px", md: "24px" }} />
|
||||
<IconTelegram boxSize={{ base: "16px", md: "24px" }} />
|
||||
<Heading fontSize={{ base: "14px", md: "18px" }} fontWeight="normal">
|
||||
Discord
|
||||
Telegram
|
||||
</Heading>
|
||||
</HStack>
|
||||
</Link>
|
||||
|
||||
61
apps/website/src/components/VRoadmap.tsx
Normal file
61
apps/website/src/components/VRoadmap.tsx
Normal file
@@ -0,0 +1,61 @@
|
||||
import { Box, Text } from "@chakra-ui/react"
|
||||
import roadmap from "../data/roadmap.json"
|
||||
import IconInnerCheck from "../icons/IconInnerCheck"
|
||||
|
||||
export default function VRoadmap() {
|
||||
return roadmap.map((milestone, i) => (
|
||||
<Box
|
||||
key={milestone.name}
|
||||
ml="-74px"
|
||||
borderLeftWidth={i % 2 === 0 ? "5px" : "0px"}
|
||||
borderRightWidth={i % 2 !== 0 ? "5px" : "0px"}
|
||||
borderTopWidth="1px"
|
||||
borderColor="#1E46F2"
|
||||
transform={i % 2 === 0 ? "translateX(74px)" : ""}
|
||||
h="80px"
|
||||
w="80px"
|
||||
pos="relative"
|
||||
>
|
||||
{milestone.done ? (
|
||||
<IconInnerCheck
|
||||
pos="absolute"
|
||||
right={i % 2 !== 0 ? "-14px" : "inherit"}
|
||||
left={i % 2 === 0 ? "-14px" : "inherit"}
|
||||
top="-12px"
|
||||
bg="#1E46F2"
|
||||
borderRadius="50px"
|
||||
p="7px"
|
||||
w="24px"
|
||||
h="24px"
|
||||
color="white"
|
||||
/>
|
||||
) : (
|
||||
<Box
|
||||
pos="absolute"
|
||||
right={i % 2 !== 0 ? "-14px" : "inherit"}
|
||||
left={i % 2 === 0 ? "-14px" : "inherit"}
|
||||
top="-12px"
|
||||
bg="darkBlueBg"
|
||||
borderWidth="5px"
|
||||
borderColor="#1E46F2"
|
||||
borderRadius="50px"
|
||||
w="24px"
|
||||
h="24px"
|
||||
/>
|
||||
)}
|
||||
<Text
|
||||
pos="absolute"
|
||||
bg="darkBlueBg"
|
||||
fontSize="14px"
|
||||
w="140px"
|
||||
px="16px"
|
||||
textAlign={i % 2 === 0 ? "left" : "right"}
|
||||
left={i % 2 === 0 ? "70px" : "inherit"}
|
||||
right={i % 2 !== 0 ? "70px" : "inherit"}
|
||||
top="-5px"
|
||||
>
|
||||
{milestone.name}
|
||||
</Text>
|
||||
</Box>
|
||||
))
|
||||
}
|
||||
@@ -1,15 +1,9 @@
|
||||
[
|
||||
{
|
||||
"name": "Trusted Setup ceremony",
|
||||
"date": "June 10 - July 10, 2024",
|
||||
"description": "The Semaphore team will perform the Phase 2 MPC Trusted Setup ceremony to secure V4 circuit variants from 1 to 32 tree depths.",
|
||||
"link": "https://docs.semaphore.pse.dev/trusted-setup"
|
||||
},
|
||||
{
|
||||
"name": "ETHRome",
|
||||
"date": "Oct 4-6, 2024",
|
||||
"description": "Semaphore team will deliver an in-person talk and sponsor prizes for the hackathon.",
|
||||
"link": "https://www.ethrome.org/"
|
||||
"name": "DIF - Decentralized Identity Foundation",
|
||||
"date": "Oct 1 - Nov 4, 2024",
|
||||
"description": "Semaphore team will deliver a talk and sponsor prizes for the online hackathon.",
|
||||
"link": "https://identity.foundation/"
|
||||
},
|
||||
{
|
||||
"name": "Devcon",
|
||||
|
||||
@@ -11,15 +11,14 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Unirep",
|
||||
"tagline": "Private and nonrepudiable reputation system based on ZKP.",
|
||||
"categories": ["Reputation", "Identity", "Social"],
|
||||
"pse": true,
|
||||
"name": "Worldcoin",
|
||||
"categories": ["Identity"],
|
||||
"tagline": "A global digital currency offering universal access to a more inclusive financial system.",
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"website": "https://developer.unirep.io",
|
||||
"github": "https://github.com/Unirep",
|
||||
"discord": "https://discord.gg/VzMMDJmYc5"
|
||||
"github": "https://github.com/worldcoin",
|
||||
"website": "https://worldcoin.org"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -33,6 +32,26 @@
|
||||
"website": "https://bandada.pse.dev"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ZkDemocracy",
|
||||
"categories": ["Infra", "Data"],
|
||||
"tagline": "ZkDemocracy is a ready-to-use anonymous voting system based on Semaphore.",
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"github": "https://github.com/TheBojda/zkdemocracy"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Super Secret ZK Ballot",
|
||||
"tagline": "A Solidity contract for anonymous voting.",
|
||||
"categories": ["Voting"],
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"github": "https://github.com/dutragustavo/super-secret-zkballot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ZK Proof of Humanity",
|
||||
"tagline": "A project that allows humans, registered in Proof of Humanity, to prove their humanity without doxing.",
|
||||
@@ -106,20 +125,7 @@
|
||||
"icon": "",
|
||||
"links": {
|
||||
"website": "https://explorer.semaphore.pse.dev",
|
||||
"github": "https://github.com/semaphore-protocol/explorer",
|
||||
"discord": "https://semaphore.pse.dev/discord"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Semaphore Discord Bot",
|
||||
"tagline": "A Discord Bot for Semaphore",
|
||||
"categories": ["Development"],
|
||||
"pse": true,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"website": "https://discord.com/api/oauth2/authorize?client_id=1082429985496772628&permissions=1024&scope=bot",
|
||||
"github": "https://github.com/semaphore-protocol/discord-bot",
|
||||
"discord": "https://semaphore.pse.dev/discord"
|
||||
"github": "https://github.com/semaphore-protocol/explorer"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -487,14 +493,15 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Worldcoin",
|
||||
"categories": ["Identity"],
|
||||
"tagline": "A global digital currency offering universal access to a more inclusive financial system.",
|
||||
"pse": false,
|
||||
"name": "Unirep",
|
||||
"tagline": "Private and nonrepudiable reputation system based on ZKP.",
|
||||
"categories": ["Reputation", "Identity", "Social"],
|
||||
"pse": true,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"github": "https://github.com/worldcoin",
|
||||
"website": "https://worldcoin.org"
|
||||
"website": "https://developer.unirep.io",
|
||||
"github": "https://github.com/Unirep",
|
||||
"discord": "https://discord.gg/VzMMDJmYc5"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -537,5 +544,16 @@
|
||||
"github": "https://github.com/AsteriskDAO",
|
||||
"website": "https://ethglobal.com/showcase/asteriskdao-4hvhf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Pairwise",
|
||||
"tagline": "A fun pseudonymous way to signal in Retro Funding 4.",
|
||||
"categories": ["Retro Funding", "Public Goods", "Privacy", "Community"],
|
||||
"pse": false,
|
||||
"icon": "",
|
||||
"links": {
|
||||
"github": "https://github.com/GeneralMagicio/pairwise-RPGF4",
|
||||
"website": "https://pairwise.vote"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
34
apps/website/src/data/roadmap.json
Normal file
34
apps/website/src/data/roadmap.json
Normal file
@@ -0,0 +1,34 @@
|
||||
[
|
||||
{
|
||||
"name": "Launched New Website",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "V4 Audit",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "V4 Trusted Setup",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "V4 Stable Release",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "LeanIMT Paper",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "Support more Testnets/Mainnets",
|
||||
"done": true
|
||||
},
|
||||
{
|
||||
"name": "RLN extension",
|
||||
"done": false
|
||||
},
|
||||
{
|
||||
"name": "Documentation improvements",
|
||||
"done": false
|
||||
}
|
||||
]
|
||||
15
apps/website/src/icons/IconInnerCheck.tsx
Normal file
15
apps/website/src/icons/IconInnerCheck.tsx
Normal file
@@ -0,0 +1,15 @@
|
||||
import { Icon, IconProps } from "@chakra-ui/react"
|
||||
import React from "react"
|
||||
|
||||
export default function IconInnerCheck(props: IconProps): JSX.Element {
|
||||
return (
|
||||
<Icon viewBox="0 0 9 7" {...props}>
|
||||
<path
|
||||
fillRule="evenodd"
|
||||
clipRule="evenodd"
|
||||
d="M7.84114 1.12297C8.23166 1.5135 8.23166 2.14666 7.84114 2.53718L3.84114 6.53718C3.45062 6.92771 2.81745 6.92771 2.42693 6.53718L0.426926 4.53718C0.0364021 4.14666 0.0364021 3.5135 0.426926 3.12297C0.817451 2.73245 1.45062 2.73245 1.84114 3.12297L3.13403 4.41586L6.42693 1.12297C6.81745 0.732447 7.45062 0.732447 7.84114 1.12297Z"
|
||||
fill="white"
|
||||
/>
|
||||
</Icon>
|
||||
)
|
||||
}
|
||||
13
apps/website/src/icons/IconTelegram.tsx
Normal file
13
apps/website/src/icons/IconTelegram.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
import { Icon, IconProps } from "@chakra-ui/react"
|
||||
import React from "react"
|
||||
|
||||
export default function IconTelegram(props: IconProps): JSX.Element {
|
||||
return (
|
||||
<Icon viewBox="0 0 48 48" {...props}>
|
||||
<path
|
||||
d="M41.4193 7.30899C41.4193 7.30899 45.3046 5.79399 44.9808 9.47328C44.8729 10.9883 43.9016 16.2908 43.1461 22.0262L40.5559 39.0159C40.5559 39.0159 40.3401 41.5048 38.3974 41.9377C36.4547 42.3705 33.5408 40.4227 33.0011 39.9898C32.5694 39.6652 24.9068 34.7955 22.2086 32.4148C21.4531 31.7655 20.5897 30.4669 22.3165 28.9519L33.6487 18.1305C34.9438 16.8319 36.2389 13.8019 30.8426 17.4812L15.7331 27.7616C15.7331 27.7616 14.0063 28.8437 10.7686 27.8698L3.75342 25.7055C3.75342 25.7055 1.16321 24.0823 5.58815 22.459C16.3807 17.3729 29.6555 12.1786 41.4193 7.30899Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</Icon>
|
||||
)
|
||||
}
|
||||
12
package.json
12
package.json
@@ -23,12 +23,12 @@
|
||||
"format": "concurrently -c auto -g -n prettier,embark \"prettier -c .\" \"yarn workspace semaphore-docs format\"",
|
||||
"format:write": "concurrently -c auto -g -n prettier,embark \"prettier -w .\" \"yarn workspace semaphore-docs format:write\"",
|
||||
"docs": "typedoc",
|
||||
"version:bump": "yarn workspaces foreach -A --no-private version -d ${0} && yarn version apply --all && yarn remove:stable-version-field && NO_HOOK=1 git commit -am \"chore: v${0}\" && git tag v${0}",
|
||||
"version:publish": "yarn build:libraries && yarn clean:cli-templates && yarn workspaces foreach -A --no-private npm publish --tolerate-republish --access public",
|
||||
"version:bump": "scripts/version.ts ${0}",
|
||||
"version:publish": "scripts/publish.ts",
|
||||
"version:release": "changelogithub",
|
||||
"clean": "ts-node scripts/clean-apps.ts && ts-node scripts/clean-packages.ts && yarn clean:cli-templates && rimraf node_modules",
|
||||
"clean:cli-templates": "ts-node scripts/clean-cli-templates.ts",
|
||||
"remove:stable-version-field": "ts-node scripts/remove-stable-version-field.ts && yarn format:write",
|
||||
"clean": "scripts/clean-apps.ts && scripts/clean-packages.ts && yarn clean:cli-templates && rimraf node_modules",
|
||||
"clean:cli-templates": "scripts/clean-cli-templates.ts",
|
||||
"remove:stable-version-field": "scripts/remove-stable-version-field.ts && yarn format:write",
|
||||
"precommit": "lint-staged",
|
||||
"postinstall": "husky && git config --local core.editor cat"
|
||||
},
|
||||
@@ -57,6 +57,7 @@
|
||||
"@types/glob": "^7.2.0",
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20",
|
||||
"@types/semver": "^7",
|
||||
"@typescript-eslint/eslint-plugin": "^7.0.2",
|
||||
"@typescript-eslint/parser": "^7.0.2",
|
||||
"changelogithub": "0.12.7",
|
||||
@@ -78,6 +79,7 @@
|
||||
"lint-staged": "^15.2.2",
|
||||
"prettier": "^3.2.5",
|
||||
"rimraf": "^5.0.5",
|
||||
"semver": "^7.6.2",
|
||||
"snarkjs": "0.7.4",
|
||||
"ts-jest": "^29.1.2",
|
||||
"ts-node": "^10.9.2",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/circuits",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "Semaphore Circom circuits to generate zero-knowledge proofs.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-contracts-hardhat",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"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.0.0",
|
||||
"@semaphore-protocol/hardhat": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/core": "4.3.0",
|
||||
"@semaphore-protocol/hardhat": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -71,7 +71,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.0.0"
|
||||
"@semaphore-protocol/contracts": "4.3.0"
|
||||
},
|
||||
"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.0.0",
|
||||
"@semaphore-protocol/hardhat": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/core": "4.3.0",
|
||||
"@semaphore-protocol/hardhat": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.0.0"
|
||||
"@semaphore-protocol/contracts": "4.3.0"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.0.0",
|
||||
"@semaphore-protocol/data": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/core": "4.3.0",
|
||||
"@semaphore-protocol/data": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"ethers": "^6.11.1",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-ethers",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"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.0.0",
|
||||
"@semaphore-protocol/hardhat": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/core": "4.3.0",
|
||||
"@semaphore-protocol/hardhat": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"@typechain/ethers-v6": "^0.5.0",
|
||||
"@typechain/hardhat": "^9.0.0",
|
||||
"@types/chai": "^4.2.0",
|
||||
@@ -50,7 +50,7 @@
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/contracts": "4.0.0"
|
||||
"@semaphore-protocol/contracts": "4.3.0"
|
||||
},
|
||||
"packageManager": "yarn@4.1.0"
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/core": "4.0.0",
|
||||
"@semaphore-protocol/data": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/core": "4.3.0",
|
||||
"@semaphore-protocol/data": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"ethers": "^6.11.1",
|
||||
"next": "14.1.0",
|
||||
"next-pwa": "^5.6.0",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli-template-monorepo-subgraph",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "Semaphore Hardhat + Next.js + SemaphoreSubgraph template.",
|
||||
"license": "Unlicense",
|
||||
"files": [
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/cli",
|
||||
"type": "module",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"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.0.0",
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/data": "4.3.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"axios": "^1.6.7",
|
||||
"boxen": "^7.1.1",
|
||||
"chalk": "^5.3.0",
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/contracts",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "Semaphore contracts to manage groups and broadcast anonymous signals.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
|
||||
@@ -48,6 +48,22 @@ const hardhatConfig: HardhatUserConfig = {
|
||||
apiURL: "https://api-sepolia-optimistic.etherscan.io/api",
|
||||
browserURL: "https://sepolia-optimistic.etherscan.io"
|
||||
}
|
||||
},
|
||||
{
|
||||
network: "linea-sepolia",
|
||||
chainId: 59141,
|
||||
urls: {
|
||||
apiURL: "https://api-sepolia.lineascan.build/api",
|
||||
browserURL: "https://sepolia.lineascan.build"
|
||||
}
|
||||
},
|
||||
{
|
||||
network: "linea",
|
||||
chainId: 59144,
|
||||
urls: {
|
||||
apiURL: "https://api.lineascan.build/api",
|
||||
browserURL: "https://lineascan.build"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "hardhat node",
|
||||
"copy:abi": "ncp artifacts/contracts/Semaphore.sol/Semaphore.json ../utils/src/semaphore-abi.json",
|
||||
"copy:abi": "ncp artifacts/contracts/Semaphore.sol/Semaphore.json ../utils/src/semaphore-interface.json",
|
||||
"compile": "hardhat compile",
|
||||
"deploy": "hardhat deploy",
|
||||
"verify": "hardhat run scripts/verify-contracts.ts",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/core",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "Core library for the essential Semaphore features.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -42,8 +42,8 @@
|
||||
"access": "public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/group": "4.0.0",
|
||||
"@semaphore-protocol/identity": "4.0.0",
|
||||
"@semaphore-protocol/proof": "4.0.0"
|
||||
"@semaphore-protocol/group": "4.3.0",
|
||||
"@semaphore-protocol/identity": "4.3.0",
|
||||
"@semaphore-protocol/proof": "4.3.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/data",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A library for querying Semaphore smart contract.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -37,7 +37,7 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"axios": "1.6.6",
|
||||
"ethers": "6.11.0"
|
||||
}
|
||||
|
||||
@@ -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.0.0-beta.17`
|
||||
return `https://api.studio.thegraph.com/query/14377/semaphore-${supportedNetwork}/v4.0.0`
|
||||
}
|
||||
|
||||
@@ -1,761 +0,0 @@
|
||||
[
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "contract ISemaphoreVerifier",
|
||||
"name": "_verifier",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "LeafAlreadyExists",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "LeafCannotBeZero",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "LeafDoesNotExist",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "LeafGreaterThanSnarkScalarField",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__CallerIsNotTheGroupAdmin",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__GroupDoesNotExist",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__GroupHasNoMembers",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__InvalidProof",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__MerkleTreeDepthIsNotSupported",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__MerkleTreeRootIsExpired",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__MerkleTreeRootIsNotPartOfTheGroup",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "Semaphore__YouAreUsingTheSameNullifierTwice",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "WrongSiblingNodes",
|
||||
"type": "error"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "oldAdmin",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "newAdmin",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "GroupAdminUpdated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "GroupCreated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "oldMerkleTreeDuration",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "newMerkleTreeDuration",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "GroupMerkleTreeDurationUpdated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "index",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MemberAdded",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "index",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MemberRemoved",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "index",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "newIdentityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MemberUpdated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "startIndex",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256[]",
|
||||
"name": "identityCommitments",
|
||||
"type": "uint256[]"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MembersAdded",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeDepth",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "nullifier",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "message",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "uint256",
|
||||
"name": "scope",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256[8]",
|
||||
"name": "points",
|
||||
"type": "uint256[8]"
|
||||
}
|
||||
],
|
||||
"name": "ProofValidated",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "addMember",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[]",
|
||||
"name": "identityCommitments",
|
||||
"type": "uint256[]"
|
||||
}
|
||||
],
|
||||
"name": "addMembers",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "admin",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeDuration",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "createGroup",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "admin",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "createGroup",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "getGroupAdmin",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "getMerkleTreeDepth",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "getMerkleTreeRoot",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "getMerkleTreeSize",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "groupCounter",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "groups",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeDuration",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "hasMember",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "indexOf",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[]",
|
||||
"name": "merkleProofSiblings",
|
||||
"type": "uint256[]"
|
||||
}
|
||||
],
|
||||
"name": "removeMember",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "newAdmin",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "updateGroupAdmin",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "newMerkleTreeDuration",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "updateGroupMerkleTreeDuration",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "identityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "newIdentityCommitment",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[]",
|
||||
"name": "merkleProofSiblings",
|
||||
"type": "uint256[]"
|
||||
}
|
||||
],
|
||||
"name": "updateMember",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"components": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeDepth",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "nullifier",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "message",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "scope",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[8]",
|
||||
"name": "points",
|
||||
"type": "uint256[8]"
|
||||
}
|
||||
],
|
||||
"internalType": "struct ISemaphore.SemaphoreProof",
|
||||
"name": "proof",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"name": "validateProof",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "verifier",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract ISemaphoreVerifier",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "groupId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"components": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeDepth",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "merkleTreeRoot",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "nullifier",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "message",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "scope",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256[8]",
|
||||
"name": "points",
|
||||
"type": "uint256[8]"
|
||||
}
|
||||
],
|
||||
"internalType": "struct ISemaphore.SemaphoreProof",
|
||||
"name": "proof",
|
||||
"type": "tuple"
|
||||
}
|
||||
],
|
||||
"name": "verifyProof",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
||||
@@ -7,6 +7,10 @@ export type EthersNetwork =
|
||||
| "arbitrum-sepolia"
|
||||
| "optimism"
|
||||
| "optimism-sepolia"
|
||||
| "base"
|
||||
| "base-sepolia"
|
||||
| "linea"
|
||||
| "linea-sepolia"
|
||||
|
||||
export type GroupOptions = {
|
||||
members?: boolean
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/group",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A library to create and manage Semaphore groups.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -39,7 +39,7 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@zk-kit/lean-imt": "2.0.1",
|
||||
"@zk-kit/lean-imt": "2.1.0",
|
||||
"@zk-kit/utils": "1.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ export class Group {
|
||||
static import(nodes: string): Group {
|
||||
const group = new Group()
|
||||
|
||||
group.leanIMT.import(nodes)
|
||||
group.leanIMT = LeanIMT.import((a, b) => poseidon2([a, b]), nodes)
|
||||
|
||||
return group
|
||||
}
|
||||
|
||||
@@ -158,6 +158,7 @@ describe("Group", () => {
|
||||
expect(group2.depth).toBe(group1.depth)
|
||||
expect(group2.size).toBe(group1.size)
|
||||
expect(group2.root).toBe(group1.root)
|
||||
expect(group2.indexOf(2n)).toBe(group1.indexOf(2n))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/hardhat",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A Hardhat plugin to deploy Semaphore contracts.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -41,7 +41,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@nomicfoundation/hardhat-ethers": "^3.0.0",
|
||||
"@semaphore-protocol/contracts": "4.0.0",
|
||||
"@semaphore-protocol/contracts": "4.3.0",
|
||||
"ethers": "^6.4.0",
|
||||
"hardhat-dependency-compiler": "^1.1.3"
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
@@ -125,7 +125,7 @@ import { Identity } from "@semaphore-protocol/identity"
|
||||
const message = "message"
|
||||
const identity = new Identity()
|
||||
|
||||
const signature = identity.signMessage("message", signature)
|
||||
const signature = identity.signMessage(message)
|
||||
|
||||
Identity.verifySignature(message, signature, identity.publicKey)
|
||||
```
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/identity",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A library to create Semaphore identities.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/proof",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A library to generate and verify Semaphore proofs.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -48,11 +48,11 @@
|
||||
"rollup-plugin-cleanup": "^3.2.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@semaphore-protocol/group": "4.0.0",
|
||||
"@semaphore-protocol/identity": "4.0.0"
|
||||
"@semaphore-protocol/group": "4.3.0",
|
||||
"@semaphore-protocol/identity": "4.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@semaphore-protocol/utils": "4.0.0",
|
||||
"@semaphore-protocol/utils": "4.3.0",
|
||||
"@zk-kit/artifacts": "1.8.0",
|
||||
"@zk-kit/utils": "1.0.0",
|
||||
"ethers": "6.10.0",
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import type { Group, MerkleProof } from "@semaphore-protocol/group"
|
||||
import type { Identity } from "@semaphore-protocol/identity"
|
||||
import { MAX_DEPTH, MIN_DEPTH } from "@semaphore-protocol/utils/constants"
|
||||
import { Project, maybeGetSnarkArtifacts, type SnarkArtifacts } from "@zk-kit/artifacts"
|
||||
import { requireDefined, requireNumber, requireObject, requireTypes } from "@zk-kit/utils/error-handlers"
|
||||
import { packGroth16Proof } from "@zk-kit/utils/proof-packing"
|
||||
import { maybeGetSnarkArtifacts, Project, type SnarkArtifacts } from "@zk-kit/artifacts"
|
||||
import type { BigNumberish } from "ethers"
|
||||
import { type NumericString, groth16 } from "snarkjs"
|
||||
import { groth16, type NumericString } from "snarkjs"
|
||||
import hash from "./hash"
|
||||
import toBigInt from "./to-bigint"
|
||||
import type { SemaphoreProof } from "./types"
|
||||
@@ -118,7 +118,7 @@ export default async function generateProof(
|
||||
|
||||
return {
|
||||
merkleTreeDepth,
|
||||
merkleTreeRoot: publicSignals[0],
|
||||
merkleTreeRoot: merkleProof.root.toString(),
|
||||
nullifier: publicSignals[1],
|
||||
message: message.toString() as NumericString,
|
||||
scope: scope.toString() as NumericString,
|
||||
|
||||
@@ -55,7 +55,7 @@ describe("Proof", () => {
|
||||
|
||||
expect(typeof proof).toBe("object")
|
||||
expect(BigInt(proof.merkleTreeRoot)).toBe(group.root)
|
||||
}, 80000)
|
||||
})
|
||||
|
||||
it("Should generate a Semaphore proof passing a Merkle proof instead of a group", async () => {
|
||||
const group = new Group([1n, 2n, identity.commitment])
|
||||
@@ -64,7 +64,7 @@ describe("Proof", () => {
|
||||
|
||||
expect(typeof proof).toBe("object")
|
||||
expect(BigInt(proof.merkleTreeRoot)).toBe(group.root)
|
||||
}, 80000)
|
||||
})
|
||||
|
||||
it("Should generate a Semaphore proof without passing the tree depth", async () => {
|
||||
const group = new Group([1n, 2n, identity.commitment])
|
||||
@@ -73,7 +73,7 @@ describe("Proof", () => {
|
||||
|
||||
expect(typeof proof).toBe("object")
|
||||
expect(BigInt(proof.merkleTreeRoot)).toBe(group.root)
|
||||
}, 80000)
|
||||
})
|
||||
|
||||
it("Should throw an error because snarkArtifacts is not an object", async () => {
|
||||
const group = new Group([1n, 2n, identity.commitment])
|
||||
@@ -103,7 +103,7 @@ describe("Proof", () => {
|
||||
await expect(fun).rejects.toThrow("tree depth must be")
|
||||
})
|
||||
|
||||
it("Should verify a Semaphore proof", async () => {
|
||||
it("Should return true if the proof is valid", async () => {
|
||||
const group = new Group([1n, 2n, identity.commitment])
|
||||
|
||||
const proof = await generateProof(identity, group, message, scope, treeDepth)
|
||||
@@ -111,6 +111,16 @@ describe("Proof", () => {
|
||||
const response = await verifyProof(proof)
|
||||
|
||||
expect(response).toBe(true)
|
||||
}, 80_000)
|
||||
})
|
||||
|
||||
it("Should return false if the proof is not valid", async () => {
|
||||
const group = new Group([1n, 2n, identity.commitment])
|
||||
|
||||
const proof = await generateProof(identity, group.generateMerkleProof(0), message, scope, treeDepth)
|
||||
|
||||
const response = await verifyProof(proof)
|
||||
|
||||
expect(response).toBe(false)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
🔎 Issues
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://semaphore.pse.dev/discord">
|
||||
<a href="https://semaphore.pse.dev/telegram">
|
||||
🗣️ Chat & Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@semaphore-protocol/utils",
|
||||
"version": "4.0.0",
|
||||
"version": "4.3.0",
|
||||
"description": "A library to provide utility functions to the other Semaphore packages.",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -78,5 +78,145 @@
|
||||
"startBlock": 9636193
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "arbitrum",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 258951463
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 258951463
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 258951463
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "matic",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 62466952
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 62466952
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 62466952
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "optimism",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 126057798
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 126057798
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 126057798
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "base-sepolia",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 16008294
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 16008294
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 16008294
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "linea-sepolia",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 3928632
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 3928632
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 3928632
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "base",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 20553357
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 20553357
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 20553357
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"network": "linea",
|
||||
"contracts": [
|
||||
{
|
||||
"name": "SemaphoreVerifier",
|
||||
"address": "0xe538f9DeeE04A397decb1E7dc5D16fD6f123c043",
|
||||
"startBlock": 10235849
|
||||
},
|
||||
{
|
||||
"name": "PoseidonT3",
|
||||
"address": "0xB43122Ecb241DD50062641f089876679fd06599a",
|
||||
"startBlock": 10235849
|
||||
},
|
||||
{
|
||||
"name": "Semaphore",
|
||||
"address": "0x1e0d7FF1610e480fC93BdEC510811ea2Ba6d7c2f",
|
||||
"startBlock": 10235849
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -11,16 +11,58 @@ export default {
|
||||
chainId: 421614,
|
||||
explorer: "https://sepolia.arbiscan.io"
|
||||
},
|
||||
arbitrum: {
|
||||
name: "Arbitrum",
|
||||
url: "https://arb1.arbitrum.io/rpc",
|
||||
chainId: 42161,
|
||||
explorer: "https://arbiscan.io"
|
||||
},
|
||||
"optimism-sepolia": {
|
||||
name: "Optimism Sepolia",
|
||||
url: "https://sepolia.optimism.io",
|
||||
chainId: 11155420,
|
||||
explorer: "https://sepolia-optimism.etherscan.io"
|
||||
},
|
||||
optimism: {
|
||||
name: "Optimism",
|
||||
url: "https://mainnet.optimism.io ",
|
||||
chainId: 10,
|
||||
explorer: "https://optimistic.etherscan.io"
|
||||
},
|
||||
"matic-amoy": {
|
||||
name: "Matic Amoy",
|
||||
url: "https://rpc-amoy.polygon.technology",
|
||||
chainId: 80002,
|
||||
explorer: "https://amoy.polygonscan.com"
|
||||
},
|
||||
matic: {
|
||||
name: "Matic",
|
||||
url: "https://polygon-rpc.com",
|
||||
chainId: 137,
|
||||
explorer: "https://polygonscan.com"
|
||||
},
|
||||
"base-sepolia": {
|
||||
name: "Base Sepolia",
|
||||
url: "https://sepolia.base.org",
|
||||
chainId: 84532,
|
||||
explorer: "https://sepolia.basescan.org"
|
||||
},
|
||||
base: {
|
||||
name: "Base",
|
||||
url: "https://mainnet.base.org",
|
||||
chainId: 8453,
|
||||
explorer: "https://basescan.org"
|
||||
},
|
||||
"linea-sepolia": {
|
||||
name: "Linea Sepolia",
|
||||
url: "https://rpc.sepolia.linea.build",
|
||||
chainId: 59141,
|
||||
explorer: "https://sepolia.lineascan.build"
|
||||
},
|
||||
linea: {
|
||||
name: "Linea",
|
||||
url: "https://rpc.linea.build",
|
||||
chainId: 59144,
|
||||
explorer: "https://lineascan.build"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
scripts/clean-apps.ts
Normal file → Executable file
1
scripts/clean-apps.ts
Normal file → Executable file
@@ -1,3 +1,4 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import { readdirSync, rmSync } from "fs"
|
||||
|
||||
const folderName = "apps"
|
||||
|
||||
1
scripts/clean-cli-templates.ts
Normal file → Executable file
1
scripts/clean-cli-templates.ts
Normal file → Executable file
@@ -1,3 +1,4 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import { rmSync } from "fs"
|
||||
|
||||
const folderName = "packages"
|
||||
|
||||
1
scripts/clean-packages.ts
Normal file → Executable file
1
scripts/clean-packages.ts
Normal file → Executable file
@@ -1,3 +1,4 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import { readdirSync, rmSync } from "fs"
|
||||
|
||||
const folderName = "packages"
|
||||
|
||||
37
scripts/publish.ts
Executable file
37
scripts/publish.ts
Executable file
@@ -0,0 +1,37 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import compare from "semver/functions/compare"
|
||||
import { execSync } from "child_process"
|
||||
import contractsPkgJson from "@semaphore-protocol/contracts/package.json"
|
||||
|
||||
const { version: contractsLocalVersion } = contractsPkgJson
|
||||
|
||||
async function maybePushToSoldeer() {
|
||||
// api not documented, may change, found by inspecting the network tab
|
||||
const response = await fetch(
|
||||
"https://api.soldeer.xyz/api/v1/revision?project_name=semaphore-protocol-contracts&limit=1"
|
||||
)
|
||||
const { data, status } = await response.json()
|
||||
|
||||
// fail status if no version published at all yet
|
||||
if (status === "fail" || compare(contractsLocalVersion, data[0].version) === 1)
|
||||
execSync(`soldeer push semaphore-protocol-contracts~${contractsLocalVersion} packages/contracts/contracts`, {
|
||||
stdio: "inherit"
|
||||
})
|
||||
}
|
||||
|
||||
async function main() {
|
||||
execSync(`yarn build:libraries`, { stdio: "inherit" })
|
||||
execSync(`yarn clean:cli-templates`)
|
||||
execSync(`yarn workspaces foreach -A --no-private npm publish --tolerate-republish --access public`, {
|
||||
stdio: "inherit"
|
||||
})
|
||||
|
||||
await maybePushToSoldeer()
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
11
scripts/remove-stable-version-field.ts
Normal file → Executable file
11
scripts/remove-stable-version-field.ts
Normal file → Executable file
@@ -1,3 +1,4 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import { readFileSync, readdirSync, writeFileSync } from "node:fs"
|
||||
|
||||
const folderName = "packages"
|
||||
@@ -19,9 +20,7 @@ async function main() {
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
main().catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
25
scripts/version.ts
Executable file
25
scripts/version.ts
Executable file
@@ -0,0 +1,25 @@
|
||||
#!node_modules/.bin/ts-node
|
||||
import { execSync } from "child_process"
|
||||
|
||||
async function main() {
|
||||
const version = process.argv[2]
|
||||
|
||||
// Perform the workspaces version update
|
||||
execSync(`yarn workspaces foreach -A --no-private version -d ${version}`, { stdio: "inherit" })
|
||||
|
||||
// Apply the versions
|
||||
execSync("yarn version apply --all", { stdio: "inherit" })
|
||||
|
||||
await import("./remove-stable-version-field")
|
||||
|
||||
execSync("yarn format:write")
|
||||
execSync(`NO_HOOK=1 git commit -am 'chore: v${version}'`)
|
||||
execSync(`git tag v${version}`)
|
||||
}
|
||||
|
||||
main()
|
||||
.then(() => process.exit(0))
|
||||
.catch((error) => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
100
yarn.lock
100
yarn.lock
@@ -5389,8 +5389,8 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"@nomicfoundation/hardhat-verify@npm:^2.0.8":
|
||||
version: 2.0.8
|
||||
resolution: "@nomicfoundation/hardhat-verify@npm:2.0.8"
|
||||
version: 2.0.11
|
||||
resolution: "@nomicfoundation/hardhat-verify@npm:2.0.11"
|
||||
dependencies:
|
||||
"@ethersproject/abi": "npm:^5.1.2"
|
||||
"@ethersproject/address": "npm:^5.0.2"
|
||||
@@ -5403,7 +5403,7 @@ __metadata:
|
||||
undici: "npm:^5.14.0"
|
||||
peerDependencies:
|
||||
hardhat: ^2.0.4
|
||||
checksum: 10/f49d6615a45d063e8d361ea2029c80c351d4377925de6c229095619384353d3fa9463751beceae0d6ceaf26f60a99797a19abd16ae22258fba37aee26ee5576e
|
||||
checksum: 10/edad30efeb0ab7c26fd0c5fd3f1d161733d51276435f77d9c58edaa4307171be40e8c65a24a8fb11481e1032e4eb72ac99cd11c6eaa0bbfabb493455e387e2e9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -6268,10 +6268,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.0.0"
|
||||
"@semaphore-protocol/core": "npm:4.0.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.3.0"
|
||||
"@semaphore-protocol/core": "npm:4.3.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -6321,8 +6321,8 @@ __metadata:
|
||||
resolution: "@semaphore-protocol/cli@workspace:packages/cli"
|
||||
dependencies:
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@semaphore-protocol/data": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/data": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@types/figlet": "npm:^1.5.8"
|
||||
"@types/inquirer": "npm:^9.0.7"
|
||||
"@types/pacote": "npm:^11.1.8"
|
||||
@@ -6346,7 +6346,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/contracts@npm:4.0.0, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
"@semaphore-protocol/contracts@npm:4.3.0, @semaphore-protocol/contracts@workspace:packages/contracts/contracts":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/contracts@workspace:packages/contracts/contracts"
|
||||
dependencies:
|
||||
@@ -6354,23 +6354,23 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/core@npm:4.0.0, @semaphore-protocol/core@workspace:^, @semaphore-protocol/core@workspace:packages/core":
|
||||
"@semaphore-protocol/core@npm:4.3.0, @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.0.0"
|
||||
"@semaphore-protocol/identity": "npm:4.0.0"
|
||||
"@semaphore-protocol/proof": "npm:4.0.0"
|
||||
"@semaphore-protocol/group": "npm:4.3.0"
|
||||
"@semaphore-protocol/identity": "npm:4.3.0"
|
||||
"@semaphore-protocol/proof": "npm:4.3.0"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/data@npm:4.0.0, @semaphore-protocol/data@workspace:packages/data":
|
||||
"@semaphore-protocol/data@npm:4.3.0, @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.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
axios: "npm:1.6.6"
|
||||
ethers: "npm:6.11.0"
|
||||
rimraf: "npm:^5.0.5"
|
||||
@@ -6379,14 +6379,14 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/group@npm:4.0.0, @semaphore-protocol/group@workspace:packages/group":
|
||||
"@semaphore-protocol/group@npm:4.3.0, @semaphore-protocol/group@workspace:packages/group":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/group@workspace:packages/group"
|
||||
dependencies:
|
||||
"@rollup/plugin-commonjs": "npm:^25.0.7"
|
||||
"@rollup/plugin-node-resolve": "npm:^15.2.3"
|
||||
"@rollup/plugin-typescript": "npm:^11.1.6"
|
||||
"@zk-kit/lean-imt": "npm:2.0.1"
|
||||
"@zk-kit/lean-imt": "npm:2.1.0"
|
||||
"@zk-kit/utils": "npm:1.0.0"
|
||||
poseidon-lite: "npm:^0.2.0"
|
||||
rimraf: "npm:^5.0.5"
|
||||
@@ -6395,13 +6395,13 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/hardhat@npm:4.0.0, @semaphore-protocol/hardhat@workspace:packages/hardhat":
|
||||
"@semaphore-protocol/hardhat@npm:4.3.0, @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.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.3.0"
|
||||
ethers: "npm:^6.4.0"
|
||||
hardhat: "npm:^2.19.4"
|
||||
hardhat-dependency-compiler: "npm:^1.1.3"
|
||||
@@ -6413,7 +6413,7 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/identity@npm:4.0.0, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
"@semaphore-protocol/identity@npm:4.3.0, @semaphore-protocol/identity@workspace:packages/identity":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/identity@workspace:packages/identity"
|
||||
dependencies:
|
||||
@@ -6431,14 +6431,14 @@ __metadata:
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/proof@npm:4.0.0, @semaphore-protocol/proof@workspace:packages/proof":
|
||||
"@semaphore-protocol/proof@npm:4.3.0, @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.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@types/snarkjs": "npm:^0"
|
||||
"@zk-kit/artifacts": "npm:1.8.0"
|
||||
"@zk-kit/utils": "npm:1.0.0"
|
||||
@@ -6449,12 +6449,12 @@ __metadata:
|
||||
rollup-plugin-cleanup: "npm:^3.2.1"
|
||||
snarkjs: "npm:0.7.4"
|
||||
peerDependencies:
|
||||
"@semaphore-protocol/group": 4.0.0
|
||||
"@semaphore-protocol/identity": 4.0.0
|
||||
"@semaphore-protocol/group": 4.3.0
|
||||
"@semaphore-protocol/identity": 4.3.0
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@semaphore-protocol/utils@npm:4.0.0, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
"@semaphore-protocol/utils@npm:4.3.0, @semaphore-protocol/utils@workspace:packages/utils":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@semaphore-protocol/utils@workspace:packages/utils"
|
||||
dependencies:
|
||||
@@ -7872,7 +7872,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.8":
|
||||
"@types/semver@npm:^7, @types/semver@npm:^7.3.12, @types/semver@npm:^7.5.8":
|
||||
version: 7.5.8
|
||||
resolution: "@types/semver@npm:7.5.8"
|
||||
checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178
|
||||
@@ -8544,12 +8544,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@zk-kit/lean-imt@npm:2.0.1":
|
||||
version: 2.0.1
|
||||
resolution: "@zk-kit/lean-imt@npm:2.0.1"
|
||||
"@zk-kit/lean-imt@npm:2.1.0":
|
||||
version: 2.1.0
|
||||
resolution: "@zk-kit/lean-imt@npm:2.1.0"
|
||||
dependencies:
|
||||
"@zk-kit/utils": "npm:1.0.0"
|
||||
checksum: 10/33d03a20c3ce6270036d4cc0a96100b4f6e17f373688595937d2a0863883562b648a768c11ab938fd83ed65d7a70b542db647e3d9e0b5e050c02efc5df0543ce
|
||||
"@zk-kit/utils": "npm:1.2.0"
|
||||
checksum: 10/897f88204c9ee548a2a977ef1efac8e4c0d2efdf284c88f759fdefd53b2c51a36b536130eb3241e68bd14e5039bcb8d6d788e7fca46fe442cfa3eceeb9c0eddf
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -20135,10 +20135,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.0.0"
|
||||
"@semaphore-protocol/core": "npm:4.0.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.3.0"
|
||||
"@semaphore-protocol/core": "npm:4.3.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -20171,9 +20171,9 @@ __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.0.0"
|
||||
"@semaphore-protocol/data": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/core": "npm:4.3.0"
|
||||
"@semaphore-protocol/data": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
@@ -20198,10 +20198,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.0.0"
|
||||
"@semaphore-protocol/core": "npm:4.0.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/contracts": "npm:4.3.0"
|
||||
"@semaphore-protocol/core": "npm:4.3.0"
|
||||
"@semaphore-protocol/hardhat": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@typechain/ethers-v6": "npm:^0.5.0"
|
||||
"@typechain/hardhat": "npm:^9.0.0"
|
||||
"@types/chai": "npm:^4.2.0"
|
||||
@@ -20234,9 +20234,9 @@ __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.0.0"
|
||||
"@semaphore-protocol/data": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/core": "npm:4.3.0"
|
||||
"@semaphore-protocol/data": "npm:4.3.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/react": "npm:^18"
|
||||
"@types/react-dom": "npm:^18"
|
||||
@@ -24650,7 +24650,7 @@ __metadata:
|
||||
"@docusaurus/preset-classic": "npm:3.1.1"
|
||||
"@docusaurus/tsconfig": "npm:3.1.1"
|
||||
"@mdx-js/react": "npm:^3.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "npm:4.3.0"
|
||||
"@svgr/webpack": "npm:^5.5.0"
|
||||
"@types/react": "npm:^18.2.29"
|
||||
clsx: "npm:^1.2.1"
|
||||
@@ -24679,6 +24679,7 @@ __metadata:
|
||||
"@types/glob": "npm:^7.2.0"
|
||||
"@types/jest": "npm:^29.5.12"
|
||||
"@types/node": "npm:^20"
|
||||
"@types/semver": "npm:^7"
|
||||
"@typescript-eslint/eslint-plugin": "npm:^7.0.2"
|
||||
"@typescript-eslint/parser": "npm:^7.0.2"
|
||||
changelogithub: "npm:0.12.7"
|
||||
@@ -24700,6 +24701,7 @@ __metadata:
|
||||
lint-staged: "npm:^15.2.2"
|
||||
prettier: "npm:^3.2.5"
|
||||
rimraf: "npm:^5.0.5"
|
||||
semver: "npm:^7.6.2"
|
||||
snarkjs: "npm:0.7.4"
|
||||
ts-jest: "npm:^29.1.2"
|
||||
ts-node: "npm:^10.9.2"
|
||||
@@ -24715,7 +24717,7 @@ __metadata:
|
||||
dependencies:
|
||||
"@graphprotocol/graph-cli": "npm:0.78.0"
|
||||
"@graphprotocol/graph-ts": "npm:0.35.1"
|
||||
"@semaphore-protocol/utils": "npm:4.0.0"
|
||||
"@semaphore-protocol/utils": "workspace:packages/utils"
|
||||
"@types/mustache": "npm:^4.2.2"
|
||||
matchstick-as: "npm:0.5.0"
|
||||
mustache: "npm:^4.2.0"
|
||||
@@ -24804,7 +24806,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0":
|
||||
"semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2":
|
||||
version: 7.6.2
|
||||
resolution: "semver@npm:7.6.2"
|
||||
bin:
|
||||
|
||||
Reference in New Issue
Block a user