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
- Yarn
- pnpm
npm install @semaphore-protocol/data@^3
yarn add @semaphore-protocol/data@^3
pnpm add @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"
)
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")
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)