Interep contracts

Interep Solidity smart contracts.

Github license GitHub Workflow test Coveralls Linter eslint Code style prettier Repository top language

👥 Contributing   |   🤝 Code of conduct   |   🗣️ Chat & Support

--- Please, visit our [web app](https://kovan.interep.link) or our [documentation website](https://docs.interep.link) for more details. ### Deployed contracts | | Kovan | Goerli | Arbitrum One | | ------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------ | | Interep | [0xF58D...53De](https://kovan.etherscan.io/address/0xF58D3b710cDD337df432e20a806Ad04f6CfE53De) | [0x9f44...eafb](https://goerli.etherscan.io/address/0x9f44be9F69aF1e049dCeCDb2d9296f36C49Ceafb) | | --- ## Install Clone this repository and install the dependencies: ```bash git clone https://github.com/interep-project/contracts.git cd contracts yarn # or `npm i` ``` ## Usage Copy the `.env.example` file and rename it `.env`. ### Compile Compile the smart contracts with Hardhat: ```bash yarn compile ``` ### Lint Lint the Solidity or the TypeScript code: ```bash yarn lint:sol yarn lint:ts # or yarn lint to lint both. ``` And check if the code is well formatted: ```bash yarn prettier ``` ### Test Run the Mocha tests: ```bash yarn test ``` ### Coverage Generate the code coverage report: ```bash yarn test:coverage ``` ### Report Gas See the gas usage per unit test and average gas per method call: ```bash yarn test:report-gas ``` ### Deploy Deploy a Semaphore verifier contract with depth = 20: ```bash yarn deploy:verifier # The resulting address will have to be used in the next step. ``` Deploy the Interep contract with one Semaphore verifier: ```bash 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: ```bash 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. ### Preparing a local network Run a Hardhat Network in a stand-alone fashion: ```bash yarn start ``` Deploy Semaphore verifier and Interep contract: ```bash yarn deploy --network localhost ``` You can omit `--network localhost` if your `DEFAULT_NETWORK` env variable is equal to `localhost`.