### Smart Contracts and Metadata
This project includes the following smart contracts and their metadata:
- [x] Smart Contracts
- [x] Redistribution
- [x] Staking Registry
- [x] Price Oracle
- [x] Postage Stamps
- [x] Test Token
- [x] Metadata (Deployed Contracts)
- [x] Chain ID
- Chain ID of the blockchain.
- [x] Network ID
- Network ID.
- [x] ABI
- Interface to communicate with smart contracts.
- [x] Bytecode
- Compiled object code that is executed during communication with smart contract.
- [x] Address
- Address of the deployed contract on blockchcain.
- [x] Block
- Block height in which the transaction is mined.
- [x] URL
- URL for analyzing the transaction.
### Scripts
- [x] Script for deploying all contracts
- [ ] Script for deploying individual contracts
- [ ] Script for interacting with smart contracts
- [ ] Script to deploy contracts and bee node with updated addresses
- [x] Script assigning roles/permissions for smart contracts
- [x] Redistributor roles
### Tests
- [x] Unit Tests
- Coverage
- Run `npx hardhat coverage` to see the coverage of smart contracts.
- [ ] Integration Tests
## Project Setup
To get started with this project, follow these steps:
1. Clone the repo.
2. Run `yarn install` at the root of the repo to install all dependencies.
3. Add a `.env` file in your root directory, where you'll store your sensitive information for deployement. An example file `.env.example` is provided for reference.
4. Run `npx hardhat compile` to get all the contracts compiled.
5. Run `npx hardhat test` to run all the tests.
6. Run `npx hardhat coverage` to know the testing coverage.
7. Run `npx hardhat deploy` to deploy all contracts on `hardhat env`.
8. To deploy contracts on testnet or mainnet:
- Add your wallet `Mnemonic` in `.env` file.
- Add your `Infura` token in `.env` file.
- Sign Up on [Infura](https://infura.io/).
- Create a `Web3 API` key and give your project a name.
- Copy the key from API key section and replace `<token>` with the copied key in your `.env` file.
- To deploy all contracts and set roles:
- Mainnet:
- `npx hardhat run scripts/deployer.ts --network mainnet`
- Testnet:
- `npx hardhat run scripts/deployer.ts --network testnet`
9. Run `npx hardhat run scripts/<script-name>.js --network <network-name>` to run any of the scripts on specific network.
- To deploy all contracts on Ganache:
- Run `ganache-cli` for cli version or execute [GUI version of Ganache](https://trufflesuite.com/ganache/).
- Add network configurations in your hardhat config.
- ` ganache: {
url: '127.0.0.1:8545',
chainId: 1337,
},`