A Hardhat plugin to deploy Semaphore contracts.
The Semaphore Hardhat plugin simplifies the deployment of Semaphore contracts, reducing setup time and complexity. |
---|
To install the Semaphore Hardhat plugin, use npm or yarn:
npm i @semaphore-protocol/hardhat
or yarn:
yarn add @semaphore-protocol/hardhat
To use the plugin, import it in your Hardhat configuration file (hardhat.config.ts
):
import "@semaphore-protocol/hardhat"
import "./tasks/deploy"
const hardhatConfig: HardhatUserConfig = {
solidity: "0.8.4"
}
export default hardhatConfig
And use its tasks to create your own deploy
task and deploy your contract with a Semaphore address.
import { task, types } from "hardhat/config"
task("deploy", "Deploy a Greeter contract")
.addOptionalParam("logs", "Print the logs", true, types.boolean)
.setAction(async ({ logs }, { ethers, run }) => {
const { semaphore } = await run("deploy:semaphore", {
logs
})
// Or:
// const { semaphoreVerifier } = await run("deploy:semaphore-verifier", {
// logs
// })
const Greeter = await ethers.getContractFactory("Greeter")
const greeter = await Greeter.deploy(semaphore.address)
await greeter.deployed()
if (logs) {
console.log(`Greeter contract has been deployed to: ${greeter.address}`)
}
return greeter
})
Use the provided tasks to deploy your Semaphore contracts:
npx hardhat deploy
This command will deploy a Semaphore contract using the addresses provided or deploy necessary dependencies like Semaphore Verifier and Poseidon library.