# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.0.5] - 2025-3-31
### Added
- Added `rustls-tls` feature to replace native-tls (OpenSSL) for improved cross-platform compatibility
- Simplified Docker builds and deployments by removing OpenSSL dependency
- Enhanced portability for environments where OpenSSL is unavailable or undesired

## [2.0.4] - 2025-3-2
### Fixed
- Added functionality to query the name and issuance of ERC20 tokens
- Added functionality to query the native token balance of an address

## [2.0.3] - 2025-2-13
### Fixed
- Fixed code execution issues in examples
- Added option to keep state after latest transaction in batch simulation for easier querying

## [2.0.2] - 2024-12-25

### Fixed
- Fixed delegate call stack tracing by always popping the address stack in `call_end`
- Fixed incorrect `from` address in delegate calls


## [2.0.1] - 2024-12-17

### Fixed
- Fixed a bug where the database was not being reset while starting a new simulation


## [2.0.0] - 2024-12-09

### Added
- Comprehensive trait system for extensible EVM functionality
  - Full support for REVM's `Inspector` trait
  - Custom `TxInspector` for transaction analysis
  - `TraceOutput` for flexible result formatting
  - `TransactionProcessor` for standardized transaction handling
  - `Reset` for state management
- Enhanced inspector implementation
  - Built on REVM's inspector system
  - Modular transaction analysis with `TxInspector`
  - Configurable trace collection
  - Improved state tracking
  - Easy integration with custom REVM inspectors
- WebSocket provider support with dedicated builder
- Batch transaction processing with state management
  - Stateful/stateless execution modes
  - Automatic state reset functionality
  - Concurrent execution support

### Changed
- Complete architecture redesign
  - New builder pattern for EVM creation
  - Improved error handling hierarchy
  - Better separation of concerns
  - More flexible configuration options
- Enhanced transaction processing
  - Standardized execution flow
  - Improved error propagation
  - Better state management
- Modular inspector system
  - Customizable trace collection
  - Flexible output formatting
  - State management utilities

### Improved
- Documentation and examples
  - Comprehensive API documentation
  - Clear usage examples
  - Detailed error descriptions
- Error handling
  - New error type hierarchy
  - Better error context
  - Improved error messages
- Testing infrastructure
  - More comprehensive test cases
  - Better test utilities
  - Improved test coverage

### Features
- `ws` - WebSocket provider support
- `http` - HTTP provider support (default)
- `async` - Asynchronous execution support

## [1.0.0] - 2024-11-29

### Added
- Transaction log collection and analysis
- Simplified EVM instance creation with `create_evm_instance_with_tracer`
- Comprehensive documentation and examples
- Support for all major EVM-compatible chains

### Changed
- Simplified interface for transaction tracing
- Improved error handling and reporting
- Enhanced token transfer tracking
- Updated core data structures to include logs
- More detailed transaction execution traces

### Removed
- Complex configuration options in favor of simpler interfaces
- Unnecessary formatting functions


## [0.1.2] - 2024-11-26

### Added
- Added serde serialization support for all core types
  - Implemented `Serialize` and `Deserialize` for trace result types
  - Added snake_case serialization for enum variants
  - Improved third-party integration capabilities

## [0.1.1] - 2024-11-25

### Fixed
- Fixed a bug where transaction validation errors were not properly reported in the `TraceResult`
- Improved error handling to properly capture and display pre-execution validation failures


## [0.1.0] - 2024-11-24

### Added
- Initial implementation of EVM transaction simulation
- Asset transfer tracking functionality
  - Native token transfers (ETH, BNB, MATIC, etc.)
  - ERC20 token transfers
  - Internal transfer tracking
- Automatic token information collection
  - Token symbols
  - Token decimals
- Proxy contract support
  - EIP-1967 proxies
  - EIP-1967 beacon proxies
  - OpenZeppelin transparent proxies
  - EIP-1822 (UUPS) proxies
- Transaction tracing features
  - Detailed call traces
  - Error handling and revert messages
  - Asset transfer chronological ordering
- Multi-chain support
  - Compatible with all EVM-based chains
  - Configurable RPC endpoints
  - Historical state access

### Documentation
- Basic usage examples
- API documentation
- Integration test cases