Skip to content

Spring v1.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@bhazzard bhazzard released this 15 Aug 16:32
· 701 commits to release/1.0 since this release
a6327eb

Caution

This release (Spring v1.0.0-rc1) generates invalid snapshots and should not be used. Please use Spring v1.0.0-rc2.

Antelope Spring is the successor to Leap as the C++ implementation of node software for blockchain networks based on the Antelope Protocol.

Spring 1.0.0 introduces Savanna consensus, which reduces time to finality from 3 minutes to 1 second under typical network conditions.

Also featured in Spring 1.0.0 is a significant reworking of the State History Plugin to improve performance, reliability, and support cross block chain consensus leveraging the faster finality of Savanna.

Note

To maintain IBC compatibility with EOS after it transitions to Savanna consensus, other Antelope chains will need to upgrade to a Savanna compatible IBC contract which depends on the activation of the BLS protocol feature that was first introduced in Leap v5.0.0.

Important Links

New License Terms

Antelope Spring is made available under the terms of a Business Source License which is automatically granted for all usages which are Directly in Service of or Materially Dependent on the EOS Blockchain Network. Full details of the license terms may be found in the LICENSE file. Parties seeking a License for other usages may inquire by contacting [email protected].

Release Notes

Notable Changes

A subset of the changes in this release may require node operators and downstream service providers to make configuration changes. At a glance, these include:

  • Changes to some HTTP response codes
  • Introduced new Snapshot format
  • Disabled State Log History compression
  • Introduced new State History configuration options
  • Introduced new Finalizer configuration options
  • Introduced new vote-threads option

For actionable details and recommendations concerning the above changes, please see the Spring 1.0.0 upgrade guide. For complete technical details, consult the Complete Change Log and related pull requests below.

Deprecation Notices

The count field in the response to get_table_by_scope has been deprecated in this release, and will be removed in the next major version of Spring. See the deprecation schedule for more details.

Complete Change Log

Introduced in Spring v1.0.0

Notice

Disable state history log file compression to improve performance. Users who would like to compress files can use other methods outside of nodeos.


Protocol

Adds new chain_plugin option max-reversible-blocks. Specifies the maximum number of reversible blocks beyond current LIB to allow before the node is gracefully shutdown.
New chain api get_finalizer_info with information on finalizers and last votes.
Endpoint get_block_header_state updated for compatibility, and functionality reduced..


Performance

Improve k1 signing performance ~10%, upgrade libsecp256k.
Instead of placing the entire producer proposed schedule in the instant_finality_extension, only put a diff of the producer proposed schedule in the extension.
Instead of placing the entire finalizer set in the instant_finality_extension, only put a diff of the active finalizer policy in the extension.
Allow a larger number of proposer (producers) in Savanna from 125 to 64K. This matches the maximum number of allowed finalizers.
Improve state history performance by using a buffer for the de/compression pipeline.


Internals

