Spring v1.1.0-rc1
Pre-release
Pre-release
·
18 commits
to release/1.1
since this release
Warning
v1.1.0-rc1 has a known issue that impacts the integrity of state. Do not upgrade to rc1 (wait for next release).
Spring v1.1.0-rc1 reduces bandwidth usage, streamlines block handling, and adds support for designated smart contracts to leverage EOS VM OC for higher performance.
Notable Changes
- Optimized P2P Block Propagation: Introduced a Block Nack feature to reduce bandwidth usage and enhance sync efficiency during block propagation.
- Enhanced Block Processing Efficiency: several improvements, including deduplication of redundant posts and notifications for new blocks.
- Pause at Block: Introduced the ability to pause execution at a specified block height. This allows operators to halt processing at a predefined block for debugging, upgrades, or controlled synchronization.
- Optimized EOS VM OC for Designated Smart Contracts: Added an option to whitelist specific account suffixes for EOS VM OC execution during block production.
Upgrade Procedure
Upgrading from Spring 1.0.1+ requires no manual upgrade procedure. Simply stop nodeos, install 1.1.0, and relaunch nodeos.
New Config Options
Manage OC Whitelist
eos-vm-oc-whitelist
- Description: Specifies account suffixes to whitelist for
eos-vm-oc
, allowing designated smart contracts to bypass subjective limits and improve execution performance. - Usage:
The default value of eos-vm-oc-whitelist is xsat. If xsat is not desired, then an alternative must be specified. If there is a desire to not whitelist any accounts, then use eosio.null or any other account without a contract. Restart your node for changes to take effect. - Example:
To whitelist accounts ending in.suffix1
and.suffix2
, and remove the default value of ".xsat" accounts:eos-vm-oc-whitelist suffix1 suffix2
Disable Optimized Block Propagation
p2p-disable-block-nack
- Description: The Block Nack feature optimizes P2P communication by reducing bandwidth usage and improving block synchronization efficiency.
- Usage:
The Block Nack feature is enabled by default. It can be disabled by adding thep2p-disable-block-nack = true
option to your configuration file (config.ini
) and restart your node for changes to take effect. - Example:
To disable efficient block propagation:p2p-disable-block-nack = true
Specify a Transactions-Only Endpoint
p2p-listen-endpoint
- Description: Configures a P2P endpoint to accept only transaction traffic.
- Configuration:
Add the following to yourconfig.ini
or command line:p2p-listen-endpoint = <host>:<port>:trx
- Example:
To create a transactions-only endpoint on port 9876:p2p-listen-endpoint = 0.0.0.0:9876:trx
Complete Change Log
Optimized Block Propagation
- Optimize P2P Block Propagation with Block Nack Feature: Reduces Bandwidth Overload and Improves Sync Efficiency
- Simplify and improve duplicate connection logic.
- Update net-plugin to prioritize blocks, votes, and messages to ensure timeline arrival of critical information.
- Add test net to performance harness.
- Use net threads for connecting and timers.
- With the exception of unlinkable blocks, disconnect immediately instead of allowing for 13 invalid blocks before disconnect.
- Improve P2P performance by maintaining serialized format from block log to peer syncing.
- P2P: Add p2p-listen-endpoint :trx & :blk support
- P2P: Do not log expected conditions in send callback
Optimized Block Processing
- Optimize block processing - Part 1.
- Optimize block processing - Part 2: notifying only when new blocks are ready for processing.
- Optimize block processing - Part 3: deduplication of redundant posts.
- Enhance robustness of speculative block mode by allowing for future blocks. Future blocks commonly from clock-skew.
- Test for producer_plugin pause_at_block
OC for Designated Smart Contracts
- Support interrupt transaction, brings along app base submodule update.
- Remove subjective
eos-vm-oc
limits for whitelisted accounts. - Add option config
eos-vm-oc-whitelist
which allows for specification of whitelisted account suffixes for eos-vm-oc. - Always interrupt and restart long-running transactions once OC compile completes.
- Interrupt block validation on new best head, enables auto recovery from poison blocks.
- Make eos-vm-oc-whitelist option multitoken
- workaround cdt's small const memcpy host function calls in EOS VM OC
- Allow the dev&test synchronous EOS VM OC mode without adjusting a compile time option
- Don't pause billing timer when fetching EOS VM OC's
code_descriptor
Logging
Tests
- Added a suite of tests to verify SHiP recovers when restarted in a variety of log and index corruption scenarios.
- Eliminate spurious test failures by relaxing contract cache timing
- Retain logs when plugin tests fail.
- Resolve test instability in distributed transaction tests.
- Add test for invalid QC block number.
- Modify python integration test
Node.waitForBlock
to wait onblockNum
instead ofblockNum+1
. - Fix test contract
EOSIO_COMPILE_TEST_CONTRACTS
, by removing unusedEOSIO_DISPATCH
- Add unit test for
find_secondary
host functions. - Regenerate jumborow.wasm when
EOSIO_COMPILE_TEST_CONTRACTS
enabled. - Capture test output for debugging purposes.
- Refactor checktime and separate out those tests.
- Cleanup tests, removed tests for Leap 3.1 and below. Removed tests for
history_api_plugin
which does not exist in Spring. - Clean up Performance Harness tests, removed logic for versions of Leap 2.x.
- Update string for assert text.
- Update
ordered_diff
tests to check the diff result is not changing. - Test additional versions 7,8, and 9 of LLVM.
- Relax eos vm test limits on generated code size.
- Test more versions of LLVM.
- fix Python 3.12
SyntaxWarning
due to invalided escape sequence. - Add tests for
get_serialized_block_by_number
. - Resolve unused warning in libtester.
- Improve div and mod operations in webassemble to reduce overflows.
- Add compiler buildtins tests to Spring. Previously included in Leap CI.
- Adds finality transition tests modeled after the fastnet transition tests.
- Test: Create unique log files for nodeos
- Test: Increase shutdown timeout
- Performance Harness: Change default transaction generator trx expiration
Other
- Read-only transaction reporting
- Fix overlapped read only transaction timeouts on macOS
- Resolve cmake warnings on future version support.
- Enable
fsgsbase
instructions on Linux 5.9+ for EOS VM OC - Remove a log message when OC compilation completes for running contract
- Don't start kernel level platform timer when applying blocks
- Update appbase to version that handles ctrl-c during plugin_initialize
- Do not interrupt apply_block during replay
- Bump chainbase submod to main with
io_context
. - Update abieos submodule using for testing in Spring. abieos updates include nesting of arrays and tools to code/decode ABI values.
- Update eos-vm submodule to get eos-vm perf improvement.
- Add
.clang_format
file. - Code cleanup on HTTP plugin.
- Simplify
plugin_shutdown
logic. - Pull boringssl submodule directly from upstream source.
- Remove unused finality directories under
libraries
. - Update
raw.hpp
so that we can serialize and deserializeconst
types. - Silence shared pointer warnings from libstdc++ .
- Removed use of deprecated python distutils.
- Cleanup code update CLI11 to get rid of cmake warnings.
- Normalize usage of LIB.
- Code cleanup, simplify qc verification.
- Upgrade builds to use clang19.
- Fix build to work with clang19.
- Clean up code moving webassembly interface to unsigned int128 to avoid overflows.
- Bump main version to v1.1-dev.
- Do not unwind validated blocks on interrupt.
- On interrupt and shutdown do not attempt to apply blocks.
- Fix a race condition where an interrupt could interrupt a speculative transaction.
- Split
verify_qc
and add a new exception typeinvalid_qc
. - Increase capacity during heavy sync by moving
verify_qc
onto the chain thread pool. - Enable tracked_votes processing only if http chain_ro category is configured.
- Fix start_block to return correct return code for incomplete apply_block.
- Fix
unpacking()
issues for several standard types. - Improvement to Irreversible mode.
- Support speculative transaction execution in irreversible mode.
- Update appbase which only calls stop_executor_cb once.
- Enhance robustness of speculative block mode by allowing for future blocks. Future blocks commonly from clock-skew.
- Improved support for
eosio::chain
defined exceptions by removing dynamic-rethrow-exception - Refactor for
pause_at_block functionality
, not yet exposed as an API - Handle exceptions in controller signals.
- Replace
static_cast
of forwarding references withstd::forward
. - Fix warnings and test. test-instability
- Speed up shutdown when configured with large sync span. enhancement
- Ensure head block and last irreversible block are in sync when in IRREVERSIBLE mode. bug
- Move
get_info
off main thread and run in http thread. enhancement - Limit apply blocks.
- Refactor net library to create socket with provided executor. Improves P2P, HTTP, SHiP. bug
- Improve cross platform support for asio deadline timer.
- Remove unneeded LLVM v7 workaround.
- To keep compatibility with previous versions of Leap treat end block num=0 as forever in the snapshot scheduler.
- [1.0.4 -> main] bump eos-vm submodule
- [1.0.4 -> main] consolidated security fixes
- [1.0.4 -> main] bump version to 1.0.4
Contributors
Special thanks to the contributors that submitted patches for this release: