This repository has been archived by the owner on Dec 5, 2024. It is now read-only.
1.5.0 Release
This is mostly performance improvement release, however, it primarily affects regular sync time (fast sync is as fast as before). So here are improvements:
- Since ref counting DB introduction the DB write performance significantly dropped, so there are changes to compensate this drawback
- Asynchronous background write cache flush: the flush is now performed in background thread and almost doesn't affect the blocks import speed
- DB Bloom filters: updating the Trie in ref counting DB is significantly slowed down by inserting new nodes and deleting pruned nodes: each operation requires additional DB read to get current ref count. We added two bloom filters: the first is filtering non-existing node entries (speeds up insert-if-absent operation), the second is filtering node with
ref count < 2
(speeds up delete operation)
- New
Trie
implementation with optimized updates and root calculation gave us up to x20 speed up on some scenarios due to parallelization - Program precompiles DB cache improves performance in general and especially on some attack blocks
- Eliminate 'hot' prototype Spring beans where Spring machinery overhead became a problem
- Genesis config support allows specifying blockchain parameters (like fork blocks, chainId, etc) in Genesis
config
section - Latest Solidity new features support like
function types
andpayable
flag - Flush all DB changes with a single
LevelDB batchUpdate
should increase DB reliability - Get rid of the last
MapDB
dependency: now all the data is stored with LevelDB only - And of course, bugs fixing and new bugs creation
- NOTE: DB structure (
databaseVersion
) was changed so after upgrade your node will be forced to sync from scratch