Guard against throwing an error write_deatastream's destructor.
P2P to correctly report id of know pending blocks.
Versioning for Finalizer Safety Information file.
P2P to correctly report id of know pending blocks.
Update libsecp256k1 faster speed and matches what Bitcoin Core is using.
Move block time check in speculative mode above watermark check in production mode.
Improve Syncing to handle condition where blocks were received before being applied. Previously this condition caused the node to not ever request the next range of blocks.
cleos support for get_finalizer_info.
More robust syncing to handle unavailable blocks, when client does not have backing blocklog.
Only vote on recent blocks and simply voting by comparing time.
Switch to timestamp for better detection of most recent policy change.
Use lastest_qc_claim block_num in block header.
Add last_pending_finalizer_policy_generation into the finality digest calculation.
Update logic to use latest timestamp to pick winning fork, previously used block height.
Update finality digest adding level 3 commitments.
Update logic to use latest timestamp to pick winning fork, previously used block height.
Add timestamp and parent_timestamp to finality leaf nodes.
Require a QC (quorum certificate) on both finalizer policy sets (active and pending) before considering a QC to have reached quorum on a block with a pending finalizer policy change.
Switch to 2-chain for finality.
For the convenience of finality violation proofs, make the finality digest to commit to the root digest of a Merkle tree over a sequence of records extracted from the sequence of block_refs in the block_refs. This Merkle root digest is called reversible_blocks_root.
Remove unneeded snapshot_block_state_legacy_v7.
Revert previous changes to liveness rule. After evaluation the previous changes reduced liveness, and engineering identified a better solution.
Write out chain_head after vote_processor threads have stopped.
Reduce Log Spam on shutdown.
When a new finalizer policy or proposer policy is proposed in a block, the deep-mind logs should contain an entry associated with the block that contains the full policy (not just the diff). The keys within these policies should have string encoding.
To support ease of use SHiP, finality_data captures a new pending finality policy, including encoded public keys from pending finality data.
Move tracking of Savanna pending LIB into fork database. The fork database is in charge of tracking and persisting cached current pending Savanna LIB.
Refactor ForkDB to consolidate concept of HEAD and better track the pending irreversible block.
Validate QC by bitsize of votes.
More robust block log replay through refactoring head block state management.
Add hardened mode for reproducible builds.
Upgrade to clang v18 in Docker repeatable build. Improvements to reduce Docker build cache.
Clear out the state history log when Savanna transition is forked out.
Improve accuracy of state history by selectively including finalizer policy.
Add cases where we update peer syncing status to more accurately reflect peer syncing from us status.
Improved block id duplication logic to retain the correct state history with replay/resync.
Update application of finalizer policies to avoid edge cases.
More efficient P2P eliminating multiple requests for the same range of blocks.
P2P prevent syncing from running ahead o chain head, use chain head instead of fork database head for sync ahead calculation.
Add explicit ID to ACCEPT_BLOCK_V2 to improve DeepMind support.
Refactor ship log to no longer hold a mutex that can potentially block the main thread for extended (or even indefinite) time.
Significant improvement of thread logic for state history plugin, resolves bug where fork did not send over block in correct order due to incorrect threading logic.
When syncing/replaying optimize voting-start by processing on main thread.
Extend scenarios where a deleted safety data file may be recovered.
Avoid spamming peers with unnecessary votes when nodeos is first syncing old blocks.
Sync cherry pick commit, to align SHiP abi's by adding finality_data.
Correctly marks block_state as validated when fork_db contains the same block_state.
Align SHiP abi's by adding finality_data.
Shorten block syncing time, by sending handshake in lib_catchup and verify catchup is called.
Shift to new fork database only after irreversible transition is completed. Previously switch may occur before transition completed.
Fix sporadic issues, update ForkDB to return block matching block number.
Add strong QC block number to minimize size of proofs, and aid in finality violation proofs.
Update controller to proper set producer authority under Savanna.
Improve stability in P2P syncing for large forks with very small sync spans.
Add testing option.
Update to use the last pending finalizer policy in the history of the blockchain, if there are no pending finalizer policies in the queue, then the last pending finalizer policy is the active finalizer policy.
Resolves duplicate polices from advancing. Finality can advance multiple blocks, previously this may cause duplicate policies to advance.
Extend finality data to include full policy (including generation number) of the finalizer policy proposed in the associated block. This is used in SHiP data stream.
Make fc listener more robust by allowing binding of executor.
Remove unused key value database config starting from v7 snapshots.
Improve set_proposed_finalizers, has no side effects if transaction fails.
Correctly terminate-at-block when running in irreversible mode.
Use the correct finalizer policy when logging.
Avoid adding new proposer policy if there is no change.
Improve set_finalizers host function to take a packed finalizer format.
Move create and send vote off the main thread.
Improved algorithm governing generation of finalizer policy.
Fix small compiler warnings, mostly in tests.
Do not log at error for conditions that do not require action by a user.
Avoid using fork in log messages that are not related to micro-forks.
Check and test to ensure proposer policy is only set when there is a change.
Update representation of variant formate for fc
Improve snapshot scheduling to avoid race conditions, and fixes issues where no snapshot was taken during transition to Savanna.
Improve pack/unpack function which is used for votes in quorum_certificate.
Do not allow set_finalizers during transition.
Improve support for snapshots during transition by detecting transition and reading both legacy and transition blocks.
Do not use watermarks for Savanna. They are not needed or desired.
Make code more readable, by removing hotstuff nomenclature.
Move vote logging messages from net_plugin_impl logger to new vote logger. Done to move load off net_plugin_impl logger.
Add deep-mind ACCEPTED_BLOCK_V2 which will be exported for blocks after transition to Savanna.
Improve logic during application of a fork, do not advance LIB past HEAD.
Improve logic for activation of finalization policy. Now it activates the finalizer policy only after critical blocks become final.
Capture the Savanna action_mroots when constructing transition block_states. Includes validation logic to prevent block_state from being build when essential data is missing.
Fix stuck in peer syncing state. Delay sending in_sync until controller state is caught up to head, and judiciously apply sync states, and do not directly jump to in sync state.
Cleaner code, add static_assert for fc unpack of const type.
More robust handshaking, send handshake to current peers, this allows nodes to discover they are not syncing from peers.
Process votes in a dedicated thread pool.
Fix issue with last_pending_finalizer_policy_start_timestamp not being set/reflected


