Releases: AntelopeIO/spring
Spring v2.0.0-dev1.1
Spring v2.0.0-dev1.1 changes the behavior of get_sender()
in sync calls based on developer feedback. See #1738 for details. For compatibility with the live developer preview testnet this modification is being done as a temporary protocol feature for the dev1 release. Future releases will include this new behavior in the SYNC_CALL
protocol feature.
Nodes connected to the developer preview testnet will need to upgrade to this release. Nodes on private or local testnets should activate GET_SENDER_FIX
to get the updated behavior.
Warning
This is a Developer Preview release, intended for testing and feedback only. Future releases will contain breaking changes. Data files created by 2.0.0-dev1.1 (such as block logs, snapshots, state history logs, etc) will not necessarily be compatible with any future releases. 2.0.0-dev1.1 should not be used on chains other than chains specifically testing the 2.0.0-dev1.1 preview release.
Contributors
Special thanks to the contributors that submitted patches for this release:
Spring v2.0.0-dev1
Spring v2.0.0-dev1 is the first developer preview release of the Spring 2.0 series, focussing on the initial introduction of Sync Calls for developer feedback.
Warning
This is a Developer Preview release, intended for testing and feedback only. Future releases will contain breaking changes. Data files created by 2.0.0-dev1 (such as block logs, snapshots, state history logs, etc) will not necessarily be compatible with any future releases. 2.0.0-dev1 should not be used on chains other than chains specifically testing the 2.0.0-dev1 preview release.
Sync Calls Overview
Sync Calls introduce a new mechanism for smart contracts to synchronously call other contracts and receive a return value, enabling more expressive and modular contract design.
This release includes:
- Protocol Feature Activation: Sync Calls are gated behind a protocol feature (
sync_call
) and require activation by Block Producers. - New Host Functions: Includes
call()
,get_call_data()
, andset_call_return_value()
for performing and managing sync calls inside contract code. - Return Value Support: Sync calls can pass and receive binary-encoded values up to configural size limit (default 512 KB).
- Nested and Recursive Calls: Contracts can perform nested sync calls up to a configurable max depth (default 16).
- Entry Point Validation: Contract deployment checks for valid
sync_call()
entry points and signature correctness. - Resource Limits and Config: Introduces
chain_config_v2
andsnapshot_v9
, allowing on-chain governance of call depth and data size limits. - Access Scope Enforcement: Supports enforcing read-only contexts and privileged access within sync calls.
- Host Function Constraints: Action-specific host functions (e.g.
send_inline
) are restricted within sync calls to prevent side effects. - Console Tracing: Console output from sync calls is captured and displayed in a structured hierarchy for better debugging.
- Call Traces: Each sync call is tracked via structured call traces with full metadata, returned as part of the action trace.
Note
In order to use Sync Calls in smart contracts, you will need to use CDT v5.0.0-dev1.
For details on how to use the new Sync Calls features, please see the Developer's Guide to Sync Calls.
Platform Support
Spring 2.0.0 no longer supports Ubuntu 20.04.
Changes
New Sync Calls Feature
- SC: SYNC_CALL protocol feature definition and registration by @linh2931 in #1222
- SC: Implement boilerplate code for new host functions call, get_call_data, and set_call_return_value by @linh2931 in #1238
- SC: Merge main to sync_call 03-06-25 by @linh2931 in #1241
- SC: Implement the core functionalities of sync calls by @linh2931 in #1251
- SC: Introduce chain_config_v2 and snapshot_v9 for max_sync_call_depth and max_sync_call_data_size by @linh2931 in #1257
- SC: Implement
get_call_data
,set_call_return_value
andget_call_data
host functions by @linh2931 in #1258 - SC: Validate sync call entry point by @linh2931 in #1266
- SC: Tests for sync calls without parameters, not returning a value, or returning a 0-length value by @linh2931 in #1300
- SC: privilege support by @linh2931 in #1311
- SC: Enforce host function preconditions for sync calls by @linh2931 in #1296
- SC: enforce
max_sync_call_depth
for nested and recursive sync calls by @linh2931 in #1285 - SC: Introduce host_context class as the interface to the host and as the base class for apply_context and sync_call_context by @linh2931 in #1273
- SC: Merge main branch into sync call branch (4/7/2025) by @linh2931 in #1326
- SC: add support for v9 snapshots to
spring-util snapshot info
by @spoonincode in #1327 - SC: Hide max_sync_call_depth and max_sync_call_data_size in the return value of get_consensus_parameters if sync_call protocol feature is not activated by @linh2931 in #1331
- SC: Merge
main
branch intosync_call
branch (4-11-25) by @linh2931 in #1364 - SC: save & restore GS register to allow nested EOS VM OC executors by @spoonincode in #1382
- SC: A new approach to managing Wasm allocators in controller by @linh2931 in #1346
- SC: Merge
release/2.0
intosync_call
branch (4-18-25) by @linh2931 in #1406 - SC: Support read only sync call by @linh2931 in #1404
- SC: point to head of eos-vm sync_call branch by @linh2931 in #1417
- SC: Implement sync call trace by @linh2931 in #1333
- SC: Fix read_only flag in call traces and make code cleaner in read only processing by @linh2931 in #1410
- SC: Make sure return value is retained if set_call_return_value() is called before eosio_exit() by @linh2931 in #1427
- SC: Add SHiP support for sync call traces by @linh2931 in #1340
- SC: Merge release/2.0 to sync_call (4/29/25) by @linh2931 in #1466
- SC: Implement EOSVM-OC support for sync calls by @linh2931 in #1378
- SC: Implement memory pools with variable-sized memory slices for OC by @linh2931 in #1451
- SC: Revert entry point validation by @linh2931 in #1453
- SC: Sync call entry point validation for
eosvm
,eosvm-jit
, andeosvmoc
by @linh2931 in #1455 - SC: Support sync_call entry point function to return execution status by @linh2931 in #1525
- SC: Revert SHiP Support for call_trace by @linh2931 in #1556
- SC: Support call trace deserialization in ABI serializer by @linh2931 in #1576
- SC: Set up infrastructure for writing sync call tests using contracts in C++ by @linh2931 in #1591
- SC: Pretty print sync call consoles from contract in call hierarchy by @linh2931 in #1641
- SC: Add comprehensive tests using test-contracts in C++ by @linh2931 in #1651
- SC: Support long sync call names by @linh2931 in #1701
- SC: Cleos support of displaying call traces and console logs by @linh2931 in #1724
- SC: Support consolidated single sync call ABI section by @linh2931 in #1725
- SC: Add sync calls to deep mind log by @linh2931 in #1439
Cleos Enhancements
- [2.0.0-dev] when outputting K1 public keys, always use
PUB_K1_
format by @spoonincode in #1561 - switch cleos to using UTF8 locale; allows using IDN endpoints by @spoonincode in #1590
- cleos convert un/pack_hex by @heifner in #1578
- Add stricter abi version checks in
cleos
andabi_serializer
by @greg7mdp in #1640 - Add core.vaulta support to cleos by @heifner in #1625
P2P Enhancements
Miscellaneous Enhancements
- [2.0.0-dev] Add support for
bitset
serialization inabi_serializer
. by @greg7mdp in #1531 - Updated docs with nodeos --help output by @heifner in #1459
- add missing check for MAX_NUM_ARRAY_ELEMENTS in the std::array pack/unpack. Also c++20 syntax update. by @greg7mdp in #1443
- Support truncate-at-block with terminate-at-block by @heifner in #1457
- [2.0.0-dev] Add a rethrow() to fc::exception to preserve exception type by @heifner in #1535
- [2.0.0-dev] Generate new snapshot on fork by @heifner in #1538
- remove unused to/from variant, to/from base58, and pack/unpack for some key types by @spoonincode in #1560
- Add support for fixed size arrays in abi_se...
Spring v1.2.1
Spring v1.2.1 is a non-breaking patch release focused on stability improvements in P2P synchronization, error handling, and testing resilience.
Notable Changes
-
TraceAPI Fix for Snapshot-Based Transactions
TraceAPI can now correctly locate transactions after starting from a snapshot, improving traceability across restarts. -
Error Reporting on Invalid Blocks
Node now logs clear error messages for invalid blocks, enhancing observability and debugging. -
Improve Catchup Sync Reliability
Prevent disconnects during catchup sync when a peer’s requested block isn't available, avoiding unnecessary disconnects and retries. -
Fix Sync Spamming for Rejected Blocks
Prevent spamming a syncing node with the same range of blocks when there is a rejected block.
Changes
- #1700: TraceAPI: Fix for finding trx after starting from snapshot
- #1672: Report error on invalid block
- #1663: P2P: Do not disconnect on catchup sync for unavailable block
- #1676: P2P: Fix repeated sync request on rejected blocks
- #1649: Add
-latomic
to link dependencies - #1647: Test: Modify sync test to sync from the same node
- #1657: Test: Do not error when there is an incoming connection
- #1659: Test: Wait on node to stop advancing LIB
- #1707: Test: Allow more time for node to startup and sync
Spring v1.2.0
Spring v1.2.0 is a minor release that enhances node connectivity, resilience, and operational simplicity of Spring nodes. The most notable new feature is Gossip-based Auto-peering for Block Producers.
Notes on Gossip-Based BP Auto-Peering
Spring v1.2.0 introduces a powerful new networking feature: gossip-based auto-peering for block producers. This system eliminates the need for manual peer configuration by enabling BPs to dynamically discover and connect to each other using authenticated gossip messages. The result is a self-healing consensus mesh that adapts gracefully to changes in the network—such as node redeployments, hard forks, or producer schedule changes—without requiring human coordination.
Registering BP Peering Keys
This feature requires the deployment of vaultafoundation/system-contracts
v3.9.0 or later, which introduces the ability for BPs to register on-chain peering keys using the regpeerkey
action. These keys are used to sign and validate gossip messages securely.
Configuring Gossip Peering
Block Proposers that wish to participate in the gossip mesh, must declare its public presence using one or more --p2p-bp-gossip-endpoint
entries.
Up to 8 active gossip entries per producer are supported. These entries are signed, gossiped to other participating peers, and refreshed every 30 minutes. Expired entries are pruned automatically after 1 hour.
Monitoring and Debugging
To inspect currently known BP gossip peers, Spring exposes a new API, /v1/net/bp_gossip_peers
, which returns the list of active gossip entries, including each peer's identity, endpoint, and expiration timestamp—useful for diagnostics or generating dynamic firewall rules.
Setup Instructions
For complete instructions on how to participate in BP Gossip-based BP Auto-peering, please see: https://github.com/AntelopeIO/spring/wiki/BP-Gossip-Peering-Instructions
Other Notable Changes
While gossip-based BP auto-peering is the headline feature of Spring v1.2.0, several other important improvements and fixes have also landed in this release:
IPv6 Support Restored
Fixed a regression in IP address parsing introduced in v1.1, fully restoring IPv6 compatibility in the net_plugin.
Improved OC Compile Scheduling
Optimized the handling of WebAssembly OC compiles by switching to an unbounded result queue and proactively releasing memory, reducing potential latency and memory overhead.
Agent Name in P2P Logs
Introduced support for a custom agent-name string in peer log formatting to help operators better identify connections.
Complete Change Log
Enhancements
- Validate finality mroot of Savanna blocks as a part of header validation.
- Cache the packed block data in
signed_block
so that it can be retrieved without having topack
it at time of serialization. performance - Print snapshot information using
spring-util
command. - Add
--dry-run
forpush action
in cleos. - Add gossip of BP peers.
- Retrieval of peers public keys from chainbase db.
- Modify p2p-auto-bp-peer to connect to all finalizers, the top 21 producers.
- Optimize processing of incoming blocks by removing an unneeded thread hop on nominal case.
- Add new options
_peer
and_nver
topeer-log-format
. - Increase send/receive buffer to 1Mb.
- Add interrupt of speculative transactions interrupting when a block is received.
- Add interrupt of read-only trxs on ctrl-c/SIGINT/SIGTERM/SIGPIPE. Do not interrupt read-only trxs when a block is received.
- Only show action return information when
ACTION_RETURN
is activated. - Improve hash function for
chain::name
- [1.2.0] P2P: BP gossip connections
- [1.2.0-rc3] P2P: Trim addresses
- [1.2.0-rc3] P2P: Allow p2p-bp-gossip-endpoint with duplicate server addresses
- [1.2.0-rc3] P2P: agent-name
- [1.2.0-rc3] TraceAPI: Add core.vaulta.abi and update eosio.* abis
- [1.2.0-rc3] Handle block log exception during replay
- [1.2.0-rc2] P2P: Versioned signed type for gossip_bp_peers_message::signed_bp_peer
- [1.2.0-rc2] P2P: Gossip BP peer enhancements
- use a global merkle thread pool to avoid creation and destruction of threads every block
- avoid copying action when computing action digest
- Optimize fork database open/read
- Do not interrupt apply_block on a received block if applying to head
- Update to peer_keys_db_t to match changes in eos-system-contracts pr 185
Logging
Documentation
Other
- [1.2.0-rc2] mark a couple variables used only for
assert()
as[[maybe_unused]]
to avoid warning - [1.2.0-rc2] use more portable
__builtin_bswap64()
- Add
vaulta_genesis
file. - remove C++20 ifdefs in merkle.hpp
- allow any executor for
post_async_task()
- Add some missing
std::move()
, usevariants
type consistently. - no need to use
std::packaged_task
; asio supports returning astd::future
directly - Ensure finalizercNode is synced up before terminating the first node in the cluster. test-instability
- Preserve test when evaluating a fork, add time to evaluate fork switch. test-instability
- Logs protocol activations during tests.
- Improve test helpers by adding common method for registering different test types.
- [1.2.0] Test: Wait on block before verification of pause
- [1.2.0] Test: Increase timeout
- [1.2.0-rc3] Test: Wait for pause to take affect
- [1.2.0-rc3] Test: Reduce throttle speed
- [1.2.0-rc3] Test: Relax hard thread test
- [1.2.0-rc3] Test: Wait on the correct head value
- [1.2.0-rc2] fix race on creation of
TestLogs
directory in TestHarness Utils - [1.2.0-rc1] Bump version to 1.2.0-rc1
- [1.2.0-rc2] bump version to 1.2.0-rc2
- [1.2.0-rc3] Bump version to 1.2.0-rc3
- [1.2.0] Version 1.2.0
- Remove empty file.
- Reduce strain on ci/cd by lowering TPS during performance tests. test-instability
- Bump bn256 submodule.
- Update code sanitizers to clang20.
- [Cleanup memcpy and memset to avoid wa...
Spring v1.2.0-rc3
Spring v1.2.0-rc3 further refines the block producer gossip protocol.
🔧 Notable Changes
-
Relaxed Gossip Endpoint Uniqueness
Updated uniqueness checks forp2p-bp-gossip-endpoint
to focus on the tuple[bp-account, outbound-IP]
, allowing duplicate server endpoints under controlled conditions. -
Endpoint Address Trimming
Enforced trimming of leading/trailing spaces in gossip endpoint configurations and peer hostnames to prevent connection errors due to stray whitespace. -
Restored IPv6 Support
Fixed the broken IPv6 parsing logic by correctly handling and trimming bracketed addresses, restoring full IPv6 compatibility innet_plugin
.
📝 Complete Change Log
Enhancements
- P2P: agent-name — Changed default agent name to “Spring Agent” ([#1551])
- P2P: Allow p2p‑bp‑gossip‑endpoint with duplicate server addresses — Relaxed uniqueness enforcement by outbound IP ([#1596])
- P2P: Trim addresses — Auto-trims whitespace from configured endpoints and peer hostnames ([#1597])
- Rebrand Updates — BIOS Boot tutorial rebranded to Spring identity ([#1536])
Bug Fixes
Tests
- Test: Wait on the correct head value — Fixed tests to ensure accurate block head references ([#1529])
- Test: Relax hard thread test — Loosened multi-threading constraints for test stability ([#1530])
- Test: Reduce throttle speed — Adjusted throttle delays for more permissive testing ([#1555])
- Test: Wait for pause to take effect — Enhanced timing in test workflows for pause/resume functionality ([#1565])
- TraceAPI: Add core.vaulta.abi and update eosio.* abis — Expanded ABI coverage in Trace API tests ([#1571])
Full Changelog: v1.2.0-rc2...v1.2.0-rc3
Spring v1.2.0-rc2
Note
1.2.0-rc2 changes the bp peering gossip protocol in ways that are incompatible with v1.2.0-rc1.
Spring v1.2.0-rc2 introduces significant advancements in the BP gossip protocol, enhancing peer discovery, connectivity, and network resilience. These updates build upon the dynamic auto-peering system introduced in v1.2.0-rc1, further streamlining block producer operations and network configuration.
Notable Changes
-
Enhanced BP Gossip Endpoint Configuration
Introduced the--p2p-bp-gossip-endpoint
option, allowing block producers to specify their account name, advertised inbound endpoint, and outbound IP address. This facilitates dynamic peer discovery and simplifies firewall configurations. -
BP Peer Entry Expiration Mechanism
Implemented an expiration system for BP peer entries, ensuring outdated information is purged and the network maintains up-to-date peer data. Entries expire after one hour, with updates propagated every 30 minutes. -
Increased BP Peer Entry Limit
Expanded the maximum number of BP peer entries per producer from 4 to 8, accommodating more complex network topologies and enhancing connectivity options. -
New API Endpoint for BP Gossip Peers
Added the/v1/net/bp_gossip_peers
API endpoint, providing real-time access to the current set of known BP gossip peers, aiding in monitoring and diagnostics. -
Agent Name Inclusion in Peer Logs
Extended thepeer-log-format
option to include the agent name, offering clearer identification in peer log statements and facilitating debugging. -
Versioned Signed BP Peer Messages
Adopted a versioned structure forsigned_bp_peer
messages, paving the way for future enhancements while maintaining backward compatibility.
What's Changed
- [1.1.4] Bump version to 1.1.4 by @heifner in #1435
- [1.1.4 -> 1.2.0-rc1] Bump version to 1.1.4 by @heifner in #1437
- [1.1.5] fix state history race on disconnect: drain session strand before destroying session by @spoonincode in #1446
- [1.1.5 -> 1.2.0-rc2] fix state history race on disconnect: drain session strand before destroying session by @spoonincode in #1448
- [1.1.5] Fix OC scheduling of compiles by @heifner in #1447
- [1.1.5 -> 1.2.0-rc2] Fix OC scheduling of compiles by @heifner in #1458
- [1.1.5] Version bump to v1.1.5 by @heifner in #1463
- [1.2.0-rc2] github org rename to vaultafoundation/system-contracts by @ericpassmore in #1462
- [1.1.5 -> 1.2.0-rc1] Version bump to v1.1.5 by @heifner in #1465
- [1.2.0-rc2] Updated docs with latest nodeos --help output by @heifner in #1469
- [1.2.0-rc2] Additional logging of unapplied trxs by @heifner in #1473
- [1.2.0-rc2] use more portable
__builtin_bswap64()
by @spoonincode in #1478 - [1.2.0-rc2] mark a couple variables used only for
assert()
as[[maybe_unused]]
to avoid warning by @spoonincode in #1479 - [1.2.0-rc2] fix build of
api_tests
on platforms without OC by @spoonincode in #1480 - [1.2.0-rc2] Migrate Performance Test Harness Actions to @v4 by @ericpassmore in #1481
- [1.2.0-rc2] Performance Workflow Move Upload Out of Build Dir by @ericpassmore in #1494
- [1.2.0-rc2] Fix logging of failed trx by @heifner in #1498
- [1.2.0-rc2] fix race on creation of
TestLogs
directory in TestHarness Utils by @spoonincode in #1490 - [1.2.0-rc2] P2P: Gossip BP peer enhancements by @heifner in #1503
- [1.2.0-rc2] P2P: Versioned signed type for gossip_bp_peers_message::signed_bp_peer by @heifner in #1512
- [1.2.0-rc2] bump version to 1.2.0-rc2 by @spoonincode in #1521
Full Changelog: v1.2.0-rc1...v1.2.0-rc2
Spring v1.1.5
Spring v1.1.5 is a patch release focused on improving system stability.
Notable Changes
-
Resolved State History Race Condition on Disconnect
Addressed a race condition in the state_history plugin that could lead to undefined behavior during session teardown by ensuring all pending asynchronous operations are drained before destruction. -
Improved OC Compile Reliability
Fixed a condition where in some cases OC would stop compiling new contracts resulting in reduced performance.
Complete Change Log
Bug Fixes
Miscellaneous
Contributors
Full Changelog: v1.1.4...v1.1.5
Spring v1.2.0-rc1
Warning
The variant of the bp peering gossip protocol in v1.2.0-rc1 is unsupported and will be superceded by 1.2.0-rc2.
v1.2.0-rc1 introduces a major advancement in peer-to-peer networking with the rollout of a gossip-based block producer auto-peering system. This feature enables block producers to dynamically discover and connect with each other, forming a resilient consensus mesh that adapts to changes such as new node deployments, protocol hard fork upgrades, or ranking shifts — eliminating the need for manual connection configuration.
Notable Changes
Gossip-Based Auto-Peering for Block Producers
Introduces automated discovery and connection among block producers using a gossip protocol, enhancing network resilience and reducing manual configuration.
Elimination of Duplicate P2P Connections
Enhances network efficiency by preventing redundant peer connections, ensuring optimal resource utilization.
Expanded P2P Buffer Sizes
Increases send and receive buffers to 1MB, improving throughput and reducing latency in peer communications.
Enhanced Peer Logging Options
Configurable peer log formats, Provide more flexibility and clarity in monitoring peer interactions.
Snapshot Information Utility
Added a spring-util
command to print snapshot information.
Complete Change Log
Here is the categorized list of the provided pull requests:
Enhancements
- PR #1208: Add new peer log format options.
- PR #1244: Update P2P auto block producer peer for Savanna.
- PR #1237: Add
spring-util
command to print snapshot info. - PR #1228: Retrieve peers' public keys from
chainbase
database. - PR #1250: Add
--dry-run
option forpush action
. - PR #1284: Hide
max_action_return_value_size
inget_consensus_parameters
when feature not activated. - PR #1308: Eliminate duplicate P2P connections.
- PR #1328: Allow interruption of read-only transactions via
ctrl-c
. - PR #1316: Update
peer_keys_db_t
to match changes ineos-system-contracts
PR 185. - PR #1330: Interrupt speculative transaction when block is received.
- PR #1385: Log if not producing because of stale production
- PR #1399: Do not interrupt apply_block on a received block if applying to head
Optimizations
- PR #1148: Store packed block in
signed_block
to improve performance. - PR #1164: Validate finality
mroot
of Savanna blocks as part of header validation. - PR #1206: Improve hash function for
chain::name
. - PR #1207: Increase P2P send/receive buffer to 1MB.
- PR #1223: Avoid thread hop on incoming blocks.
- PR #1367: Add missing
std::move()
calls and usevariants
type consistently. - PR #1403: Optimize fork database open/read
- PR #1412: use a global merkle thread pool to avoid creation and destruction of threads every block
- PR #1415: Avoid copying action when computing action digest
Bug Fixes
Tests
- PR #1168: Add common method for registering different test types.
- PR #1178: Switch to using
eos-system-contracts
inlibtester
tests. - PR #1249: Bump sanitizers to
clang20
. - PR #1270: Fix incorrect names (
preActivate
instead ofactivate
) and add debugging info. - PR #1275: Reduce performance test number of read-only transactions to reduce CI/CD strain.
- PR #1272: Do not exit on error when evaluating fork.
- PR #1274: Ensure
finalizercNode
is synced up before killingnode0
.
Other
- PR #1230: Remove unneeded static variable reference.
- PR #1246: Avoid
memset
andmemcpy
on non-trivially copyablefc::variant
to eliminate warnings. - PR #1264: Bump
bn256
submodule with minor changes related to C++20, CI, and BMI2 usage. - PR #1294: Replace leftover instance of "EOSIO" with "Spring" in
cleos
help text. - PR #1295: Remove empty file.
- PR #1357: Use
std::future
directly withasio
, removing the need forstd::packaged_task
. - PR #1374: Add vaulta_genesis file
- PR #1395: Allow any executor for
post_async_task()
- PR #1396: Remove C++20 ifdefs in merkle.hpp
- PR #1402: Update logging.json GELF example
Full Changelog: v1.1.3...v1.2.0
Spring v1.1.4
Spring v1.1.4 delivers critical improvements to fork handling and snapshot consistency, enhancing node stability and reliability during chain reorganizations. This release also includes several test optimizations to improve CI/CD robustness and reduce flakiness.
Notable Changes
-
Snapshot Fork Detection Fix
Resolved an issue where snapshots were not correctly identified as forked out, ensuring accurate chain state management during forks. -
Fork Switch Stability Enhancement
Addressed a potential process block interruption during fork switches, improving node stability during chain reorganizations.
Complete Change Log
Bug Fixes
Tests
-
[1.1.4] Test fix: Increase max-transaction-cpu-usage for slow/overwhelmed CI/CD by @heifner in [PR #1350](#1350)
-
[1.1.4] Test fix: Wait an extra block for protocol activation by @heifner in [PR #1341](#1341)
-
[1.1.4] Test fix: Allow more time for block apply to start before sending interrupt by @heifner in [PR #1353](#1353)
-
[1.1.4] Test fix: Make sure node2 and node3 have trx reference block by @heifner in [PR #1354](#1354)
-
[1.1.4] Test: Increase trx time allowed in read-only perf test by @heifner in [PR #1368](#1368)
-
[1.1.4] Test: Disable pause production in test by @heifner in [PR #1369](#1369)
-
[1.1.4] Test fix: Pause production before shutdown by @heifner in [PR #1413](#1413)
-
[1.1.4] Test fix: Use unique file name by @heifner in [PR #1418](#1418)
Full Changelog: v1.1.3...v1.1.4
Spring v1.1.3
Spring v1.1.3 brings several bug fixes and ensures the new core.vaulta token contract will run with optimized performance.
Notable Changes
-
Added 'vaulta' to EOS VM OC Whitelist: Expanded the default whitelist to include 'vaulta', to ensure that the new core.vaulta token contract will run with optimized performance.
-
Limited 'read-only-read-window-time-us' Parameter: Restricted the 'read-only-read-window-time-us' setting to 200ms to prevent issues with repeated retries of read-only transactions.
-
Fixed Node Stuck in Head Catchup: Resolved an issue where nodes could become stuck in head catchup state due to null connection handling.
Complete Change Log
Enhancements
- Add 'vaulta' to default EOS VM OC whitelist: Expanded the default whitelist to include 'vaulta'. #1335
Bug Fixes
-
P2P: Fix node stuck in head catchup: Resolved an issue causing nodes to remain in head catchup state. #1240
-
Ignore block CPU limit for read-only transactions: Ensured read-only transactions are not constrained by block CPU limits. #1288
-
Correctly handle 'onblock' interrupt: Improved handling of 'onblock' interruptions. #1307
-
Reduce max 'read-only-read-window-time-us': Limited the 'read-only-read-window-time-us' parameter to 200ms. #1322
Tests
-
Do not exit on error when evaluating fork: Modified test behavior to continue despite errors during fork evaluation. #1280
-
Ensure 'finalizercNode' is synced before killing 'node0': Added synchronization checks before terminating 'node0'. #1281
-
Reduce performance test number of read-only transactions: Decreased the number of read-only transactions in performance tests to reduce strain on CI/CD. #1282
-
Test fix: Handle case where 'nodeos' shuts down before replying to HTTP request: Improved test handling for 'nodeos' shutdown scenarios. #1299
-
Test fix: Kill node before end of 'defproducerb' to allow more tolerance: Adjusted test procedures to terminate nodes earlier for increased tolerance. #1302
-
Test fix: Better handle case where block not available: Enhanced test handling for scenarios where blocks are unavailable. #1305
-
Test fix: Decrease 'max_block_cpu_usage' and 'max_transaction_cpu_usage' values: Reduced CPU usage limits in tests for better performance. #1287
Full Changelog: v1.1.2...v1.1.3