Skip to content

Releases: AntelopeIO/spring

Spring v2.0.0-dev1.3

27 Aug 16:21
88e9578

Choose a tag to compare

Spring v2.0.0-dev1.3 Pre-release
Pre-release

This developer preview release addresses a critical stability issue in the Sync Calls feature that could cause node crashes on restart. Spring v2.0.0-dev1.3 ensures proper resource allocation for sync calls across node restarts and protocol feature activation scenarios.

Warning

This is a Developer Preview release, intended for testing and feedback only. Future releases may contain breaking changes. Spring 2.0.0-dev1.3 should only be used on dedicated test networks.

Notable Changes

Sync Call Resource Allocation Fix
Resolved a critical issue where resources required for nested sync calls were only allocated when the sync_call protocol feature was first activated. This caused crashes when nodes were restarted after the feature was already active. The fix ensures resources are properly allocated during node startup regardless of when the protocol feature was activated.

Complete Change Log

Critical Sync Call Fixes

  • [2.0 -> 2.0.0-dev1] Allocate resources required by sync calls up front by @linh2931 in #1849


Version Management


Full Changelog: v2.0.0-dev1.2...v2.0.0-dev1.3

Contributors


Special thanks to @ericpassmore for reporting the issue and providing core dumps that helped diagnose the problem.

Spring v1.2.2

19 Aug 14:58
04bdb08

Choose a tag to compare

The Spring v1.2.2 release is a patch update focused on enhancing stability and resolving critical bugs. This release includes several important changes aimed at ensuring robust performance and preventing disruptions in node operations.

Notable Changes

This release fixes a race condition that can potentially cause a block producing node to become stuck (neither apply blocks nor produce blocks) until the node restarted.

Complete Changes

Critical Fixes
P2P Enhancements
Testing Improvements

Contributors

Full Changelog: v1.2.1...v1.2.2

Spring v2.0.0-dev1.2

13 Aug 11:42
c62a656

Choose a tag to compare

Spring v2.0.0-dev1.2 Pre-release
Pre-release

Spring v2.0.0-dev1.2 fixes a potential crash in sync calls. All nodes testing the v2.0.0-dev1 release should upgrade to this new version.

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.2 (such as block logs, snapshots, state history logs, etc) will not necessarily be compatible with any future releases. 2.0.0-dev1.2 should not be used on chains other than chains specifically testing the 2.0.0-dev1.2 preview release.

Full Changelog

Contributors

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

Spring v2.0.0-dev1.1

24 Jul 15:39
9f942af

Choose a tag to compare

Spring v2.0.0-dev1.1 Pre-release
Pre-release

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.

Full Changelog

Contributors

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

Spring v2.0.0-dev1

16 Jul 16:04
dc95de4

Choose a tag to compare

Spring v2.0.0-dev1 Pre-release
Pre-release

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(), and set_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 and snapshot_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 and get_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 into sync_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 into sync_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, and eosvmoc 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
P2P Enhancements
Miscellaneous Enhancements
  • [2.0.0-dev] Add support for bitset serialization in abi_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...
Read more

Spring v1.2.1

10 Jul 19:44
42b514a

Choose a tag to compare

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

Full Changelog

Spring v1.2.0

24 Jun 13:52
39780b5

Choose a tag to compare

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
Bug Fixes
Logging
Documentation
Other
Read more

Spring v1.2.0-rc3

11 Jun 15:24
1409213

Choose a tag to compare

Spring v1.2.0-rc3 Pre-release
Pre-release

Spring v1.2.0-rc3 further refines the block producer gossip protocol.


🔧 Notable Changes

  • Relaxed Gossip Endpoint Uniqueness
    Updated uniqueness checks for p2p-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 in net_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

  • P2P: Fix IPv6 support — Restored proper IPv6 parsing and bracket handling in address strings ([#1594], [#1595])
  • Handle block log exception during replay — Improved resilience to block log failures during chain replay ([#1547])


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

15 May 19:51
3bfd336

Choose a tag to compare

Spring v1.2.0-rc2 Pre-release
Pre-release

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 the peer-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 for signed_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

29 Apr 20:09
1335621

Choose a tag to compare

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