mirror of
https://github.com/aljazceru/lnflow.git
synced 2026-02-23 04:24:20 +01:00
376 lines
10 KiB
Markdown
376 lines
10 KiB
Markdown
# Lightning Policy Manager - Next-Generation charge-lnd
|
|
|
|
A modern, intelligent fee management system that combines the flexibility of charge-lnd with advanced inbound fee strategies, machine learning, and automatic safety mechanisms.
|
|
|
|
## Key Improvements Over charge-lnd
|
|
|
|
### 1. **Advanced Inbound Fee Strategies**
|
|
- **charge-lnd**: Basic inbound fee support (mostly negative discounts)
|
|
- **Our improvement**: Intelligent inbound fee calculation based on:
|
|
- Liquidity balance state
|
|
- Flow patterns and direction
|
|
- Competitive landscape
|
|
- Revenue optimization goals
|
|
|
|
```ini
|
|
[balance-optimization]
|
|
strategy = balance_based
|
|
fee_ppm = 1000
|
|
# Automatically calculated based on channel state:
|
|
# High local balance → inbound discount to encourage inbound flow
|
|
# Low local balance → inbound premium to preserve liquidity
|
|
```
|
|
|
|
### 2. **Automatic Performance Tracking & Rollbacks**
|
|
- **charge-lnd**: Static policies with no performance monitoring
|
|
- **Our improvement**: Continuous performance tracking with automatic rollbacks
|
|
|
|
```ini
|
|
[revenue-channels]
|
|
strategy = revenue_max
|
|
enable_auto_rollback = true
|
|
rollback_threshold = 0.25 # Rollback if revenue drops >25%
|
|
learning_enabled = true # Learn from results
|
|
```
|
|
|
|
### 3. **Data-Driven Revenue Optimization**
|
|
- **charge-lnd**: Rule-based fee setting
|
|
- **Our improvement**: Machine learning from historical performance
|
|
|
|
```ini
|
|
[smart-optimization]
|
|
strategy = revenue_max # Uses historical data to find optimal fees
|
|
learning_enabled = true # Continuously learns and improves
|
|
```
|
|
|
|
### 4. **Enhanced Safety Mechanisms**
|
|
- **charge-lnd**: Basic fee limits
|
|
- **Our improvement**: Comprehensive safety systems
|
|
- Automatic rollbacks on revenue decline
|
|
- Fee change limits and validation
|
|
- Performance monitoring and alerting
|
|
- SQLite database for audit trails
|
|
|
|
### 5. **Advanced Matching Criteria**
|
|
- **charge-lnd**: Basic channel/node matching
|
|
- **Our improvement**: Rich matching capabilities
|
|
|
|
```ini
|
|
[competitive-channels]
|
|
# New matching criteria not available in charge-lnd
|
|
network.min_alternatives = 5 # Channels with many alternative routes
|
|
peer.fee_ratio.min = 0.5 # Based on competitive positioning
|
|
activity.level = high, medium # Based on flow analysis
|
|
flow.7d.min = 1000000 # Based on recent activity
|
|
```
|
|
|
|
### 6. **Real-time Monitoring & Management**
|
|
- **charge-lnd**: Run-once tool with cron
|
|
- **Our improvement**: Built-in daemon mode with monitoring
|
|
|
|
```bash
|
|
# Daemon mode with automatic rollbacks
|
|
./lightning_policy.py daemon --watch --interval 10
|
|
```
|
|
|
|
## Installation & Setup
|
|
|
|
### Requirements
|
|
```bash
|
|
pip install httpx pydantic click pandas numpy tabulate python-dotenv
|
|
```
|
|
|
|
### Generate Sample Configuration
|
|
```bash
|
|
./lightning_policy.py generate-config examples/my_policy.conf
|
|
```
|
|
|
|
### Test Configuration
|
|
```bash
|
|
# Test without applying changes
|
|
./lightning_policy.py -c examples/my_policy.conf apply --dry-run
|
|
|
|
# Test specific channel
|
|
./lightning_policy.py -c examples/my_policy.conf test-channel 123456x789x1
|
|
```
|
|
|
|
## Configuration Syntax
|
|
|
|
### Basic Structure (Compatible with charge-lnd)
|
|
```ini
|
|
[section-name]
|
|
# Matching criteria
|
|
chan.min_capacity = 1000000
|
|
chan.max_ratio = 0.8
|
|
node.id = 033d8656...
|
|
|
|
# Fee policy
|
|
strategy = static
|
|
fee_ppm = 1000
|
|
base_fee_msat = 1000
|
|
|
|
# Inbound fees (new!)
|
|
inbound_fee_ppm = -50
|
|
inbound_base_fee_msat = -200
|
|
```
|
|
|
|
### Advanced Features (Beyond charge-lnd)
|
|
```ini
|
|
[advanced-section]
|
|
# Enhanced matching
|
|
activity.level = high, medium
|
|
flow.7d.min = 5000000
|
|
network.min_alternatives = 3
|
|
peer.fee_ratio.max = 1.5
|
|
|
|
# Smart strategies
|
|
strategy = revenue_max
|
|
learning_enabled = true
|
|
|
|
# Safety features
|
|
enable_auto_rollback = true
|
|
rollback_threshold = 0.3
|
|
min_fee_ppm = 100
|
|
max_inbound_fee_ppm = 50
|
|
```
|
|
|
|
## Strategies Available
|
|
|
|
| Strategy | Description | charge-lnd Equivalent |
|
|
|----------|-------------|----------------------|
|
|
| `static` | Fixed fees | `static` |
|
|
| `balance_based` | Dynamic based on balance ratio | Enhanced `proportional` |
|
|
| `flow_based` | Based on routing activity | New |
|
|
| `revenue_max` | Data-driven optimization | New |
|
|
| `inbound_discount` | Focused on inbound fee optimization | New |
|
|
| `cost_recovery` | Channel opening cost recovery | `cost` |
|
|
|
|
## Usage Examples
|
|
|
|
### 1. Basic Setup (Similar to charge-lnd)
|
|
```bash
|
|
# Create configuration
|
|
./lightning_policy.py generate-config basic_policy.conf
|
|
|
|
# Apply policies
|
|
./lightning_policy.py -c basic_policy.conf apply --macaroon-path ~/.lnd/admin.macaroon
|
|
```
|
|
|
|
### 2. Advanced Revenue Optimization
|
|
```bash
|
|
# Use advanced configuration with learning
|
|
./lightning_policy.py -c examples/advanced_policy.conf apply
|
|
|
|
# Monitor performance
|
|
./lightning_policy.py -c examples/advanced_policy.conf status
|
|
|
|
# Check for needed rollbacks
|
|
./lightning_policy.py -c examples/advanced_policy.conf rollback
|
|
```
|
|
|
|
### 3. Automated Management
|
|
```bash
|
|
# Run in daemon mode (applies policies every 10 minutes)
|
|
./lightning_policy.py -c examples/advanced_policy.conf daemon --watch \
|
|
--macaroon-path ~/.lnd/admin.macaroon
|
|
```
|
|
|
|
### 4. Analysis & Reporting
|
|
```bash
|
|
# Generate performance report
|
|
./lightning_policy.py -c examples/advanced_policy.conf report --output report.json
|
|
|
|
# Test specific channel
|
|
./lightning_policy.py -c examples/advanced_policy.conf test-channel 123456x789x1 --verbose
|
|
```
|
|
|
|
## Migration from charge-lnd
|
|
|
|
### Step 1: Convert Configuration
|
|
Most charge-lnd configurations work with minimal changes:
|
|
|
|
**charge-lnd config:**
|
|
```ini
|
|
[high-capacity]
|
|
chan.min_capacity = 5000000
|
|
strategy = static
|
|
fee_ppm = 1500
|
|
```
|
|
|
|
**Our config (compatible):**
|
|
```ini
|
|
[high-capacity]
|
|
chan.min_capacity = 5000000
|
|
strategy = static
|
|
fee_ppm = 1500
|
|
inbound_fee_ppm = -25 # Add inbound fee optimization
|
|
```
|
|
|
|
### Step 2: Enable Advanced Features
|
|
```ini
|
|
[high-capacity]
|
|
chan.min_capacity = 5000000
|
|
strategy = revenue_max # Upgrade to data-driven optimization
|
|
fee_ppm = 1500 # Base fee (will be optimized)
|
|
inbound_fee_ppm = -25
|
|
learning_enabled = true # Enable machine learning
|
|
enable_auto_rollback = true # Add safety mechanism
|
|
rollback_threshold = 0.25 # Rollback if revenue drops >25%
|
|
```
|
|
|
|
### Step 3: Test and Deploy
|
|
```bash
|
|
# Test with dry-run
|
|
./lightning_policy.py -c migrated_config.conf apply --dry-run
|
|
|
|
# Deploy with monitoring
|
|
./lightning_policy.py -c migrated_config.conf daemon --watch
|
|
```
|
|
|
|
## Performance Monitoring
|
|
|
|
### Real-time Status
|
|
```bash
|
|
./lightning_policy.py -c config.conf status
|
|
```
|
|
|
|
### Detailed Reporting
|
|
```bash
|
|
./lightning_policy.py -c config.conf report --format json --output performance.json
|
|
```
|
|
|
|
### Rollback Protection
|
|
```bash
|
|
# Check rollback candidates
|
|
./lightning_policy.py -c config.conf rollback
|
|
|
|
# Execute rollbacks
|
|
./lightning_policy.py -c config.conf rollback --execute --macaroon-path ~/.lnd/admin.macaroon
|
|
```
|
|
|
|
## Inbound Fee Strategies
|
|
|
|
### Liquidity-Based Discounts
|
|
```ini
|
|
[liquidity-management]
|
|
strategy = balance_based
|
|
# Automatically calculates inbound fees based on balance:
|
|
# - High local balance (>80%): Large inbound discount (-100 ppm)
|
|
# - Medium balance (40-80%): Moderate discount (-25 ppm)
|
|
# - Low balance (<20%): Small discount or premium (+25 ppm)
|
|
```
|
|
|
|
### Flow-Based Inbound Fees
|
|
```ini
|
|
[flow-optimization]
|
|
strategy = flow_based
|
|
# Calculates inbound fees based on flow patterns:
|
|
# - Too much inbound flow: Charge inbound premium
|
|
# - Too little inbound flow: Offer inbound discount
|
|
# - Balanced flow: Neutral inbound fee
|
|
```
|
|
|
|
### Competitive Inbound Pricing
|
|
```ini
|
|
[competitive-strategy]
|
|
strategy = inbound_discount
|
|
network.min_alternatives = 5
|
|
# Offers inbound discounts when competing with many alternatives
|
|
# Automatically adjusts based on peer fee rates
|
|
```
|
|
|
|
## Safety Features
|
|
|
|
### Automatic Rollbacks
|
|
- Monitors revenue performance after fee changes
|
|
- Automatically reverts fees if performance degrades
|
|
- Configurable thresholds per policy
|
|
- Audit trail in SQLite database
|
|
|
|
### Fee Validation
|
|
- Ensures inbound fees don't make total routing fee negative
|
|
- Validates fee limits and ranges
|
|
- Prevents excessive fee changes
|
|
|
|
### Performance Tracking
|
|
- SQLite database stores all changes and performance data
|
|
- Historical analysis for optimization
|
|
- Policy performance reporting
|
|
|
|
## 🔮 Advanced Use Cases
|
|
|
|
### 1. Rebalancing Automation
|
|
```ini
|
|
[rebalancing-helper]
|
|
chan.min_ratio = 0.85
|
|
strategy = balance_based
|
|
fee_ppm = 100 # Very low outbound fee
|
|
inbound_fee_ppm = -150 # Large inbound discount
|
|
# Encourages inbound flow to rebalance channels
|
|
```
|
|
|
|
### 2. Premium Peer Management
|
|
```ini
|
|
[premium-peers]
|
|
node.id = 033d8656219478701227199cbd6f670335c8d408a92ae88b962c49d4dc0e83e025
|
|
strategy = static
|
|
fee_ppm = 500 # Lower fees for premium peers
|
|
inbound_fee_ppm = -25 # Small inbound discount
|
|
enable_auto_rollback = false # Don't rollback premium peer rates
|
|
```
|
|
|
|
### 3. Channel Lifecycle Management
|
|
```ini
|
|
[new-channels]
|
|
chan.max_age_days = 30
|
|
strategy = static
|
|
fee_ppm = 200 # Low fees to establish flow
|
|
inbound_fee_ppm = -100 # Aggressive inbound discount
|
|
|
|
[mature-channels]
|
|
chan.min_age_days = 90
|
|
activity.level = high
|
|
strategy = revenue_max # Optimize mature, active channels
|
|
learning_enabled = true
|
|
```
|
|
|
|
## Expected Results
|
|
|
|
### Revenue Optimization
|
|
- **10-30% revenue increase** through data-driven fee optimization
|
|
- **Reduced manual management** with automated policies
|
|
- **Better capital efficiency** through inbound fee strategies
|
|
|
|
### Risk Management
|
|
- **Automatic rollback protection** prevents revenue loss
|
|
- **Continuous monitoring** detects performance issues
|
|
- **Audit trail** for compliance and analysis
|
|
|
|
### Operational Efficiency
|
|
- **Hands-off management** with daemon mode
|
|
- **Intelligent defaults** that learn from performance
|
|
- **Comprehensive reporting** for decision making
|
|
|
|
## Compatibility
|
|
|
|
### charge-lnd Migration
|
|
- **100% compatible** configuration syntax
|
|
- **Drop-in replacement** for most use cases
|
|
- **Enhanced features** available incrementally
|
|
|
|
### LND Integration
|
|
- **LND 0.18+** required for full inbound fee support
|
|
- **Standard REST API** for fee changes
|
|
- **Macaroon authentication** for security
|
|
|
|
## Summary
|
|
|
|
This Lightning Policy Manager represents the **next evolution** of charge-lnd:
|
|
|
|
**All charge-lnd features** + **advanced inbound fee strategies**
|
|
**Machine learning** + **automatic rollback protection**
|
|
**Revenue optimization** + **comprehensive safety mechanisms**
|
|
**Real-time monitoring** + **historical performance tracking**
|
|
**Easy migration** + **powerful new capabilities**
|
|
|
|
Perfect for node operators who want **intelligent, automated fee management** that **maximizes revenue** while **minimizing risk**. |