Leap v4.0.4 is a critical patch which eliminates a security vulnerability, and also includes bug fixes aimed at enhancing the stability and performance of Leap.
All Antelope nodes should upgrade to a version of leap containing the security patch (v3.1.5, v3.2.4, v4.0.4).
Leap v4.0.4 contains a security patch eliminating a denial of service vulnerability present in all prior versions of Leap.
Improved reporting of transaction failures in non-producing mode by immediately retrying them using a speculative block, resulting in faster resolution and reduced waiting time.
Transaction failures in non-producing mode were not being reported efficiently, leading to delays in resolving the issues.
The previous approach caused delays in addressing transaction failures, resulting in potential disruptions and slower processing.
With the implemented changes, transactionfailures in non-producing mode are now reported promptly, and the system initiates immediate retries using a speculative block. This reduces waiting time and improves the efficiency of resolving transaction failures.
Fixed incorrect serialization of std::optional fields in the AntelopeIO/leap repository. The issue occurred when a value was not provided for a std::optional field during serialization, resulting in missing flags. This PR addresses the problem by adding the necessary flags to properly serialize missing values.
Incorrect serialization of std::optional fields when a value is not provided.
The missing flags during serialization of std::optional fields led to incorrect representation of missing values.
Missing values in std::optional fields are correctly serialized, addressing the issue and preventing incorrect representation.
Improved socket shutdown and cleanup logic in version 4.0 of AntelopeIO/leap to address the issue of closing a connection on async_read with a closed socket. The changes resolve frequent p2p connection drops observed in version 4.0.3.
Closing a connection on async_read with a closed socket resulted in frequent p2p connection drops.
Frequent p2p connection drops impacted the stability and reliability of the system.
The changes ensure proper closure of connections and improve the stability and reliability of the system, resolving the issue of frequent p2p connection drops.
Support state_history_plugin clients when starting from a snapshot. Clients can now connect and receive the full delta of a snapshot without consuming additional blocks.
Starting Chronicle from a ship endpoint after a snapshot resulted in errors. The Chronicle did not receive the whole state first, which caused issues with populating its ABI database.
Clients connecting to state_history_plugin when starting from a snapshot experienced difficulties in receiving the complete snapshot delta.
Clients can now successfully connect to state_history_plugin and receive the full delta of a snapshot without any additional block consumption.
Before protocol feature replace_deferred is activated the transaction id of the scheduled transaction can differ from the packed_transaction that is executed. This PR restores the behavior of tracking and reporting in transaction traces the scheduled transaction id instead of the packed_transaction id. This was not a consensus error but rather the wrong trx id was being reported in transaction traces for scheduled transactions before the on-chain activation of replaced_deferred. This manifested itself by confusing SHiP in recording the scheduled transactions reported in a block.
Startup of state_history_plugin was very slow when a large number of SHiP logs were in the retain directory. This PR includes other performance improvements. Taken together these improvements resulted in a one order of magnitude improvement in benchmarked performance.
In this release of leap (v4.0.4), we have introduced better reporting for peer to peer connections.
In some cases, With this change block producers can see the correct state of their peers.
In this release of leap (v4.0.4), we have introduced a new manual dispatch workflow for Pinned Builds in CI. This workflow allows for more control and flexibility in running Pinned Builds using GitHub Actions.
To enable the manual dispatch workflow for Pinned Builds, the following actions were taken in leap v4.0:
The introduction of the manual dispatch workflow for Pinned Builds brings the following benefits:
Reduced the number of generated and expected transactions in Continuous Integration testing to reduce testing load, and increase reapability of tests.
Enhanced documentation for Special thanks to the contributors that submitted patches for this release:
Full Changelog: v4.0.3...v4.0.4
Leap v4.0.4 Release Notes
Security Patch
Eliminate denial of service vulnerability
Bug Fixes
Report transaction failed if trx was exhausted in non-producing mode
Summary:
Problem:
Impact:
Changes:
in_producing_mode() and in_speculating_mode()) for improved clarity
Resolution:
Fixed incorrect serialization scenario
PRs
Summary:
Problem:
Impact:
Changes:
libraries/libfc/include/fc/time.hpp and unittests/abi_tests.cpp files.
Resolution:
Close connection on aysnc_read with a closed socket
Summary:
Problem:
Impact:
Changes:
Resolution:
Support snapshot start with full deltas
Summary:
Problem:
Impact:
Changes:
Resolution:
Other Changes
Emit Correct Trace Id for Deferred Transactions Before the On-Chain ACtivation of Replaced-Defered.
PRs
Summary
Improve startup when large number of SHiP logs in retain directory
Summary
Changes to Logging
Summary:
Changes:
head_num was incorrectly reported as 0, even though the unlying value was correct.
Benefits:
Changes to Pinned Builds
Summary:
Changes:
Benefits:
Changes to Testing
Summary
Changes to Documentation
PRs
Summary:
nodeos --help by adding additional information for the transaction-retry-interval-sec and transaction-retry-max-expiration-sec options. This provides clearer instructions on how to configure these options effectively.
Changes:
transaction-retry-interval-sec and transaction-retry-max-expiration-sec options in nodeos --help
Benefits:
transaction-retry-interval-sec and transaction-retry-max-expiration-sec options
Further details on changes since last release
Contributors
Full list of changes since last release
PRs
CMAKE_INSTALL_PREFIX=/usr for pinned builds in CI