Skip to content

SpiralOutDotEu/OpinionXpress-demo

Repository files navigation

Semaphore Hardhat + Next.js + SemaphoreEthers template

This project is a complete application that demonstrates a basic Semaphore use case. It comes with a sample contract, a test for that contract and a sample task that deploys that contract. It also contains a frontend to play around with the contract.

📜 Usage

Copy the .env.example file as .env:

cp .env.example .env

and add your environment variables or run the app in a local network.

Local server

You can start your app locally with:

yarn dev

Deploy the contract

  1. Go to the apps/contracts directory and deploy your contract:
yarn deploy --semaphore <semaphore-address> --group <group-id> --network arbitrum-goerli

Deploy Opinion contract

yarn deploy-opinion --semaphore 0x25C683442D5E1571d4950b5e885D38042c1a2a54 --verifier 0xA19Ae83E812665005887dbD9A84922E2F4F71b03 --verify true --network arbitrum-sepolia
  1. Update your .env file with your new contract address, the group id and the semaphore contract address.

  2. Copy your contract artifacts from apps/contracts/build/contracts/contracts folder to apps/web-app/contract-artifacts folders manually. Or run yarn copy:contract-artifacts in the project root to do it automatically.

Note
Check the Semaphore contract addresses here.

Warning
The group id is a number!

Code quality and formatting

Run ESLint to analyze the code and catch bugs:

yarn lint

Run Prettier to check formatting rules:

yarn prettier

or to automatically format the code:

yarn prettier:write