Test

Test versioning of Finalizer Safety Information.
Implement Savanna transition unit tests as part of CI/CD.
Implement Savanna disaster recovery unit tests.
Update tests to expect earlier arrival of blocks in fork_db.
Fine tune connection interval to better support restarts in multi-node tests.
Update the test to wait for longer to avoid racing ahead and missing finality.
Increase time to wait for a connection during a test multi-node restart.
Fix sign-compare warning in snapshot tests.
Update IBC tests to match policy transition change.
Update IBC smart contract to reflect finality digest changes.
Update tests resolve merge conflicts from multiple PRs applied during switch to 2-chain.
Add Savanna version of forking tests.
Update libtester to work for SHiP in Legacy and Savanna mode.
Log performance of CI/CD runs.
Tests for the smart contract bitset implementation , which is used in IBC and finality violation proofs contract.
New and Improved testing infrastructure, Savanna Cluster to support unit tests and fork tests.
Improve transaction finality fork test by supporting more than 2 forks.
Improve measurement of sync by waiting for begin block.
Improve reliability of SHiP tests in continuous integration testing.
Improved test coverage for Savanna IBC.
Speed up tests by avoiding unneeded BLS calculations. Part 1.
Add test consuming manually crated Leap3 state history log.
Remove production of unneeded blocks to improve performance of tests.
Increase settings in checktime test.
For better test stability increase timeout for tests.
To save on voting time configure single finalizer for default libtester.
Update test allow time for blocks to reach snapshot node.
Enhance default setup policy default constructor to active all protocol features and switch to Savanna.
Update system contract tests to work across various consensus modes.
Update partitioned block log tests to work across various consensus modes.
Updates deep mind tests to work across various consensus modes.
Updates to stabilize system contract tests across various consensus modes.
Update tests which did not properly transition to Savanna.
Update wasm config tests and access tests to work across various consensus modes.
Update currency tests and access tests to work across various consensus modes.
Add integration test of setfinalizers after transition.
Update wasm tests to work across various consensus modes.
Update misc tests to work across various consensus modes.
Update token, payloadless, and special account tests to work across different consensus modes.
Update read only tests to work across different consensus modes.
Update protocol features tests to support different consensus modes.
Remove unneeded check, as it was causing test failures for legitimate empty block scenarios.
Run unit tests in both Legacy and Savanna (Part 5).
Four node disaster recovery tests with finalizer lock and recovery from previous state.
Run unit tests in both Legacy DPOS and Savanna Consensus Modes, part 2.
Testing for IBC action proofs, and finalizer policy change proofs
Run unit tests in both Legacy DPOS and Savanna Consensus Modes, part 1.
Add transaction traces to support IBC proof tests.
Ad Ship test to verify get_block_result_v1 works across both Legacy and Savanna finality modes.
Update unit tests for block_tests, chain_tests, database_tests, and restart_chain_tests to run in both Legacy and Savanna (Part 4).
Have snapshot unit tests run in both legacy and savanna consensus modes (Part III).
Cleanup tests related to transition and finalizer_policy updates.
Add Ship test to verify get_block_result_v1 works across both Legacy and Savanna finality modes.
Update python escape sequences to fix syntax warnings.
Update standalone svnn_ibc unit test to include proof generation.
Add a test covering disaster recovery with 5 nodes (A, B, C, D, and P).
Increase allowed unlinkable block exceptions during syncing.
Integration test when producer and finalizer nodes are separate.
Disaster recovery test with four finalizers. Ensure block N on one node may be recovered after losing reservable blocks and starting from snapshot.
Temporarily disable ship streamer tests.


