Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,43 @@
# Changelog

## UNRELEASED

### Features

- Add MEV (Maximum Extractable Value) support with Flashbots integration
- New `Ethers.MEV` module providing high-level API for bundle operations
- `Ethers.MEV.Bundle` for creating and validating transaction bundles
- `Ethers.MEV.Provider` behaviour for extensible MEV relay support
- Full Flashbots mainnet provider implementation with Sepolia support
- Bundle monitoring with automatic status tracking
- Conflict detection for `nonce`, `gas price`, and `balance` issues
- Retry strategies with exponential, linear, and fibonacci backoff
- Circuit breaker pattern for fault tolerance
- Health monitoring and telemetry integration
- Performance optimizations with connection pooling and ETS caching
- Pipeline API for functional composition of MEV operations
- Comprehensive test coverage and documentation

### New Modules

- `Ethers.MEV` - Main MEV interface with pipeline API
- `Ethers.MEV.Bundle` - Bundle creation and validation
- `Ethers.MEV.Provider` - Provider behaviour definition
- `Ethers.MEV.Providers.Flashbots` - Flashbots relay implementation
- `Ethers.MEV.BundleMonitor` - Automated bundle status tracking
- `Ethers.MEV.ConflictDetector` - Transaction conflict analysis
- `Ethers.MEV.RetryStrategy` - Configurable retry strategies
- `Ethers.MEV.RetryPipeline` - Functional retry pipeline
- `Ethers.MEV.CircuitBreaker` - Fault tolerance pattern
- `Ethers.MEV.HealthMonitor` - System health tracking
- `Ethers.MEV.Supervisor` - OTP supervision tree
- `Ethers.MEV.TaskRunner` - Supervised async execution
- `Ethers.MEV.Telemetry` - Metrics and observability
- `Ethers.MEV.Cache` - ETS-based caching layer
- `Ethers.MEV.ConnectionPool` - HTTP connection pooling
- `Ethers.MEV.Utils` - Shared utility functions
- `Ethers.Signer.Flashbots` - EIP-191 signing for Flashbots

## v0.6.7 (2025-05-09)

### Bug Fixes
Expand Down
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ It leverages Elixir's metaprogramming capabilities to provide a seamless develop
- **Flexible Signing**: Extensible signer support with [built-in ones](https://hexdocs.pm/ethers/readme.html#signing-transactions)
- **Event Handling**: Easy filtering and retrieval of blockchain events
- **Multicall Support**: Ability to easily perform multiple `eth_call`s using [Multicall 2/3](https://hexdocs.pm/ethers/Ethers.Multicall.html)
- **MEV Support**: Built-in support for MEV bundle creation and submission (Flashbots and compatible relays)
- **Type Safety**: Native Elixir types for all contract interactions
- **ENS Support**: Out of the box [Ethereum Name Service (ENS)](https://ens.domains/) support
- **Comprehensive Documentation**: Auto-generated docs for all contract functions
Expand Down Expand Up @@ -118,6 +119,29 @@ filter = MyToken.EventFilters.transfer(from_address, nil)
{:ok, events} = Ethers.get_logs(filter)
```

### MEV Bundle Submission

```elixir
# Create and send a bundle of transactions
bundle =
[signed_tx1, signed_tx2]
|> Ethers.MEV.bundle(block_number: next_block)
|> Ethers.MEV.send(provider: Ethers.MEV.Flashbots)

# Or with more control
{:ok, bundle} = Ethers.MEV.create_bundle(
[signed_tx1, signed_tx2],
block_number: 12345678,
min_timestamp: 1234567890,
max_timestamp: 1234567900
)

{:ok, bundle_hash} = Ethers.MEV.send_bundle(bundle,
provider: Ethers.MEV.Flashbots,
signer: signer
)
```

## Documentation

Complete API documentation is available at [HexDocs](https://hexdocs.pm/ethers).
Expand Down
Loading