Skip to content

Lower protocol_version_min for V25.1 compatibility during upgrade#54

Open
yusufgurdogan wants to merge 9 commits intoBananoCoin:v28from
banano-trade:claude/monitor-banano-node-01RUDNjgwfYNm57z1gVp6P3y
Open

Lower protocol_version_min for V25.1 compatibility during upgrade#54
yusufgurdogan wants to merge 9 commits intoBananoCoin:v28from
banano-trade:claude/monitor-banano-node-01RUDNjgwfYNm57z1gVp6P3y

Conversation

@yusufgurdogan
Copy link

No description provided.

claude and others added 9 commits November 18, 2025 10:53
Increased bootstrap performance settings to significantly speed up blockchain synchronization:
- 4x more bootstrap connections (4→16 outbound, 64→128 inbound)
- 8x higher rate limits for block requests
- 10x bandwidth increase (5MB/s → 50MB/s)
- 4x more concurrent threads for bootstrap operations
- Enhanced frontier scan parallelism and reduced cooldowns

This should increase sync speed from ~500 blocks/min to 2500-5000+ blocks/min.
…015jejAtRDUU58KDBExda97E

Optimize bootstrap configuration for faster sync
…o-blocks-015jejAtRDUU58KDBExda97E

Revert "Optimize bootstrap configuration for faster sync"
This change temporarily lowers protocol_version_min from 0x12 (18) to 0x11 (17)
to allow V28.2 nodes to communicate with existing V25.1 nodes during the
network upgrade transition period.

Without this change, V28.2 nodes reject all V25.1 connections with
"outdated_version" errors, preventing the network from functioning during
the upgrade.

This should be reverted once >90% of the network has upgraded to V28.2.

Changes:
- protocol_version_min: 0x12 -> 0x11
- bootstrap_protocol_version_min: 0x12 -> 0x11
- Add missing <algorithm> include for std::copy_n in numbers.hpp
- Suppress deprecated declarations globally for RocksDB compatibility
The root cause of "dead channel" evictions was that V28.2 queries
random recent blocks that V25.1 nodes don't have yet. When V25.1
nodes don't respond (because they lack the queried blocks), V28.2
marks the channel as dead and evicts the representative.

This fix makes V28.2 always query the genesis block, which ALL
nodes have, ensuring V25.1 nodes can respond and maintain connections.

This is a temporary workaround for the V25.1 -> V28.2 direct upgrade
path. After the network fully upgrades to V28.2, the original random
block query logic can be restored.
V25.1 nodes use protocol version 0x10 (16) or older. The previous
fix of 0x11 (17) was still too high, causing immediate channel
death when V25.1 nodes send messages.

Lowering to 0x0F (15) provides sufficient margin to accept V24,
V25, and V25.1 connections during the upgrade transition period.
V25.1 nodes have behavioral differences from V28.2 that cause
channels to die quickly (different message handling, connection
management, or response formats).

Instead of permanently evicting these reps, keep them in the
rep list. The crawler will reconnect on the next query cycle.
This prevents constant rep churn during the upgrade period.

The total_weight() function already filters dead channels, so
weight calculations remain correct.

After the network fully upgrades to V28.2, restore the original
aggressive eviction logic.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants