4.0.0-beta.7 • Public • Published

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

npm or yarn

Install the @semaphore-protocol/contracts package with npm:

npm i @semaphore-protocol/contracts

or yarn:

yarn add @semaphore-protocol/contracts

📜 Usage

Compile contracts

Compile the smart contracts with Hardhat:

yarn compile


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:semaphore

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

yarn deploy:semaphore --semaphoreVerifier <address>

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:semaphore --network sepolia
yarn deploy:semaphore --network mumbai
yarn deploy:semaphore --network optimism-sepolia
yarn deploy:semaphore --network arbitrum-sepolia
yarn deploy:semaphore --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.

Package Sidebar


npm i @semaphore-protocol/contracts

Weekly Downloads






Unpacked Size

52.9 kB

Total Files


Last publish


  • vplasencia
  • cedoor