mirror of
https://github.com/aljazceru/lnflow.git
synced 2026-01-07 06:24:24 +01:00
238 lines
8.1 KiB
Markdown
238 lines
8.1 KiB
Markdown
# Lightning Fee Optimizer
|
|
|
|
An intelligent Lightning Network channel fee optimization agent that analyzes your channel performance and suggests optimal fee strategies to maximize returns.
|
|
|
|
## Features
|
|
|
|
- **Real-time Data Analysis**: Ingests comprehensive channel data from LND Manage API
|
|
- **Intelligent Optimization**: Uses machine learning-inspired algorithms to optimize fees based on:
|
|
- Channel flow patterns
|
|
- Historical earnings
|
|
- Balance distribution
|
|
- Demand elasticity estimation
|
|
- **Multiple Strategies**: Conservative, Balanced, and Aggressive optimization approaches
|
|
- **Detailed Reporting**: Rich terminal output with categorized recommendations
|
|
- **Risk Assessment**: Confidence levels and impact projections for each recommendation
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Clone the repository
|
|
git clone <repo-url>
|
|
cd lightning-fee-optimizer
|
|
|
|
# Create virtual environment
|
|
python3 -m venv venv
|
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- **LND Manage API**: Running at `http://localhost:18081` (or configured URL)
|
|
- **Python 3.8+**
|
|
- **Synced Lightning Node**: Must be synced to the blockchain
|
|
|
|
## Quick Start
|
|
|
|
1. **Test the connection**:
|
|
```bash
|
|
python test_optimizer.py
|
|
```
|
|
|
|
2. **Run analysis only** (no recommendations):
|
|
```bash
|
|
python -m src.main --analyze-only
|
|
```
|
|
|
|
3. **Generate optimization recommendations**:
|
|
```bash
|
|
python -m src.main --dry-run
|
|
```
|
|
|
|
4. **Save recommendations to file**:
|
|
```bash
|
|
python -m src.main --output recommendations.json
|
|
```
|
|
|
|
## Command Line Options
|
|
|
|
```bash
|
|
python -m src.main [OPTIONS]
|
|
|
|
Options:
|
|
--api-url TEXT LND Manage API URL [default: http://localhost:18081]
|
|
--config PATH Configuration file path
|
|
--analyze-only Only analyze channels without optimization
|
|
--dry-run Show recommendations without applying them
|
|
--verbose, -v Enable verbose logging
|
|
--output, -o PATH Output recommendations to file
|
|
--help Show this message and exit
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Create a `config.json` file to customize optimization parameters:
|
|
|
|
```json
|
|
{
|
|
"api": {
|
|
"base_url": "http://localhost:18081",
|
|
"timeout": 30
|
|
},
|
|
"optimization": {
|
|
"min_fee_rate": 1,
|
|
"max_fee_rate": 5000,
|
|
"high_flow_threshold": 10000000,
|
|
"low_flow_threshold": 1000000,
|
|
"high_balance_threshold": 0.8,
|
|
"low_balance_threshold": 0.2,
|
|
"fee_increase_factor": 1.5
|
|
},
|
|
"dry_run": true
|
|
}
|
|
```
|
|
|
|
## How It Works
|
|
|
|
### 1. Data Collection
|
|
- Fetches comprehensive channel data via LND Manage API
|
|
- Includes balance, flow reports, fee earnings, and policies
|
|
- Collects 7-day and 30-day historical data
|
|
|
|
### 2. Channel Analysis
|
|
The system calculates multiple performance metrics:
|
|
|
|
- **Profitability Score**: Based on net profit and ROI
|
|
- **Activity Score**: Flow volume and consistency
|
|
- **Efficiency Score**: Earnings per unit of flow
|
|
- **Flow Efficiency**: How balanced bidirectional flow is
|
|
- **Overall Score**: Weighted combination of all metrics
|
|
|
|
### 3. Channel Categorization
|
|
Channels are automatically categorized:
|
|
|
|
- **High Performers**: >70 overall score
|
|
- **Profitable**: Positive earnings >100 sats
|
|
- **Active Unprofitable**: High flow but low fees
|
|
- **Inactive**: <1M sats monthly flow
|
|
- **Problematic**: Issues requiring attention
|
|
|
|
### 4. Optimization Strategies
|
|
|
|
#### Conservative Strategy
|
|
- Minimal fee changes
|
|
- High flow preservation weight (0.8)
|
|
- 20% maximum fee increase
|
|
|
|
#### Balanced Strategy (Default)
|
|
- Moderate fee adjustments
|
|
- Balanced flow preservation (0.6)
|
|
- 50% maximum fee increase
|
|
|
|
#### Aggressive Strategy
|
|
- Significant fee increases
|
|
- Lower flow preservation (0.3)
|
|
- 100% maximum fee increase
|
|
|
|
### 5. Recommendation Generation
|
|
|
|
For each channel category, different optimization approaches:
|
|
|
|
**High Performers**: Minimal increases to test demand elasticity
|
|
**Underperformers**: Significant fee increases based on flow volume
|
|
**Imbalanced Channels**: Fee adjustments to encourage rebalancing
|
|
**Inactive Channels**: Fee reductions to attract routing
|
|
|
|
## Example Output
|
|
|
|
```
|
|
Lightning Fee Optimizer
|
|
|
|
Checking node connection...
|
|
📦 Current block height: 906504
|
|
|
|
Fetching channel data...
|
|
Found 41 channels
|
|
|
|
🔬 Analyzing channel performance...
|
|
Successfully analyzed 41 channels
|
|
|
|
╭────────────────────────────── Network Overview ──────────────────────────────╮
|
|
│ Total Channels: 41 │
|
|
│ Total Capacity: 137,420,508 sats │
|
|
│ Monthly Earnings: 230,541 sats │
|
|
│ Monthly Costs: 15,230 sats │
|
|
│ Net Profit: 215,311 sats │
|
|
╰────────────────────────────────────────────────────────────────────────────────╯
|
|
|
|
High Performers: 8 channels
|
|
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓
|
|
┃ Channel ┃ Alias ┃ Score ┃ Profit ┃ Flow ┃
|
|
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩
|
|
│ 779651x576x1 │ WalletOfSatoshi│ 89.2 │ 36,385 │158.8M │
|
|
│ 721508x1824x1 │ node_way_jose │ 87.5 │ 9,561 │ 65.5M │
|
|
└───────────────┴────────────────┴───────┴────────┴───────┘
|
|
|
|
Generating fee optimization recommendations...
|
|
|
|
╭────────────────────────── Fee Optimization Results ──────────────────────────╮
|
|
│ Total Recommendations: 23 │
|
|
│ Current Monthly Earnings: 230,541 sats │
|
|
│ Projected Monthly Earnings: 287,162 sats │
|
|
│ Estimated Improvement: +24.6% │
|
|
╰────────────────────────────────────────────────────────────────────────────────╯
|
|
```
|
|
|
|
## Data Sources
|
|
|
|
The optimizer uses the following LND Manage API endpoints:
|
|
- `/api/status/` - Node status and health
|
|
- `/api/channel/{id}/details` - Comprehensive channel data
|
|
- `/api/channel/{id}/flow-report/last-days/{days}` - Flow analysis
|
|
- `/api/node/{pubkey}/details` - Peer information
|
|
|
|
## Integration with Balance of Satori
|
|
|
|
If you have Balance of Satori installed, you can use the recommendations to:
|
|
|
|
1. **Manually apply fee changes**: Use the recommended fee rates
|
|
2. **Rebalancing decisions**: Identify channels needing liquidity management
|
|
3. **Channel management**: Close underperforming channels, open new ones
|
|
|
|
## Safety Features
|
|
|
|
- **Dry-run by default**: Never applies changes automatically
|
|
- **Conservative limits**: Prevents extreme fee adjustments
|
|
- **Confidence scoring**: Each recommendation includes confidence level
|
|
- **Impact estimation**: Projected effects on flow and earnings
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch
|
|
3. Add tests for new functionality
|
|
4. Submit a pull request
|
|
|
|
## Troubleshooting
|
|
|
|
**Connection Issues**:
|
|
- Verify LND Manage API is running
|
|
- Check API URL configuration
|
|
- Ensure node is synced
|
|
|
|
**No Recommendations**:
|
|
- Verify channels have sufficient historical data
|
|
- Check that channels are active
|
|
- Review configuration thresholds
|
|
|
|
**Performance Issues**:
|
|
- Reduce the number of channels analyzed
|
|
- Use configuration to filter by capacity
|
|
- Enable verbose logging to identify bottlenecks
|
|
|
|
## License
|
|
|
|
MIT License - see LICENSE file for details. |