Logging

Better logging for aggregate_vote failure and add logging for proposer policy becoming active


Release

Merge version bump commit from beta release branch, and keep as dev version in main.
Bump version to 1.0.0-beta1.
Merge leap 5.0 branch into main.
Merge beta-1.2 into main.
Update chainbase submodule to latest, adds support for newer boost versions.


Chore

Version bump to 1.0.0-beta4.2.
API docs on get_finalizer_info_rpc.
Merge into main version Bump to Beta4.1.
Update to Beta4.
Update chainbase submodule.
Update abieos submodule to capture the SHiP ABI of string encoding of public key in finality_data.
More specific name for experimental binaries to avoid naming conflict starting at version 3.1.
Rename deb package to antelope-spring.
Pull in latest version of abieos submodule.
Update test schedule to finish within CICD limits.
Fixed missing antelope-spring package rename in reproducible Dockerfile.
Update abieos submodule to support Savanna SHiP ABI.
Merges no-diff version bump commits back into main.
Merge commit to bump release to 1.0-beta1.2.
Switch reference target back to main away from integration testing branch.
Second pass of Spring nomenclature updates.
Switch CDT to main branch after merging Savanna CDT functions from long lived branch.
Improve code hygiene by consolidating code into a larger include file and removing very small cpp file.
target main branch of reference-contracts for CICD testing.
Merge Savanna branch into main.
Merge main branch into savanna branch.
Sets licensing terms for Spring 1.0
Add info, warn, and Prometheus logging of votes that are not incorporated into block or configured finalizer block.
Merge code from main into Savanna. Includes rename to spring.
Rebrand to Spring.
Merge main commits into Savanna.
Transition to beta software license, intended to cover pre-stable release development.
Merge main into Savanna branch.

Logging

Now updating tracked_votes after the first insert.
On startup and shutdown log signature provider public key, mask out private key.
Improve vote logging move duplicates to trace level and index in add_vote log.
More appropriate logging levels for liveness/safety check failures.
Progress logging during snapshot creation.
Add logging when block has no QCs.
Update logging call to better represent timing of LIB advancement.
Say which BP produced the block when logging missing votes.
Log progress during snapshot loading.
Log block id with proposed finalizer policies.
Include name of missing plugin, when logging an appbase exception.
Improve fork database logging, additional data added at shutdown.

Cleancode

