Interep Solidity smart contracts.
Please, visit our web app or our documentation website for more details.
Kovan | Goerli | Arbitrum One | |
---|---|---|---|
Interep | 0xF58D...53De | 0x9f44...eafb |
Clone this repository and install the dependencies:
git clone https://github.com/interep-project/contracts.git
cd contracts
yarn # or `npm i`
Copy the .env.example
file and rename it .env
.
Compile the smart contracts with Hardhat:
yarn compile
Lint the Solidity or the TypeScript code:
yarn lint:sol
yarn lint:ts
# or yarn lint to lint both.
And check if the code is well formatted:
yarn prettier
Run the Mocha tests:
yarn test
Generate the code coverage report:
yarn test:coverage
See the gas usage per unit test and average gas per method call:
yarn test:report-gas
Deploy a Semaphore verifier contract with depth = 20:
yarn deploy:verifier # The resulting address will have to be used in the next step.
Deploy the Interep contract with one Semaphore verifier:
yarn deploy:interep --verifiers '[{"merkleTreeDepth": 20, "contractAddress": "0x06bcD633988c1CE7Bd134DbE2C12119b6f3E4bD1"}]'
If you want to deploy contracts 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, goerli, kovan, arbitrum). Or you can specify it as option:
yarn deploy:interep --verifiers '[{"merkleTreeDepth": 20, "contractAddress": "0x5FbDB2315678afecb367f032d93F642f64180aa3"}]' --network kovan
yarn deploy:interep --verifiers '[{"merkleTreeDepth": 20, "contractAddress": "0x06bcD633988c1CE7Bd134DbE2C12119b6f3E4bD1"}]' --network localhost
If you want to deploy the contracts on Goerli, Kovan or Arbitrum remember to provide a valid private key and an Infura API in your .env
file.
Run a Hardhat Network in a stand-alone fashion:
yarn start
Deploy Semaphore verifier and Interep contract:
yarn deploy --network localhost
You can omit --network localhost
if your DEFAULT_NETWORK
env variable is equal to localhost
.