SOST Synchronization Update — P2P Sync Fixed, Encryption Working, Bootstrap Still Available
The historical P2P synchronization issues reported earlier have now been identified and resolved.
A fresh node has been synchronized successfully from zero state to tip over direct P2P in repeated clean runs. Bootstrap HTTPS was also re-tested successfully and remains available as an optional fast-start / fallback method.
P2P encryption has now also been validated in all practical modes:
- plaintext on both sides
- encrypted client with plaintext fallback to a non-encrypted peer
- encrypted end-to-end on both sides
What was fixed:
The sync stall affecting nodes after block ~2500 was caused by multiple issues in the P2P transport layer:
- a rate limiter that silently dropped blocks during initial sync
- blocking I/O in the message loop that prevented reliable stall recovery
- TCP flow-control deadlocks when sending oversized batches
- missing EAGAIN handling for non-blocking socket writes
An additional issue affected encrypted/plaintext interoperability:
- when an encrypted client connected to a plaintext peer, the client could discard the peer’s VERSION message while expecting EKEY, preventing sync from starting
- plaintext peers could also penalize EKEY unnecessarily
These were networking / transport bugs only.
No consensus rules were changed.
No block validation rules were changed.
No emission logic was changed.
No chain history was changed.
No hard fork or regenesis was required.
Validated methods:
1. Direct P2P sync (plaintext)
A fresh node can now sync the full chain from genesis to tip over direct P2P. This was validated in repeated clean runs from zero state to tip.
2. Bootstrap chain import (fast start)
A node can also download the HTTPS bootstrap chain snapshot and become operational almost immediately. This remains available as an optional fast-start / fallback path.
3. Encrypted P2P sync
Encrypted P2P transport is now functional.
- ON/OFF fallback works correctly
- ON/ON end-to-end encrypted sync also completes successfully
Operational note:
- --p2p-enc off remains the fastest option for historical sync
- --p2p-enc on now works, but historical sync is slower under full encryption due to transport overhead
- bootstrap remains useful when a node operator wants the fastest possible initialization
Build from latest source:
git pull origin main
cd build
make clean
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc) sost-node
cp ../genesis_block.json .
Direct P2P sync (fastest historical sync):
./sost-node --genesis genesis_block.json \
--connect seed.sostcore.com:19333 \
--rpc-user YOUR_USER --rpc-pass YOUR_PASS \
--profile mainnet --p2p-enc off
Bootstrap fast-start:
curl -o chain.json
https://sostcore.com/bootstrap-chain.jsonrm -rf blocks utxo ~/.sost
./sost-node --genesis genesis_block.json --chain chain.json \
--connect seed.sostcore.com:19333 \
--rpc-user YOUR_USER --rpc-pass YOUR_PASS \
--profile mainnet --p2p-enc off
Encrypted P2P sync:
./sost-node --genesis genesis_block.json \
--connect seed.sostcore.com:19333 \
--rpc-user YOUR_USER --rpc-pass YOUR_PASS \
--profile mainnet --p2p-enc on
Verify sync:
curl -s --user YOUR_USER:YOUR_PASS \
-d '{"method":"getblockcount","params":[],"id":1}' \
http://127.0.0.1:YOUR_RPC_PORT
Start mining after full sync:
./sost-miner --address YOUR_SOST_ADDRESS \
--rpc 127.0.0.1:18232 --rpc-user YOUR_USER --rpc-pass YOUR_PASS \
--blocks 999999 --profile mainnet
Bootstrap snapshot:
https://sostcore.com/bootstrap-chain.jsonSeed node:
seed.sostcore.com:19333
Explorer:
https://sostcore.com/sost-explorer.htmlSummary:
- Direct P2P sync: working
- Bootstrap import: working
- Encrypted P2P: working
- Plaintext historical sync remains the fastest mode
- No consensus changes
- No hard fork
- No regenesis
Thank you to everyone who reported sync issues during testing. Those reports directly helped isolate and fix the networking bugs.