flashbots / web3-flashbots

Web3.py plugin for using Flashbots' bundle APIs
https://pypi.org/project/flashbots/
MIT License
405 stars 213 forks source link

Web3.py V6 upgrade #96

Closed odysseus0 closed 3 months ago

odysseus0 commented 3 months ago

Add support for Web3.py v6 and enhance Flashbots module

This pull request introduces support for Web3.py v6 and includes several improvements to the Flashbots module, enhancing type safety and refactoring code for better maintainability.

Key Changes

  1. Web3.py v6 Support

    • Updated code to be compatible with Web3.py v6
    • Adjusted type hints and function signatures to align with Web3.py v6 changes
    • Updated dependencies to include Web3.py v6
  2. Network Handling Refactor

    • Converted Network type to Enum for improved type safety
    • Updated FLASHBOTS_NETWORKS to use Network enum as keys
    • Added EnumAction class for argparse to handle Network enum
  3. Improved Transaction Handling

    • Updated create_transaction function for dynamic gas price calculation
    • Enhanced flashbot() function with better documentation
  4. Type Safety Enhancements

    • Introduced FlashbotsWeb3 class for better type checking
    • Updated type hints throughout the code to align with Web3.py v6
  5. Code Quality Improvements

    • Switched from Black to Ruff for code formatting and linting
    • Reordered and optimized imports across multiple files
  6. Enhanced Logging

    • Added logging to Flashbots class for key operations
    • Implemented dynamic logging configuration in simple.py example

Additional Notes

These changes primarily focus on ensuring compatibility with Web3.py v6 while also enhancing the overall quality, maintainability, and usability of the Flashbots module.