- ADD_CHAIN138_TO_LEDGER_LIVE: Ledger form done; public code review repo bis-innovations/LedgerLive; init/push commands - CONTRACT_DEPLOYMENT_RUNBOOK: Chain 138 gas price 1 gwei, 36-addr check, TransactionMirror workaround - CONTRACT_*: AddressMapper, MirrorManager deployed 2026-02-12; 36-address on-chain check - NEXT_STEPS_FOR_YOU: Ledger done; steps completable now (no LAN); run-completable-tasks-from-anywhere - MASTER_INDEX, OPERATOR_OPTIONAL, SMART_CONTRACTS_INVENTORY_SIMPLE: updates - LEDGER_BLOCKCHAIN_INTEGRATION_COMPLETE: bis-innovations/LedgerLive reference Co-authored-by: Cursor <cursoragent@cursor.com>
10 KiB
Besu Archive Node Configuration Guide
Last Updated: 2026-01-31
Document Version: 1.0
Status: Active Documentation
Date: 2026-01-17
Purpose: Guide for configuring and managing Besu archive nodes (sentry nodes)
Overview
Sentry nodes are configured as full archive nodes to maintain complete blockchain history for archival purposes. This guide documents archive node configuration, storage requirements, and management.
Archive Node Configuration
Current Sentry Configuration
Node Type: Sentry (Full Archive)
Key Configuration:
# Archive node configuration
sync-mode="FULL" # Full blockchain sync
logging="INFO" # Detailed logs for archival
# RPC Configuration (internal only)
rpc-http-enabled=true
rpc-http-api=["ETH","NET","WEB3","ADMIN"]
# Network
discovery-enabled=true # Open P2P discovery
max-peers=25
# Permissioning
permissions-nodes-config-file-enabled=true
File: smom-dbis-138-proxmox/templates/besu-configs/config-sentry.toml
Archive Node Requirements
1. Sync Mode: FULL
sync-mode="FULL"
Verification: ✅ All sentry configs use sync-mode="FULL"
Purpose:
- Maintains complete blockchain history
- Enables historical state queries
- Required for full archive functionality
2. Logging: INFO
logging="INFO"
Verification: ✅ All sentry configs use logging="INFO"
Rationale:
- Detailed logs for archival purposes
- Better debugging for archive queries
- Necessary for historical analysis
Trade-off: Higher I/O overhead (~10-20%) compared to WARN logging
3. No Pruning
Current Configuration: ✅ Pruning not enabled (default: full archive)
Verification: No pruning-enabled or pruning-blocks-retained options in sentry configs
Purpose:
- Keep all historical data
- Enable unlimited historical queries
- Maintain complete blockchain archive
Note: If storage becomes an issue, consider enabling pruning with high retention, but this reduces archive completeness.
4. RPC APIs for Archive Queries
Current APIs: ["ETH","NET","WEB3","ADMIN"]
Archive-Relevant APIs:
ETH: Standard Ethereum APIs (including historical queries)ADMIN: Administrative operations
Verification: ✅ Appropriate APIs enabled for archive access
Storage Requirements
Archive Database Growth
Estimation (per Besu documentation):
- Block data: ~2-5 KB per block
- State data: Variable (grows with contract storage)
- Transaction receipts: ~500 bytes per transaction
Growth Rate:
- Current network: ~20 blocks/minute = ~1,200 blocks/hour
- Block data growth: ~2.4-6 MB/hour = ~58-144 MB/day
- With state data: Significantly higher (contract storage)
Storage Requirements:
| Time Period | Estimated Storage | Notes |
|---|---|---|
| 1 month | ~10-50 GB | Depends on transaction volume |
| 3 months | ~30-150 GB | Linear growth expected |
| 1 year | ~100-500 GB | State data may be higher |
| 5 years | ~500 GB - 2.5 TB | Long-term archival |
Current Assessment: Monitor storage usage and plan for growth
Storage Planning
Recommendations:
-
Initial Allocation:
- Minimum: 500 GB per archive node
- Recommended: 1-2 TB per archive node
-
Growth Planning:
- Monitor storage usage monthly
- Plan expansion before reaching 80% capacity
- Consider separate volumes for archive data
-
Backup Strategy:
- Regular backups of archive database
- Offsite backup for disaster recovery
- Retention policy for backups
Archive Node Verification
Configuration Verification
# Verify sync mode is FULL
grep "sync-mode" /etc/besu/config-sentry.toml
# Expected: sync-mode="FULL"
# Verify logging is INFO
grep "logging" /etc/besu/config-sentry.toml
# Expected: logging="INFO"
# Verify no pruning options
grep -i "pruning" /etc/besu/config-sentry.toml
# Expected: No output (pruning not enabled = full archive)
Current Status: ✅ All sentry configs verified as archive nodes
Functional Verification
Check Archive Status:
# Check sync status
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
# Expected: false (fully synced)
# Check latest block
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# Test historical query (verify archive capability)
curl -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x...","0x100"],"id":1}'
# Should return historical balance (archive nodes only)
Archive Node Management
Storage Management
Monitor Storage Usage:
# Check database size
du -sh /data/besu/database/
# Check disk usage
df -h /data/besu/
# Monitor growth over time
# (set up monitoring alerts at 80% capacity)
Storage Expansion:
- Plan expansion when approaching 80% capacity
- Backup archive data before expansion
- Expand volume or add storage
- Verify Besu continues operating
Backup and Recovery
Backup Strategy:
-
Database Backup:
- Full database backup weekly
- Incremental backups daily
- Offsite backup monthly
-
Configuration Backup:
- Backup config files
- Backup permission files
- Backup node keys
-
Recovery Procedures:
- Document recovery steps
- Test recovery procedures
- Maintain recovery runbook
Performance Optimization
Archive Node Performance:
-
Storage Performance:
- Use SSD for archive database (high read I/O)
- Consider NVMe for high-performance requirements
- Monitor I/O performance
-
Memory Optimization:
- Higher heap size (8-12 GB) for archive nodes
- Cache frequently accessed historical data
- Monitor memory usage for historical queries
-
Query Optimization:
- Index historical data appropriately
- Monitor query performance
- Optimize frequently used historical queries
Archive vs. Pruned Nodes
Full Archive (Current Configuration)
Characteristics:
- ✅ Complete blockchain history
- ✅ All historical state queries supported
- ✅ Unlimited historical access
- ⚠️ Higher storage requirements
- ⚠️ Higher memory requirements
Use Case: ✅ Sentry nodes (archival purposes)
Pruned Nodes (Not Recommended for Sentries)
Configuration:
pruning-enabled=true
pruning-blocks-retained=1024 # Keep last 1024 blocks
Characteristics:
- ❌ Limited historical data
- ❌ Historical queries may fail
- ✅ Lower storage requirements
- ✅ Lower memory requirements
Use Case: Non-archive RPC nodes (if storage is concern)
Note: Do NOT enable pruning on sentry nodes - they are archive nodes.
Alternative: Pruning Configuration (If Storage Becomes Issue)
Only consider if storage is a critical constraint:
# Enable pruning with high retention (NOT RECOMMENDED for full archive)
pruning-enabled=true
pruning-blocks-retained=100000 # Keep last 100,000 blocks (~70 days at 2s/block)
Warning: This reduces archive completeness. Prefer expanding storage instead.
Monitoring Archive Nodes
Key Metrics
-
Sync Status:
- Fully synced (archive complete)
- Syncing (catching up)
- Lag (blocks behind)
-
Storage Usage:
- Database size
- Disk usage
- Growth rate
-
Query Performance:
- Historical query latency
- Query success rate
- Archive query volume
-
Resource Usage:
- Memory usage (historical queries)
- Disk I/O (read-heavy)
- CPU usage (query processing)
Archive Node Strategy
Current Implementation
✅ Sentry nodes = Full archive nodes
- Complete blockchain history
- Detailed logs (INFO)
- Full sync mode
- No pruning
✅ Validators = Non-archive
- Minimal logs (WARN)
- Full sync (consensus requirement)
- Not archive nodes (no historical queries)
✅ RPC nodes = Non-archive (most)
- Minimal logs (WARN)
- Full sync (currently)
- Not archive nodes (API serving)
Archive Node Distribution
Current:
- Archive Nodes: 4 sentries (VMIDs 1500-1503)
- Non-Archive Nodes: Validators + RPC nodes
Recommendation: ✅ Appropriate distribution
- Sentries handle archival
- Other nodes run lean
- Centralized archive management
Storage Planning Example
Example: 1 Year Archive Growth
Assumptions:
- Block time: 2 seconds
- Blocks per day: 43,200
- Blocks per year: ~15.7 million
- Block data: ~3 KB per block (average)
- State data: Variable (depends on contracts)
Estimation:
- Block data: 15.7M × 3 KB ≈ 47 GB/year
- State data: 50-200 GB/year (varies widely)
- Total: ~100-250 GB/year per archive node
Planning:
- Initial: 1 TB allocation
- Year 1: ~750 GB remaining
- Year 2: ~500 GB remaining
- Year 3: ~250 GB remaining
- Action: Plan expansion by year 3
Best Practices
1. Storage Monitoring
- Monitor disk usage weekly
- Set alerts at 80% capacity
- Plan expansion proactively
2. Archive Verification
- Verify archive queries work
- Test historical state access
- Confirm sync status regularly
3. Backup Strategy
- Regular database backups
- Test recovery procedures
- Offsite backup for disaster recovery
4. Performance Monitoring
- Monitor query performance
- Track storage growth
- Optimize if performance degrades
Related Documentation
docs/04-configuration/BESU_CONFIGURATION_GUIDE.md- Configuration referencedocs/04-configuration/BESU_PERFORMANCE_TUNING.md- Performance tuningdocs/04-configuration/BESU_PATH_REFERENCE.md- Path structure
Summary
Archive Node Status
✅ Configuration Verified:
- All sentry nodes configured as full archive
sync-mode="FULL"✅logging="INFO"✅- No pruning enabled ✅
✅ Storage Planning:
- Monitor growth regularly
- Plan expansion proactively
- Maintain backup strategy
✅ Performance:
- Appropriate memory allocation
- SSD recommended for archive database
- Monitor query performance
Last Updated: 2026-01-17
Status: Archive Configuration Verified