Fix minor spelling errors.
Add last_vote_received to connection status.
Use our own hardware_destructive_interference_sz to avoid GCC warning.
compute_transaction endpoint now returns failure trace, accidentally turned off in previous release.
Fix mixed signedness warning in tests.
Improvements to Finalizer, ForkDB, and Controller. Refactors code for readability, adds logging, and improves concurrency with additional mutex.
Update comments in unit tests to refer to 2-chain finality.
Do not use variable length arrays to avoid clang warning.
Fix sign-compare warnings in tests.
Update SHIP to pull by block id, resolves an issue where null blocks were pulled on a fork switch.
Clean up code in add to snapshot by removing unneeded apply.
Simplify API for accessing controller's head.
Rename extension to finality_extension.
Put back empty base_tester destructor for better hygiene.
Consistently include Boost Test Framework, linking to library.
Improve reporting of block number by reporting the actual LIB. Previously reported a calculated LIB block number.
Fix signedness warning in ibc test.
Rename protocol feature to Savanna.
Avoid nodiscard warning.
Fix signedness comparison warnings.
Fix signedness comparison warnings.
Removed obsolete todo.
Change to silence many interference-size warnings that arrived with usage of gcc13
Fix a small number of compile warnings.
Consolidate and cleanup duplicate getLatestSnapshot() and removeState() functions.

Bug Fix

Proper snapshot during transition when block log is not present.
Scope liveness rule to the same finalizer generation.
Improve data safety for transaction rollback and avoid unintended side effects for a proposed finalizer policy change during an aborted transaction.
Ensure votes are posted to an existing vote thread pool. Fixes a memory leak when there are no vote threads.
Add handshakes to cover additional P2P scenarios, including during a fork and when there are pending handshakes after a sync completes.
P2P


Contributors

Special thanks to the contributors that submitted patches for this release:

Post 5.0.0 changes from Leap repository

Chore

Bumps chainbase submodule to fix a compile & ASAN warning
Leap now uses AntelopeIO reference contracts during continuous integration testing. Making it easier to update and test contracts incrementally during development.


Release

CICD
Remove exec bit from lots of files.
Bump version for bug fix release.
Sync Commits for Bump to version 5.0.1.
Upgrade to github actions/upload-artifact@v4 which fixes large uploads, and makes artifacts viewable before workflow completes.
Version Bump to 5.0.0 stable.


Maintainability

Clean up large-lib-test.py by removing it.
Reorganize tests that listen on local socket.
Update to latest version of BLS12 submodule with clearer conversion parameters.
code cleanup to allow db_modes_test to complete when built with ASAN.
Workaround to avoid unused compiler warning.
Cleanup usage of stack variables in producer api plugin.
Fixes several undefined behavior (UB) bugs.
More verbose error reporting on snapshot load exceptions.
Clean separation of code for LLVM versions before (<9) and after (9+). Once Leap's LLVM standard is moved to 9+ set_new_handler() call will be removed.
Clearer help text for read-only-threads defaults.
Provide the full path of the snapshot file that can't be renamed if the rename fails.
Now report read-only API not enabled to caller, when read-only-threads is not configured.
Make a direct call to create a RAM based file. Previously lack of platform support required indirect syscall()
Bump chainbase to include updated tests.
Bump chainbase to include fix on globally registered segment manager end address.
Resolved warnings in unit test correct comparison of integer expressions of different signedness


Stability

Test update check for unlinkable blocks while syncing
Simplification of merkle tree max depth calculation.
Fix alignment issues between chainbase and leap
Move net_plugin_impl to be destroyed last, this simplifies code and resolves consumers trying to access it after destruction.
Brings in new version of chainbase to support large mapped tests.
Brings in new version of chainbase to fix issues on macos and linux 6.7.
Pull in chainbase fix to correctly dereference allocator.
Fix memory leak by moving initialization of http handler associated with app plugins. Prevents creation http requests that never get drained. This issue was only in leap v5-rc releases, never surfaced in a stable release.
Fix pinned builds to significantly reduce snapshot times by modifying snapshot output stream writes to work more efficiently with libc++.


Performance

TraceAPI remove sync to improve performance
Upgrade libsecp256k1 library for faster operations on keys.
Updates the reserve() call so that the vector capacity grows slower at a quadrically rate.
Improve overall performance of authority_checker by removing exceptions. At times up to 10% of time on main thread spent dealing with exceptions. Most frequent exceptions are from authority_checker.


