A library for querying Semaphore smart contract.
This library provides tools for querying and interacting with the Semaphore.sol smart contract. It supports both the Semaphore subgraph and direct Ethereum network connections via Ethers. Designed for use in both Node.js and browser environments, it facilitates the management of group data and verification processes within the Semaphore protocol. |
---|
Install the @semaphore-protocol/data
package with npm:
npm i @semaphore-protocol/data
or yarn:
yarn add @semaphore-protocol/data
For detailed information on the functions provided by @semaphore-protocol/data
, please refer to the TypeDoc documentation.
Initialize a Semaphore Subgraph instance
import { SemaphoreSubgraph } from "@semaphore-protocol/data"
const semaphoreSubgraph = new SemaphoreSubgraph()
// or:
const semaphoreSubgraphOnArbitrum = new SemaphoreSubgraph("arbitrum")
// or:
const customSubgraph = new SemaphoreSubgraph(
"https://api.studio.thegraph.com/query/14377/<your-subgraph>/<your-version>"
)
With your SemaphoreSubgraph, you can:
Query Group IDs
const groupIds = await semaphoreSubgraph.getGroupIds()
Query Group Details
const group = await semaphoreSubgraph.getGroup("42")
const { members, verifiedProofs } = await semaphoreSubgraph.getGroup("42", { members: true, verifiedProofs: true })
Query Group Members
const members = await semaphoreSubgraph.getGroupMembers("42")
Query Verified Proofs
const verifiedProofs = await semaphoreSubgraph.getGroupVerifiedProofs("42")
Check Group Membership
const isMember = await semaphoreSubgraph.isGroupMember(
"42",
"16948514235341957898454876473214737047419402240398321289450170535251226167324"
)
Initialize a Semaphore Ethers instance
import { SemaphoreEthers } from "@semaphore-protocol/data"
const semaphoreEthers = new SemaphoreEthers()
// or:
const semaphoreEthersOnHomestead = new SemaphoreEthers("homestead", {
address: "semaphore-address",
startBlock: 0
})
// or:
const localEthersInstance = new SemaphoreEthers("http://localhost:8545", {
address: "semaphore-address"
})
With your SemaphoreEthers instance, you can:
Fetch Group IDs
const groupIds = await semaphoreEthers.getGroupIds()
Fetch Group Details
const group = await semaphoreEthers.getGroup("42")
Fetch Group Admin
const admin = await semaphoreEthers.getGroupAdmin("42")
Fetch Group Members
const members = await semaphoreEthers.getGroupMembers("42")
Fetch Verified Proofs
const verifiedProofs = await semaphoreEthers.getGroupVerifiedProofs("42")
Check Group Membership
const isMember = await semaphoreEthers.isGroupMember(
"42",
"16948514235341957898454876473214737047419402240398321289450170535251226167324"
)