# Contributing to DeFi Oracle Meta Mainnet Thank you for your interest in contributing to the DeFi Oracle Meta Mainnet project! ## Getting Started 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/amazing-feature` 3. Make your changes 4. Commit your changes: `git commit -m 'Add amazing feature'` 5. Push to the branch: `git push origin feature/amazing-feature` 6. Open a Pull Request ## Development Setup ### Prerequisites - Azure CLI - Terraform >= 1.0 - kubectl - helm - Besu CLI tools - Foundry (forge, cast, anvil) ### Local Development 1. Clone the repository 2. Install dependencies 3. Set up local development environment 4. Run tests 5. Make changes 6. Test locally 7. Submit PR ## Code Style ### Solidity - Use Solidity 0.8.19+ - Follow Solidity style guide - Use NatSpec documentation - Add comprehensive tests ### Python - Use Python 3.9+ - Follow PEP 8 style guide - Use type hints - Add docstrings ### Shell Scripts - Use bash - Add error handling - Add comments - Use meaningful variable names ## Testing ### Smart Contracts ```bash # Run tests forge test # Run with coverage forge coverage # Run specific test forge test --match-test testFunctionName ``` ### Python Services ```bash # Run tests pytest # Run with coverage pytest --cov # Run specific test pytest tests/test_specific.py ``` ## Pull Request Process 1. Update documentation 2. Add tests for new features 3. Ensure all tests pass 4. Update CHANGELOG.md 5. Request review 6. Address feedback 7. Merge after approval ## Commit Messages Follow conventional commits: - `feat`: New feature - `fix`: Bug fix - `docs`: Documentation - `style`: Code style - `refactor`: Code refactoring - `test`: Tests - `chore`: Maintenance Example: `feat: Add retry logic to oracle publisher` ## Code Review - Be respectful - Provide constructive feedback - Ask questions - Suggest improvements - Approve when ready ## Issues - Use GitHub Issues for bug reports - Use GitHub Discussions for questions - Provide detailed information - Include reproduction steps - Label appropriately ## Security - Report security issues to security@d-bis.org - Do not disclose publicly until fixed - Follow responsible disclosure ## License By contributing, you agree that your contributions will be licensed under the MIT License. ## Contact - **Email**: engineering@d-bis.org - **Discord**: [Link to Discord] - **Twitter**: [@defioracle] Thank you for contributing!