1.8.0 Release
This release scope represents an ongoing work in performance improvement area and aims finishing of DB transition made by EthereumJ in the previous release. Though we've switched to RocksDB formally on v1.7.0, that version and consequent updates were very slow in terms of processing blocks during regular synchronization. Moving to the other DB engine is a big task, and we were not able to do it in one step. Now we got 5-10x block processing time improvement comparing to 1.7.x, faster regular sync than we had with LevelDB and speed which puts us to the next target: matching top clients performance. We are still slower but the difference is not in range of an order.
Along with database we were working on network improvements, which affects client speed too. Targeting memory usage, peer abuse and network attacks we've made changes which refines both regular and fast sync. See full change set below.
Features
- Convenient sync management for private networks #1094, #1050
- New gas price tracker #1056
- Ethhash events listener for miners #1084, #1095
- Local run configuration for Github tests #1087
Improvements
- Memory limit on outgoing eth messages #1057
- Reduced sync queue memory footprint #1062,
- Fast Sync memory improvements #1074, 02de75d
- Boost
RocksDB.get()
which increases processing speed from 5 to 10 times depending on the env #1061 - Resistance to attacks with wrong RLP length #1073
- Fast Sync peer rotation improvement #1074
- Basic protection from eclipse attacks #1082
- Limited outgoing transaction size a3535b0
Fixes
- Incorrect blocks total difficulty and ETH header responses in
sync.fast.skipHistory
mode #1060 - Race condition in
BlockchaiNImpl.updateBlockTotDifficulties()
99e22a5 - Sync fallback into infinite loop in private networks e0730e2