Skip to content

Latest commit

 

History

History

contracts

Semaphore contracts

Semaphore contracts to manage groups and broadcast anonymous signals.

NPM license NPM version Downloads

To learn more about contracts visit semaphore.pse.dev.


🛠 Install

You can install the semaphore protocol contracts with any node package manager (bun, npm, pnpm,yarn) or the solidity package manager soldeer.

bun add @semaphore-protocol/contracts
npm i @semaphore-protocol/contracts
pnpm add @semaphore-protocol/contracts
yarn add @semaphore-protocol/contracts

# for soldeer, an explicit version is required, e.g:
soldeer install semaphore-protocol-contracts~4.6.0

📜 Usage

Compile contracts

Compile the smart contracts with Hardhat:

yarn compile

Testing

Run Mocha to test the contracts:

yarn test

You can also generate a test coverage report:

yarn test:coverage

Or a test gas report:

yarn test:report-gas

Deploy contracts

Deploy the Semaphore.sol contract without any parameter:

yarn deploy

or deploy it by providing the addresses of the contracts/libraries on which it depends:

yarn deploy --semaphoreVerifier <address>

Note
Run yarn deploy:semaphore --help to see the complete list.

If you want to deploy your contract in a specific network you can set up the DEFAULT_NETWORK variable in your .env file with the name of one of our supported networks (hardhat, localhost, sepolia, arbitrum). Or you can specify it as an option:

yarn deploy --network sepolia
yarn deploy --network mumbai
yarn deploy --network optimism-sepolia
yarn deploy --network arbitrum-sepolia
yarn deploy --network arbitrum

If you want to deploy contracts on Sepolia or Arbitrum, remember to provide a valid private key and an Infura API in your .env file.