Skip to content

1.5.0 Release

Compare
Choose a tag to compare
@Nashatyrev Nashatyrev released this 26 Apr 20:19
· 851 commits to develop since this 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 and payable 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