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