BitFinite Core v3.1.0 — DNS seeder hardening + upstream security backport
Drop-in upgrade from v3.0.x. No reindex, no wallet migration, no consensus change — stop the node, swap the binaries, start it again.
BitFinite forked from Bitcoin Cash Node v27.0.0 in December 2023 and upstream is now at v29.0.0, so two and a half years of their fixes were missing here. This release ports the subset that changes how a node behaves under attack or resource pressure. The full ranked plan is in doc/upstream-security-backlog.md.
DNS seeder
The seeder serves seed.bitfinitechain.org, the network's dynamic bootstrap. Two of these were verified by running v3.0.2 and v3.1.0 side by side against the same failure:
- A seeder that cannot bind its DNS port now says so. Previously it printed
done, reported0 DNS requests, and kept running while answering nothing. A dead seed looked healthy. - It shuts down cleanly and persists its database on exit. v3.0.2 ignored SIGINT entirely and had to be killed, discarding every peer crawled since the last periodic dump.
- Fixed a race and undefined behaviour when starting DNS threads, replaced a thread-unsafe
std::rand(), moved tostd::thread, fixed the checkpoint check.
Node robustness
- Socket descriptor leak fixed, plus the crash it caused once the process ran out of file descriptors. Matters on long-uptime nodes.
- Log rate limiting (
-logratelimit, default on): 1 MiB per hour per source location, so a noisy or hostile peer cannot fill your disk.-logratelimit=0disables it. - Control characters filtered out of log messages — peer-supplied strings can no longer manipulate a terminal reading the log.
- Thread-unsafe
strerror()replaced withSysErrorString()throughout.
Build
- Project now builds as C++20 (was C++17), with Boost 1.77 in
depends(was 1.70; C++20 removedstd::allocator<T>::pointer, which 1.70 still used). - Linux and Windows build in separate toolchain images — Linux stays on Ubuntu 22.04 so the glibc floor for released binaries does not move; Windows moves to 24.04 for a mingw with
<source_location>. - Fixed:
CMAKE_PREFIX_PATHomitteddepends, so previous native Linux builds linked host Boost libraries againstdependsheaders. - Fixed: packaging version could disagree with the compiled-in version — the same defect v3.0.2 was released to correct.
- Fixed: the build directory is reconfigured when configuration inputs change, instead of silently reusing a stale CMake cache.
Not in this release
-peerratelimit(per-peer bandwidth limits) is deferred. We named it in our announcement and it did not make it: upstream's implementation is written against aCNodelifetime refactor we have not ported, and rewriting it against our current interface would mean shipping network-layer code in a form upstream has never run. First in line for the next release.- The four May-2026 consensus CHIPs from BCHN v29 are not included. Those are Bitcoin Cash's network upgrade; adopting them here would be a hard fork needing coordinated miner activation, and they must not ride along in a security release.
Verify
sha256sum -c SHA256SUMS
What is in the packages
Unchanged from 3.0.2, listed because we stopped saying so and silence read as removal: bitfinited, bitfinite-cli, bitfinite-qt (the GUI wallet, in both the Linux tarball and the Windows zip), bitfinite-tx, bitfinite-wallet, and bitcoin-seeder (Linux only).