Spring v1.0.0
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
- Instructions to upgrade a node to Spring 1.0.0
- Instructions to transition a network to Savanna Consensus
- Recommendations for managing finalizer keys
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:
- Introduced Savanna consensus
- 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 - Introduced new
max-reversible-blocks
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.
Important
The following features have been deprecated in Spring v1.0.0 and will be removed in Spring v2.0.0:
- The Prometheus plugin
count
field inget_table_by_scope
response
Please see the Deprecation Log for more information.
Complete Change Log
Introduced in Spring v1.0.0
Savanna consensus
- 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..
- Allow a larger number of proposer (producers) in Savanna from 125 to 64K. This matches the maximum number of allowed finalizers.
- Versioning for Finalizer Safety Information file.
- cleos support for get_finalizer_info.
- Create Savanna unittests modeled after the fast testnet wave tests
- 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.
- 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.
- 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.
- 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.
- Clear out the state history log when Savanna transition is forked out.
- Improve accuracy of state history by selectively including finalizer policy.
- Update application of finalizer policies to avoid edge cases.
- 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.
- Align SHiP abi's by adding finality_data.
- 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.
- 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.
- Improve set_proposed_finalizers, has no side effects if transaction fails.
- 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.
- 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.
- Make fc listener more robust by allowing binding of executor.
- Process votes in a dedicated thread pool.
- Fix issue with last_pending_finalizer_policy_start_timestamp not being set/reflected
- Test verifying that proposer policy does not become active when finality has stalled
- Simplify disaster_recovery_2 test and verify correct LIB
- Test to demonstrate weak masking issue
- Test validating new fsi design
- Add integration tests for production-pause-vote-timeout
- 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.
- 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.
- 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.
- Fix liveness integration test flakiness
- 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.
- Improved test coverage for Savanna IBC.
- Speed up tests by avoiding unneeded BLS calculations. Part 1.
- To save on voting time configure single finalizer for default libtester.
- 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.
- 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.
- 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.
- [5.0 -> main] Add BLS_PRIMITIVES2 to bios-boot-tutorial.py
- Add info, warn, and Prometheus logging of votes that are not incorporated into block or configured finalizer block.
- 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.
- 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 block id with proposed finalizer policies.
- Improve fork database logging, additional data added at shutdown.
- 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.
- Rename protocol feature to Savanna.
- 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.
- Update to latest version of BLS12 submodule with clearer conversion parameters.
- FSI serialization: support dynamically sized data and verify checksum
- Use other_branch_latest_time for liveness
- P2P: Prevent node from syncing too far ahead
- Pause production when max-reversible-blocks reached
- SHiP: Fix SHiP replay over savanna transition blocks
- Improve finalizer safety file exception handling
- Account for LIB movement between request and receiving blocks by dropping blocks before LIB.
- Add transaction traces to support IBC proof tests.- 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.
- 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.
- 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 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.
- [5.0 -> main] Add BLS_PRIMITIVES2 to bios-boot-tutorial.py
- Add info, warn, and Prometheus logging of votes that are not incorporated into block or configured finalizer block.
- 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.
- 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 block id with proposed finalizer policies.
- Improve fork database logging, additional data added at shutdown.
- 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.
- Rename protocol feature to Savanna.
- 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.
- Update to latest version of BLS12 submodule with clearer conversion parameters.
- FSI serialization: support dynamically sized data and verify checksum
- Use other_branch_latest_time for liveness
- P2P: Prevent node from syncing too far ahead
- Pause production when max-reversible-blocks reached
- SHiP: Fix SHiP replay over savanna transition blocks
- Improve finalizer safety file exception handling
- Account for LIB movement between request and receiving blocks by dropping blocks before LIB.
- Better logging for aggregate_vote failure and add logging for proposer policy becoming active
- 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
- Verify important block invariants (specifically in finality and QC extensions) for Legacy and Transition blocks
- Additional checks to harden the processing of the finalizer and proposer policy diffs from block header
SHiP Rewrite
- Disable state history log file compression to improve performance. Users who would like to compress files can use other methods outside of nodeos.
- 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.
- Improve state history performance by using a buffer for the de/compression pipeline.
- Update libsecp256k1 faster speed and matches what Bitcoin Core is using.
- Bumps chainbase submodule to fix a compile & ASAN warning
- Update chainbase submodule.
- [5.0 -> main] SHiP: Fixes: Stack overflow, invalid index, split file access
- Update abieos submodule to capture the SHiP ABI of string encoding of public key in finality_data.
- 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.
- To support ease of use SHiP, finality_data captures a new pending finality policy, including encoded public keys from pending finality data.
- More robust block log replay through refactoring head block state management.
- Improved block id duplication logic to retain the correct state history with replay/resync.
- 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.
- Refactor ship log to no longer hold a mutex that can potentially block the main thread for extended (or even indefinite) time.
Other
- v7 snapshot loading failures
- Loading from snapshot with block strides
- Check for
chain_head.dat
on snapshot load - treat a end_block_num=0 as "forever" in snapshot scheduler for compatibility with leap 4.0
- P2P: Sync not making progress after a timeout and reassign_fetch
- P2P: Sync mode stuck after hitting max-reversible-blocks, after restart
- P2P: Limit requested blocks to avoid max-reversible-blocks
- max-reversible-blocks syncing old blocks
- log entry for legacy producer schedule broken in rc1
- fix true_lowest() for uint128[2] index; possibly resolving some secondary table row RPC queries
- limit the vector size that can be reserved
- Guard against throwing an error write_deatastream's destructor.
- P2P to correctly report id of know pending blocks.
- Add changes required for updating to boost 1.86 - but without the boost upgrade
- Update chainbase to tip (initialization / move operations update)
- Remove unnecessary code that cannot be executed.
- P2P to correctly report id of know pending blocks.
- 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.
- More robust syncing to handle unavailable blocks, when client does not have backing blocklog.
- Remove unneeded snapshot_block_state_legacy_v7.
- Reduce Log Spam on shutdown.
- Add hardened mode for reproducible builds.
- Upgrade to clang v18 in Docker repeatable build. Improvements to reduce Docker build cache.
- Add cases where we update peer syncing status to more accurately reflect peer syncing from us status.
- 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.
- Shorten block syncing time, by sending handshake in lib_catchup and verify catchup is called.
- Add testing option.
- Remove unused key value database config starting from v7 snapshots.
- Correctly terminate-at-block when running in irreversible mode.
- Fix small compiler warnings, mostly in tests.
- Do not log at error for conditions that do not require action by a user.
- 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.
- 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)
- Improve restart production integration 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.
- 503 is now the HTTP error return code for exceeding
http-max-bytes-in-flight-mb
orhttp-max-in-flight-requests
. Previous code was 429. - Fine tune connection interval to better support restarts in multi-node tests.
- Fix sign-compare warning in snapshot tests.
- Log performance of CI/CD runs.
- Tests for the smart contract bitset implementation , which is used in IBC and finality violation proofs contract.
- Improve measurement of sync by waiting for begin block.
- Improve reliability of SHiP tests in continuous integration testing.
- 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.
- Update test allow time for blocks to reach snapshot node.
- Remove unneeded check, as it was causing test failures for legitimate empty block scenarios.
- Update python escape sequences to fix syntax warnings.
- Temporarily disable ship streamer tests.
- Additional debug output
- Logging improvements
- 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.
- various different signedness warning fixes
- bump chainbase submodule to main with signedness fix
- [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
- 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 - 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
notwait-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
withproduce-block-offset-ms
- [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
- Version bump to 1.0.0-beta4.2.
- API docs on get_finalizer_info_rpc.
- Merge Savanna branch into main.
- Merge main branch into savanna branch.
- Sets licensing terms for Spring 1.0
- 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.
- Merge into main version Bump to Beta4.1.
- Update to Beta4.
- 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.
- Progress logging during snapshot creation.
- Log progress during snapshot loading.
- Include name of missing plugin, when logging an appbase exception.
- 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.
- 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.
- 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.
- Proper snapshot during transition when block log is not present.
- P2P: Fix switch from lib catchup to head catchup. Fixes bug which incorrectly assumed blocks in dispatcher list were applied
- Leap now uses AntelopeIO reference contracts during continuous integration testing. Making it easier to update and test contracts incrementally during development.
- CICD: use github provided token for git in submodule regression check
- 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.
- Clean up large-lib-test.py by removing it.
- Reorganize tests that listen on local socket.
- 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
- add
BOOST_TEST_DEFAULTS_TO_CORE_DUMP
to libtester users - 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++.
- 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 fromauthority_checker
. - 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.
- Update
payloadless
contract to avoid UB in shift operator. - Don't use deduced return type in test contract as it fails in template instantation
- restore cmake dependency needed for test contract compilation
- Upgrade test to resolve race condition where test results were checked after policy change was applied.
- Adds sophisticated test for production pause scenario.
- Update liveness tests to be more robust and less flaky.
- Test to validate new, generation 1, finalizer safety information.
- Improve finalizer policy changes in test by changing keys multiple times. Previously changed the order of keys.
- Add test case to demonstrate weak masking issue.
- Simplify disaster recovery test and verify correct Last Irreversible Block.
- Improve integration testing by changing default SIGSEV handling.
- Add test to validate proposed finality policy does not become active when chain finality is not progressing.
- Adds finality transition tests modeled after the fastnet transition tests.
- Update test to be less strict, will examine a few blocks before indicating failure.
- Test versioning of Finalizer Safety Information.
- Implement Savanna transition unit tests as part of CI/CD.
- Version bump to v1.0.0-rc3.
- Bump chainbase submodule to include signedness fix.
- Bump version to v1.0.0-rc2.
- Update version to v1.0-rc1.
- Version bump to 1.0.0-beta4.2.
- Prepare for boost 1.86 upgrade.
- Upgrade chainbase, fixes some issues found in CI/CD tests.
- More appropriate logging for block production issues.
- Improve logging for cleos set contract failures.
- Fix logging of legacy proposer schedule.
- Better logging for aggregate_vote failure, and better logging when proposer policy becomes active.
- Do not log no-votes for pre-Savanna blocks.
- Prune prometheus metrics to the most useful set.
- More efficient logging track votes only for recent blocks.
- Now updating tracked_votes after the first insert.
- On startup and shutdown log signature provider public key, mask out private key.
- Updates to improve management of backing file for finalizer safety information.
- Add support to replay finality transition blocks over SHiP. Fixes nodeos crash when replaying transition from blockslog.
- Change behavior to pause production when max-reversible-blocks are reached.
- Optimize pre-fetch block syncing to prevent node from syncing too far ahead.
- Update finalizer logic to resolve weak vote, masking issues.
- New version of Finalizer Safety Information file to support dynamically sized data, with checksum.
- Improve where calculation of max_reversible_blocks_allowed is performed.
- Limit vector size that can be reserved.
- Fix true_lowest() initialize to zero by default.
- Replay from Blocks in the retained directory.
- To support snapshots and and faster table loading introduced in Spring, build stable ids in chainbase for tables.
- Optimize P2P syncing, tracking time to know when to start a new sync.
- Until pause at block height is available this fix enables use of forkdb to advance LIB on startup when connected to peers, but does not read from forkdb on startup when no peers are connected.
- Max reversible blocks only enforced on Savanna blocks.
- Validate chain_head is not present when loading a snapshot.
- Limit sync-fetch-span by max-reversible-blocks if needed.
- Fix edge case transitioning to finalizer policy on shutdown by setting the correct timestamp for pending finalizer policy change.
- Improve Finality Safety Information, consistently initializing block_ref, and ensuring weak votes aren't masked.
- Use shared pointer to reduce cost of encoding base digest.
- Pause block production when not receiving votes. This behavior is intended as a medium-term restriction in nodeos to help block producers be aware of common misconfigurations of their nodes that would hinder vote propagation and advancement of finality.
- Update peer syncing logic to reset sync_source only for connected peers we are currently syncing from.
- Add compile option BOOST_UNORDERED_DISABLE_NEON to better support arm.
- Improve finalizer policy transition by always promoting a proposer policy to active on the first block of a round. That proposer policy should never be the one that was proposed in the prior round. It should have been proposed at least two rounds back.
- Improve reporting of chainbase's db size by including a reclaimable size.
- Provide 500ms for speculative blocks.
- Disable NEON due to conflict in softfloat library which created problems on ARM builds.
- Fix net_plugin requesting same range repeatedly.
- Additional validations on QC's votes.
- Nodes will not refuse to start from a snapshot if there is no blocks log but there is a fork database.
- Avoid dangling reference in producer plugin by providing explicit type for pointer to copy of chain_head.
- Allow replaying a chain from genesis while keeping the state history logs intact.
- Guard against throwing an error write_deatastream's destructor.
- P2P to correctly report id of know pending blocks.
- P2P to correctly report id of know pending blocks.
- Fix signesdess warnings.
- Remove unnecessary code that cannot be executed.
- Improve lower bound lookups on protocol feature activations.
- Fix different signedness warning.
- Fix minor spelling errors.
- Add last_vote_received to connection status.
- To keep compatibility with previous versions of Leap treat end block num=0 as forever in the snapshot scheduler.
- Improve performance of
_object_to_iterator
, a frequently used operation on the main thread. - Modify snapshot sections to allow parallel loading, significant decrease in snapshot loading time.
- Reduce snapshot loading time by utilizing multiple threads.
- Add integration test for --max-reversible-blocks
- Test accept_block_header, accept_block, and irreversible_block signals
Contributors
Special thanks to the contributors that submitted patches for this release: