# governance-contracts

### Prerequisites

- NodeJS - 12.x

- Solc - v0.8.25 (https://github.com/ethereum/solidity/releases/tag/v0.8.25)

### Installing

```

npm install

```

### Run Tests

```

npx hardhat test

```

### Hardhat Commands

```

npx hardhat accounts

npx hardhat compile

npx hardhat clean

npx hardhat test

npx hardhat node

npx hardhat help

REPORT_GAS=true npx hardhat test

npx hardhat coverage

TS_NODE_FILES=true npx ts-node scripts/deploy.ts

npx eslint '**/*.{js,ts}'

npx eslint '**/*.{js,ts}' --fix

npx prettier '**/*.{json,sol,md}' --check

npx prettier '**/*.{json,sol,md}' --write

npx solhint 'contracts/**/*.sol'

npx solhint 'contracts/**/*.sol' --fix



MNEMONIC="<>" BSC_API_KEY="<>" npx hardhat run ./script/hardhat/deploy.ts --network testnet

```

### Documentation

Documentation is autogenerated using [solidity-docgen](https://github.com/OpenZeppelin/solidity-docgen).

They can be generated by running `yarn docgen`

### Deployments

Deployments are managed using [hardhat-deploy](https://github.com/wighawag/hardhat-deploy).
Deployment scripts are in the `deploy` directory and run automatically when starting the hardhat node.

Deployed contract abis and addresses are exported in the `deployments` directory. To create a summary export of all contracts deployed to a network run

```
$ yarn hardhat export --network <network-name> --export ./deployments/<network-name>.json
```

### Permissions Fetcher Tool

To fetch all permissions, run the following command:

```
$ npx hardhat run scripts/ACMPermissions/index.ts --network <network-nme>
```

To fetch only timelock permissions excluding guardian, run:

```
$ npx hardhat run scripts/ACMPermissions/fetchNonGuardianPermissions.ts --network <network-nme>
```

### Discussion

For any concerns with the protocol, open an issue or visit us on [Telegram](https://t.me/venusprotocol) to discuss.

For security concerns, please contact the administrators of our telegram chat.
