Saltar al contenido principal
Versión: V3

Semaphore data

Para obtener datos on-chain del contrato Semaphore.sol, puedes usar la librería @semaphore-protocol/data.

Hay dos formas para hacer esto, usando SemaphoreSubgraph o SemaphoreEthers. La clase SemaphoreSubgraph usa el subgrafo de Semaphore, el cual usa The Graph Protocol detrás del telón, y la clase SemaphoreEthers usa Ethers.

Instalar librería

npm install @semaphore-protocol/data@^3

Obtener datos usando SemaphoreSubgraph

Para obtener datos usando el subgrafo de Semaphore puedes usar la clase SemaphoreSubgraph del paquete @semaphore-protocol/data.

import { SemaphoreSubgraph } from "@semaphore-protocol/data"

const semaphoreSubgraph = new SemaphoreSubgraph()

// or:
const semaphoreSubgraph = new SemaphoreSubgraph("arbitrum")

// or:
const semaphoreSubgraph = new SemaphoreSubgraph(
"https://api.studio.thegraph.com/query/14377/<your-subgraph>/<your-version>"
)

Obtener Ids de los grupos

const groupIds = await semaphoreSubgraph.getGroupIds()

Obtener los grupos

const groups = await semaphoreSubgraph.getGroups()

// or

const groups = await semaphoreSubgraph.getGroups({ members: true, verifiedProofs: true })

Obtener un grupo

const group = await semaphoreSubgraph.getGroup("42")

// or

const { members, verifiedProofs } = semaphoreSubgraph.getGroup("42", { members: true, verifiedProofs: true })

Comprueba si un identity commitment es miembro de un grupo

await semaphoreSubgraph.isGroupMember(
"42",
"16948514235341957898454876473214737047419402240398321289450170535251226167324"
)
información

Puedes crear un grupo off-chain usando la clase SemaphoreSubgraph para obtener los miembros de la siguiente forma:

import { Group } from "@semaphore-protocol/group"
import { SemaphoreSubgraph } from "@semaphore-protocol/data"

const groupId = "3"
const semaphoreSubgraph = new SemaphoreSubgraph("sepolia")
const { members } = await semaphoreSubgraph.getGroup(groupId, { members: true })
const group = new Group(groupId, 20, members)

Obtener datos usando SemaphoreEthers

Para obtener datos usando Ethers puedes usar la clase SemaphoreEthers del paquete @semaphore-protocol/data.

import { SemaphoreEthers } from "@semaphore-protocol/data"

const semaphoreEthers = new SemaphoreEthers()

// or:
const semaphoreEthers = new SemaphoreEthers("homestead", {
address: "semaphore-address",
startBlock: 0
})

// or:
const semaphoreEthers = new SemaphoreEthers("http://localhost:8545", {
address: "semaphore-address"
})

Obtener Ids de los grupos

const groupIds = await semaphoreEthers.getGroupIds()

Obtener un grupo

const group = await semaphoreEthers.getGroup("42")

Obtener el admin de un grupo

const admin = await semaphoreEthers.getGroupAdmin("42")

Obtener los miembros de un grupo

const members = await semaphoreEthers.getGroupMembers("42")

Obtener las pruebas verificadas de un grupo

const verifiedProofs = await semaphoreEthers.getGroupVerifiedProofs("42")
información

Puedes crear un grupo off-chain usando la clase SemaphoreEthers para obtener los miembros de la siguiente forma:

import { Group } from "@semaphore-protocol/group"
import { SemaphoreEthers } from "@semaphore-protocol/data"

const groupId = "3"
const semaphoreEthers = new SemaphoreEthers("sepolia")
const members = await semaphoreEthers.getGroupMembers(groupId)
const group = new Group(groupId, 20, members)