Skip to content

HF 26 changes prepared for merge to master.

Bartek Wrona requested to merge bw_v1_26_rc1_merge into master

Preliminary version of MR, just to start collecting release notes and other comments. Also useful for testing new version of hived node operating on mainnet (before HF26 application).

  • HF 26 changes:

    1. New block confirmation algorithm that enables One Block Irreversibility (aka OBI)
    2. Allow a larger HBD/Hive ratio before HBD haircut rule takes effect (threshold changed from 10% to 30%).
    3. Users can vote more often that once per 3 seconds (relaxed pre-HF26 limitation)
    4. Eliminated vote edit penalty
    5. Dust votes are considered as regular votes (i.e. disallows further block comment_options). Details
    6. Account authority can be changed twice per hour
    7. old/new json serialization is supported at transaction broadcast (to simplify 3rd party library adjust)
    8. Support for new scheme of binary serialization (to use Numeric Asset Identifier (NAI) format which is much more compact)
  • Nonconsensus features:

    1. Support for online and offline compression of block_log storage file.
    2. Support for exchange of compressed blocks during P2P communication.
    3. Many improvements to P2P layer
    4. Fixed functioning of the potential peers database (essentially the entire algorithm was rewritten as part of the fix).
    5. Implemented support for RC delegations.
    6. Deep analysis, redesign and reimplementation of Resource Credit calculation algorithm, resource credit cost recalculation
    7. Extended set of virtual operations, enhancing chain integration capabilities to 3rd party tools. Here is a list of all virtual operations: !581 (merged) Can be compared with version for HF25
    8. Large scale optimization of the entire block/transaction evaluation process (starting from receiving block/transaction up to writing it to the storage) using 1) worker threads for increased parallelism, 2) caching of already evaluated data in a new dedicated cache layer (aka full_transactions/full_blocks) to avoid redundant data calculation during execution, 3) and earlier processing of data that doesn't rely on state information that can be computed in parallel (e.g optimistic signature checking).
    9. Performance improvements to pending transactions processing
    10. Optimization of custom_json_operation validation
    11. Implemented support for building a mirror net. Added dedicated tool being able to convert mainnet blockchain into tested one, to be able fast setup testing network instance operating on fully supplied state data. This can significantly improve possibility to verify performance related issues in safe, mainnet-isolated environment.
    12. As a performance improvement, especially during block syncing, replaced the old block_log.index file with new block_log.artifacts file which also stores block_ids and meta-data about how individual blocks are compressed.
    13. Many improvements to internal statistic data collection tools to be able to measure execution times, memory allocation etc.
    14. Many improvements to logging on console and in p2p.log file.
  • cli_wallet improvements:

    1. Validates name of created accounts instead of creating random ones
    2. Can show its connection place
    3. Displays much more informations
    4. Allows to use account authorities to sign transactions
    5. Supports offline mode
    6. Allows to exit using ^C
    7. Merges wallet data to eliminate potential overwrite and data loss
    8. Outputs data in different formats, to better support integrations

Bugfixes (DLN: this section needs a lot of additions):

  • snapshot load enforces node chain-id evaluation (because loading a state can change applied hardfork state at given node). Previously live/new transactions could fail with missing authority related error, because of chain-id mismatch
  • Fixed locking in the Account History plugin, which could lead to dead lock in specific cases - see MR 513
Edited by Dan Notestein

Merge request reports