🚀 How to use this release (new operators start here)
# 1. Download the Linux x86_64 binary (attached below)
wget https://github.com/ghostrider1092/Coincync-Testnet-/releases/download/v1.0.11.7-testnet/coincync-node-linux-x86_64-v1.0.11.7-testnet
chmod +x coincync-node-linux-x86_64-v1.0.11.7-testnet
mv coincync-node-linux-x86_64-v1.0.11.7-testnet coincync-node
# 2. Verify SHA-256 matches the published hash (see below)
sha256sum coincync-node
# 3. Run it (DNS bootstrap is live — no --addnode flags needed)
./coincync-node --network testnet
# 4. Verify it's syncing (in another shell, ~60s later)
curl -s http://127.0.0.1:28081/rpc/testnet \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"get_info"}'
# Expect: peer_count >= 3, height climbing toward current tip (~3200+)Want to run a testnet miner? This is the single most useful thing community members can do right now — there's currently one miner on the network and any second miner eliminates the single-point-of-failure entirely. See the Run a testnet miner section of the README, or DM ghostrider1092 on Discord (#mining channel).
Need to bypass DNS? Some networks/ISPs block or poison DNS. Belt-and-suspenders form:
./coincync-node --network testnet \
--addnode 66.135.23.193:28080 \
--addnode 140.82.57.168:28080 \
--addnode 45.32.251.6:28080 \
--addnode 207.148.6.50:28080 \
--addnode 173.199.93.21:28080Live chain status (verify before bootstrapping): api.coincync.network/rpc/testnet (POST a get_info JSON-RPC) · explorer.coincync.network.
Rollup release — v1.0.11.5 + v1.0.11.6 + v1.0.11.7
This release bundles three hardening passes shipped over the prior 24 hours. v1.0.11.5 and v1.0.11.6 git tags exist on the repo but no GitHub Release was cut for them — this one covers all three. Operators can deploy this binary directly; it supersedes both intermediate tags.
Binary attached: coincync-node-linux-x86_64-v1.0.11.7-testnet
SHA-256: 26916e5d18daffcfa73ad52a01b929a61b300d7785cb9b514a4f83dcaef08d94
Internal version string: coincync-node 1.0.12 (Cargo.toml semver remains 1.0.12 as v1.0.11 line tracks the v1.0.12 backport schedule).
v1.0.11.5-testnet — broadcast stall fix (e80a2df cherry-pick)
Closes the recurring ~640-second stall pattern observed every 1-2 hours on v1.0.11.4 fleet binaries (11 stalls in one 13-hour session). Root cause: stale peer height claims pinned best_known_height above local, blocking the broadcast path indefinitely. The fix prunes peer-height entries the moment local advances past them, exactly mirroring Monero's cryptonote_protocol_handler per-peer-remaining-work-collapse semantics.
Reference impl: Monero cryptonote_protocol_handler::process_payload_sync_data.
v1.0.11.6-testnet — full sync state-machine refactor
Wholesale replacement of src/network/sync.rs (+634/-111 lines) from the refactor/sync-state-model work. Closes the underlying V1+V2+V4+I8+I10 violations documented in docs/architecture/sync-state-machine.md:
- V1 —
best_known_heightwas monotonic-grow;recompute_best_known()now re-derives frommax(local_height, max(peer_heights.values()))on every state mutation. Field can now SHRINK when peers leave (pattern: Bitcoin CorepindexBestHeader). - V2 — stale peer-height pruning is now applied in BOTH
set_local_tipANDupdate_peer_height_for(strictly stronger than the v1.0.11.5 narrower fix). - V4 —
downloading/download_timestamps/pending_requestsare now atomically synced via unifiedrecord_request(Bitcoin CoremapBlocksInFlightpattern). - I8 (corrected) —
downloading ≡ download_timestamps;pending_requests ⊆ downloading. Enforced at every requeue/recover path. - I10 (refined) —
Syncedstate tolerates ≤16 in-flight blocks for InvBlock tip-catch-up (matches Bitcoin Core'sIsInitialBlockDownload()carve-out);pending_headersmust be empty. All requeue paths (requeue_failed,get_blocks_to_retry,recover_stuck_downloads,on_peer_disconnected) transitionSynced → Blockswhen they push topending_headers. - Phase 2a (V3 partial) — Internal
peer_difficulties+best_known_difficultymodel added (advisory only; wire-format change for cumulative-work peer selection deferred to v1.0.12 hard fork).
Tests: 10 sync unit tests (including a 2,048-case proptest harness across 12 SyncEvent variants), 646/646 lib tests pass.
v1.0.11.7-testnet — silent-hang hardening trio (NEW in this release)
Targets the silent-process-hang class observed on 2026-06-19 (3 of 5 fleet nodes had their maintenance loop die silently while systemd kept reporting active for 17 hours).
- C1 — Maintenance task supervisor. The maintenance loop now runs inside a
JoinHandle; a sibling watcher logsCRITICALon any termination path (clean exit, panic, abort). Previously a panic inside any.awaitwould silently terminate the loop without alerting anyone. Reference: zebrad actor-model wrappers. - C2 — 30-second heartbeat. Single INFO line emitted every 30s with tick counter + peer counts:
External watchdogs (or
[INFO node::heartbeat] maintenance tick=N peers=M outbound=Kjournalctl -fu coincync-node | grep heartbeat) detect a silent freeze within ~60s instead of the 17 hours observed in the production incident. - C2b —
biased;select! in maintenance.ping_intervalis now polled first under load soPEER_TIMEOUT=300sis never starved by the higher-frequencycleanup_interval. - C3 —
shadow_evict_invalidinspawn_blocking. Moves the synchronousparking_lot::RwLockcontention off the tokio worker thread. Previously held the chain RwLock for the duration of a mempool walk, blocking other tokio tasks on the same worker. Bitcoin Core'sMaybeUpdateMempoolForReorguses the same separate-thread pattern.
Tests: 646/646 lib tests pass on this branch.
Combined deploy checklist (operators)
wgetorcurlthe attachedcoincync-node-linux-x86_64-v1.0.11.7-testnet.sha256sumand verify against26916e5d18daffcfa73ad52a01b929a61b300d7785cb9b514a4f83dcaef08d94.systemctl stop coincync-node(andcoincync-rigif you mine on the same box — restart it AFTER node is back up; the rig depends on node RPC).install -m 755 ./coincync-node-linux-x86_64-v1.0.11.7-testnet /usr/local/bin/coincync-nodesystemctl start coincync-node- Within ~30 seconds you should see in the journal:
If you don't see a heartbeat line within 60 seconds, the maintenance task didn't start — check
INFO node::heartbeat maintenance tick=1 peers=N outbound=Mjournalctl -u coincync-node -n 50for aCRITICAL node::supervisorline.
What is NOT in this release
The wider refactor/sync-state-model branch carries 18 additional audit-fix commits (RPC bearer-hash, inbound-eviction module, ratelimit wire-in, TLS gate, key rotation versioning, mempool atomic-write, etc.). Those have API drift against the v1.0.11 fleet branch and need individual back-porting — folded into the v1.0.12 hard-fork preparation cycle (activation target ~2026-07-01) rather than rushed into the v1.0.11 line.
🤖 Generated with Claude Code