Bug Fixes

To prevent compiling code as c++ 17, avoid using the eos-vm-oc.hpp which included types.hpp
Update EOS VM signal handler to be less greedy, addressing a condition experienced by a block-producer that resulted in an unlinkable blocks.
Correctly convert return value via ABI, allowing binary to variant conversation without crashing.
Better detection and recovery when a block producer gets out of sync. Previously producer was not able to sync back in and created unlinkable blocks.
Guard against errors when exceeding http-max-requests-in-flight
Tests state history and snapshot work well with jumbo transactions.
Additional enhancement to configuration parsing and check for chain_api_plugin, updated to search through options to be more resilient to changes in the timing of loading plugins.
Check and switch to lib_catchup when starting to sync.
Revs chainbase version to include a bug fix. Leap will now start up cleanly in non-mapped_private mode after failing to startup in mapped_private mode due to lack of swap and/or physical memory.
Add more robust configuration parsing and enhance check for chain_api_plugin. This change addresses failure to provide read-only transaction when using esoteric config pattern.
Account for LIB movement between request and receiving blocks by dropping blocks before LIB.


Test

Update python scripts to properly exit on error.
Adds test pass with AddressSanitizer.
Enable CI tests to check for undefined behavior.
Fix tests to use IPv4 for loopback.
Adds a test pass with assert()s enabled.
Improve http plugin unit tests by avoiding dangling listeners.
Test coverage for two conditions excessive network traffic or excessive number of connection.
Changes to socket handling to improve continuous integration test passes.
Disable subjective limits in tests for greater stability during test runs. In addition, prevents error on shutdown by extending the life of http_plugin_state thereby ensuring no invalid memory accesses.

Protocol

503 is now the HTTP error return code for exceeding http-max-bytes-in-flight-mb or http-max-in-flight-requests. Previous code was 429.


Other

