EVM Decoder is a Python package for decoding and analyzing Ethereum Virtual Machine (EVM) transactions and logs. It provides tools to help developers and researchers understand and work with EVM-based blockchain data.
- Decode EVM transaction input data
- Decode EVM event logs
- Analyze balance changes in transactions
- Support for custom ABI and fixed types
- Retrieve chain information for various EVM-compatible networks
You can install the EVM Decoder package using pip:
bash
pip install evm-decoder
It can decode logs: event_data = { 'topics': [ '0x0c2a2f565c7774c59e49ef6b3c255329f4d254147e06e724d3a8569bb7bd21ad', None, None, None ], 'data': '0x000000000000000000000000000000000000000000000000000388f27d8d3000000000000000000000000000c68bff79073939c96c8edb1c539b5362be1f64d1' }
Here's a quick example of how to use EVM Decoder:
python from evm_decoder import DecoderManager, AnalyzerManager Initialize managers decoder_manager = DecoderManager() analyzer_manager = AnalyzerManager() Example transaction data transaction_data = { 'input': '0x23b872dd000000000000000000000000...', 'from': '0xb8faa80fe04a4afd30c89f40e4fcdc6dafb274d9', 'to': '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', 'value': '0', 'chain_id': 1, 'logs': [...] } Decode the transaction decode_result = decoder_manager.decode(transaction_data) print("Transaction decode result:", decode_result) Analyze the transaction analysis_result = analyzer_manager.analyze_transaction(transaction_data, {}) print("Transaction analysis result:", analysis_result)
For more detailed examples, check the examples directory in the repository.
EVM Decoder uses a configuration file to set up decoders. You can customize this file to add support for specific contracts or event types. The default configuration file is located at evm_decoder/config/decoder_config.json.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to all contributors who have helped to improve this project.
- This project makes use of several open-source libraries, including Web3.py and eth-abi.
If you have any questions or feedback, please open an issue on the GitHub repository.