[5.0 -> main] P2P: Pause net_plugin during snapshot write
[5.0 -> main] Test: Fix trx_generator handling of connection lost
Clean up controller signals to improve abstraction
[5.0 -> main] Add BLS_PRIMITIVES2 to bios-boot-tutorial.py
only run libtester tests on ubuntu22
[5.0 -> main] Update to bls12-381 with fp::operator==()
[5.0 -> main] Extra info level logging
[5.0 -> main] fix experimental-binaries creation on releases: lowercase org name in image tag
Rename pending_block_header_state to pending_block_header_state_legacy
bump abieos submodule
add some addtional webauthn tests
[5.0 -> main] merge up 3.2.5/4.0.5/5.0.0rc3 version bumps
[5.0 -> main] consolidated security fixes from 3.2.5/4.0.5/5.0.0rc3 to main
add a stub pinned_build.yaml on main so the pinned build can be performed in CI for 3.x/4.0
Rename block_header_state and block_state to block_header_state_legacy and block_state_legacy in preparation for Instant Fininality
[5.0 -> main] Return error for num == 0 for bls_g1_weighted_sum, bls_g2_weighted_sum and bls_pairing
[5.0 -> main] Update bls12-381 lib with affine non-montgomery public key proof of possession
[5.0 -> main] Adapt to changes in bls12-381 lib and add tests
Table of Contents proposal
add some hints on how to use bash-complete in README
[5.0 -> main] Fix two small performance issues in abi_serializer.
Fix a couple perf issues in fc::raw::pack and add tuple support.
[5.0 -> main] Fix non-working cleos set code and set abi commands, and add tests
[5.0 -> main] Test: net_plugin test cleanup
[5.0 -> main] Add context to contract exceptions
[5.0 -> main] Change remaining references of mandel to leap
Remove per-instance allocator and empty allocations from chainbase containers. Add cow vector.
[5.0 -> main] Benchmark BLS host functions, Do not require trailing = for base64 encoded strings
[5.0 -> main] Add dynamic check for pagemap support
[5.0 -> main] Fix base64 encoding - take 2
[5.0 -> main] Revert "Fix base64 encoding"
[5.0 -> main] Add additional tests for mapped_private
[5.0 -> main] Fix chainbase issue when shrinking the database size.
[5.0 -> main] Prometheus: Ensure valid unique_conn_node_id
[5.0 -> main] Disable EOS VM OC's subjective compilation limits in unit tests
[5.0 -> main] PH: Improve error handling and use one strand
[5.0 -> main] fix release workflow's artifact download to wait-for-exact-target not wait-for-exact-target-workflow
Remove thread hop to producer thread for trx signature recovery
[5.0 -> main] Recover keys in chain thread pool
[5.0 -> main] backport: upload core dumps from failed tests in CI
[5.0 -> main] PH: Reliability improvements
upload core dumps from failed tests in CI
[5.0 -> main] revert usage of zstd for .deb packages
globally (effectively) --catch_system_errors=no all boost-test based unit tests
[5.0 -> main] Minimize abort/start block for speculative blocks
[5.0 -> main] Normalize speculative & producer block intervals
[5.0 -> main] fix new signedness warnings to have a clean build for rc3
[5.0 -> main] Update Tutorial Readme
[5.0 -> main] Undo the temporary switch to mapped mode when loading a snapshot in mapped_private mode
[5.0 -> main] Increase max-transaction-time for read_only_trx unit tests
[5.0 -> main] don't run EOS VM OC's monitor compile task callback when socket being dtored
[5.0 -> main] make resource monitor plugin tests deterministic by using fixed fc::temp_directory instead of dynamic /tmp
[5.0 -> main] refactor threading of snapshot_scheduler_test
[5.0 -> main] Test Fix: Avoid deadlock on app_thread
[5.0 -> main] integrate reproducible build with CI Build & Test workflow
[5.0 -> main] P2P: Throttle over sync window
[5.0 -> main] automatically create experimental-binaries package on release
[5.0 -> main] Replaced cpu-effort-percent with produce-block-offset-ms
[5.0 -> main] SHiP: Fixes: Stack overflow, invalid index, split file access
[5.0 -> main] only use --eos-vm-oc-enable option in tests when OC is available, and tweak/fix location of its usage
[5.0 -> main] P2P: Fix: Throttling of last block of request caused lost block
[5.0 -> main] Chainbase performance improvement
[5.0 -> main] Recreate EOS VM OC code cache if corrupt
[5.0 -> main] hardening resource monitor manager plugin shutdown handling
[5.0 -> main] Signal accepted_block after it is marked valid
[5.0 -> main] Only return wasm config settings if configurable wasm limits enabled
[5.0 -> main] Test: read-only trxs should only be posted to read_exclusive queue
[5.0 -> main] Prometheus: Add stable identifier for P2P connections
[5.0 -> main] Fix compiler warning
[5.0 -> main] fix "All Required Tests Passed" CI Branch Protection
[5.0 -> main] merge release/5.0.0-rc2 version bumping from release/5.0 to main
[5.0 -> main] Test: larger timeout of set contract
[5.0 -> main] Fix unlinked blocks caused by deferred trx removal
[5.0 -> main] P2P: Modify log level for message to avoid confusion
[5.0 -> main] Support throttling block syncing to peers
[5.0 -> main] Test: Pass in exitOnError so that a retry is allowed
[5.0 -> main] Improve cleos error messages
[5.0 -> main] Test: Retry set contract on failure
[5.0 -> main] Fix possible segfault switching between read/write windows
[5.0 -> main] Merge release/5.0.0-rc1 to main and make main branch version to 5.1.0-dev


Contracts

Improve debugging for inline actions by adding additional context of the account that owns the action, the action that failed, and the receiver (to distinguish action calls from notification handlers)


Contributors

Special thanks to the contributors that submitted patches for this release: