Commit Graph

116 Commits

Author SHA1 Message Date
SamiAhmed7777 b6e0fc62a9 Merge pull request #2 from SamiAhmed7777/cleanup/safe-improvements
Fix C++11 literal-suffix warnings
2026-03-24 17:18:48 -07:00
Krystie 420630168b Fix remaining C++11 literal-suffix warnings in core files 2026-03-25 01:10:26 +01:00
Krystie 5f599a72da Fix C++11 literal-suffix warnings in main.h and trianglesrpc.cpp
Added spaces between format specifiers and PRIszu/PRIu64/PRIx64 macros
to comply with C++11 requirements.

Fixed warnings in:
- main.h: lines 646 (2x), 1073, 1334
- trianglesrpc.cpp: lines 433, 1067

Build verified successful with no new errors.
2026-03-24 11:32:41 +01:00
Krystie c475f38b85 Add cleanup strategy document - consensus-safe improvements only 2026-03-24 09:56:21 +01:00
sami7777 d655d9ed70 Update all packaging manifests to v5.3.6, add Scoop + Docker
- AUR PKGBUILD: v5.3.6, new asset URLs, verified SHA256
- Chocolatey: v5.3.6 nuspec + install script with new zip URL/hash
- Winget: v5.3.6 multi-file manifest format
- Nix: v5.3.6 derivation with updated fetchurl hashes
- RPM: v5.3.6 spec + build script with new binary names
- Debian: v5.3.6 control + build script
- AppImage: v5.3.6 build script with new download URL
- Scoop: new bucket manifest (JSON) for Windows
- Docker: new Dockerfile + docker-compose for headless node

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 20:30:04 -07:00
sami7777 efb4455fa5 Update Homebrew formula to v5.3.6 with real SHA256 hashes
- Removed Intel macOS (no x64 build in CI, only arm64)
- Updated Linux daemon URL to match CI asset naming
- Filled in SHA256 hashes from release binaries

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 19:10:01 -07:00
sami7777 e4d519711f Update Flatpak manifest with v5.3.6 binary SHA256 hashes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 18:37:41 -07:00
sami7777 5799125d5a Fix Linux CI: default make target was 'obj' dir instead of 'trianglesd'
mkdir -p obj before make caused 'obj' (first rule) to be the default
target. Moved 'all: trianglesd' above directory rules and added
explicit target to CI build step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 18:15:54 -07:00
sami7777 3a9d845e94 Remove unit tests from Linux CI - inherited from Bitcoin, never ported
The test suite (miner_tests, DoS_tests, etc.) uses Bitcoin's original
API signatures which differ from Triangles' forked code. These tests
were never functional for this codebase. Remove from CI to unblock
the release build.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 18:12:13 -07:00
sami7777 6779662ec1 Fix bignum_tests: restore setint64 method names mangled by replace_all
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 18:03:59 -07:00
sami7777 3fd9fe70eb Fix int64 -> int64_t in remaining test files, finalize Flatpak manifest
- bignum_tests, script_tests, util_tests, wallet_tests: int64 -> int64_t
- Flatpak manifest: use GitHub URLs instead of local paths (Flathub-ready)
- Add flathub.json (x86_64 only)
- Fill SHA256 hashes for static assets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 17:49:58 -07:00
sami7777 1abe33c482 Fix test build errors, update CI version, add Snap/Flatpak/AppStream packaging
- DoS_tests: remove extra arg from VerifySignature calls (5 -> 4 params)
- accounting_tests: int64 -> int64_t for modern compilers
- CI: bump VERSION 5.3.5 -> 5.3.6
- Snap/Flatpak: fix asset URLs to match CI naming convention
- Add AppStream metainfo for store listings
- Add DNS2 seed node setup guide

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 12:49:25 -07:00
sami7777 c74d0dc0ee Refactor smessage: bucket file rotation, thread lifecycle, bug fixes
- Implement bucket file rotation (split at ~1.75GB) to fix 2GB limit TODO
- Add SecMsgToken::fileIndex to track which rotated file each message is in
- Replace 3 duplicated filename parsers with SecureMsgParseBucketFilename()
- Add CSecureMsgThreadGuard with atomic counter for reliable thread shutdown
- Replace MilliSleep(3000) hack with SecureMsgWaitForThreadsToStop() (5s deadline)
- Fix file handle leak: missing fclose(fp) before return on fseek failure
- Fix message count: use insert().second instead of set size after loop

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 02:38:45 -07:00
sami7777 918e5bf5a2 Fix int64 -> int64_t in DoS_tests.cpp for modern compilers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 23:23:23 -07:00
sami7777 5ea26a94ff Bump version to 5.3.6 - IBD sync optimizations and Linux build fix
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 23:15:14 -07:00
sami7777 dbe22a8383 Fix Linux headless build (makefile.unix)
- Fix $(system) -> $(shell) GNU Make syntax error that broke ARCH detection
- Add obj/ and obj-test/ directory creation rules for fresh clones
- Remove duplicate -levent linkage
- Add order-only prerequisites (| obj) to pattern rules

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 23:14:30 -07:00
sami7777 67a5d19ec1 IBD sync optimizations: header planner, parallel download, LevelDB tuning
Major sync performance improvements while preserving consensus:

- Header-first sync planner: receives and caches headers ahead of block
  downloads, building a verified chain-trust map. Uses a sliding download
  window (128 blocks in-flight, 30s timeout) to request blocks in order
  from the best known header chain.
- Merged DB transactions: AddToBlockIndex and SetBestChain now share a
  single LevelDB WriteBatch, halving the per-block commit count.
- Multi-peer block requests: pipeline refill and stall recovery now send
  getblocks+getheaders to ALL connected full-node peers, not just one.
- LevelDB tuning: 64MB write buffer (vs 4MB default), 1000 max open files
  for reduced memtable flush frequency during IBD.
- Larger getdata batches: 4000 items during IBD (vs 1000) to reduce
  round-trip overhead with small PoS blocks.
- Tighter stall detection: 5-second timeout (vs 10s) for faster rotation
  away from slow peers.
- Higher orphan limit during IBD: 4000 (vs 750) to prevent eviction and
  re-download when blocks arrive out-of-order from parallel peers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 23:03:28 -07:00
sami7777 f07f7f902a Add CI unit tests, network health RPC, and fix checkpoint tests
- Add unit test build+run steps to both Qt and headless Linux CI jobs
- Enhance getnetworkinfo RPC with networkhealth object (peer mix, bootstrap mode, sync status)
- Rewrite Checkpoints_tests to validate actual chain checkpoints (0, 9000, 9001, 2186940)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 21:53:47 -07:00
sami7777 158b2bcd2d Eliminate all blocking LOCK(cs_wallet) calls from UI thread
During sync, NotifyTransactionChanged fires for every wallet tx in
every block, each triggering 3 blocking LOCK(cs_wallet) calls on
the UI thread: updateWallet, GetAllBalances, getNumTransactions.
With the block processing thread holding cs_wallet almost continuously,
the UI thread blocks waiting for the lock - causing "not responding".

Fixes:
- GetAllBalances: LOCK → TRY_LOCK, returns false if busy
- updateWallet (tx table): LOCK → TRY_LOCK, skips if busy
- updateTransaction: removed checkBalanceChanged() call entirely
  (pollBalanceChanged timer handles it every 2.5s with TRY_LOCK)
- getNumTransactions: replaced with rowCount() from cached model

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 19:32:04 -07:00
sami7777 1ede9babf6 Fix Linux Qt build: int64_t/qint64 type mismatch
On Linux, int64_t is long but qint64 is long long - different types
that can't bind to the same reference. Use int64_t locals to match
the GetAllBalances signature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:05:43 -07:00
sami7777 104d496e77 Bump version to 5.3.5 - fix out-of-sync display for PoS chains
Remove time-based sync check that showed "out of sync" when blocks
were >6 hours old. For PoS chains with few stakers, blocks can be
hours apart - that's idle, not out of sync. Now uses block count
only. Also adds periodic UI refresh every 30s and switches cached
stake weight from volatile to std::atomic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 17:59:18 -07:00
SamiAhmed7777 76d128917a Merge pull request #1 from SamiAhmed7777/cleanup/desloppify
Code cleanup: Documentation and C++11 compliance fixes
2026-03-22 15:43:35 -07:00
Krystie 6877aeaddb chore: Update .gitignore for build artifacts 2026-03-22 22:54:21 +01:00
Krystie 60067e1a88 fix: Add space between string literals and PRId64 macros
Fixes C++11 literal-suffix warnings in util.h, net.h, and alert.cpp.
Required space between string literal and macro per C++11 standard.

No functional changes - formatting only.
2026-03-22 22:46:48 +01:00
Krystie e91ccd8786 docs: Document critical TODOs/FIXMEs with context
- Add CLEANUP_NOTES.md documenting cleanup strategy
- Add TODO_DOCUMENTATION.md with detailed context for all TODOs
- Improve inline comments for thread safety issue in rpcmining.cpp
- Clarify potential collision note in walletmodel.cpp
- Remove unclear 'DRM' comment, replace with descriptive text

No functional changes - documentation only.
2026-03-22 22:26:52 +01:00
sami7777 96fb7d5040 Bump version to 5.3.4 - fix UI freezing during staking
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
Move GetStakeWeight() off the UI thread by caching in the staking
miner thread. Replace blocking LOCK(cs_vNodes) with TRY_LOCK in
clientmodel and staking icon updates. Fix out-of-sync label getting
stuck when disconnected. Add daemon bootstrap and faster IBD pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.3.4
2026-03-20 21:28:11 -07:00
sami7777 47cf8abbda Add daemon bootstrap, repeating bootstrap prompt, faster IBD pipeline
- Daemon: add -bootstrap flag to download chain files from server on startup
- Qt: bootstrap prompt shows every launch with "Don't show this again" checkbox
- IBD: reduce pipeline refill interval from 1000 to 100 blocks for faster sync
- Add bootstrap.o to daemon makefiles (mingw + unix)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 21:35:12 -07:00
sami7777 2abd494fec Bump version to 5.3.3 and update CI version
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.3.3
2026-03-19 18:54:44 -07:00
sami7777 378b0370e3 Improve peer connectivity, UI responsiveness, and add auto-bootstrap
Peer connectivity (small network optimizations):
- Reduce hardcoded seed fallback delay from 30s to 10s
- Reduce peer retry interval from 600s to 120s
- Lower staking minimum peers from 3 to 1
- Relay addr messages to all connected peers instead of just 2

UI responsiveness:
- Add progress reporting to ScanForWalletTransactions (every 10K blocks)
- Use TRY_LOCK in WalletModel::pollBalanceChanged to avoid blocking UI
- Use TRY_LOCK in TransactionTablePriv::refreshWallet with retry

Auto-bootstrap:
- Add bootstrap.h/cpp with HTTP download via boost::asio
- On first run, prompt user to download blockchain snapshot from
  bootstrap.cryptographic-triangles.org directly into data directory
- Downloads filelist.txt manifest then each file with progress dialog
- Falls back to IP 194.233.88.206 if DNS fails
- Gracefully continues to P2P sync if bootstrap unavailable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 18:02:47 -07:00
sami7777 61f22fcfd4 Fix display version string to match 5.3.2
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
DISPLAY_VERSION_REVISION in version.h was still set to 1, causing the
internal version string to show v5.3.1.0 instead of v5.3.2.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.3.2
2026-03-19 14:52:44 -07:00
sami7777 bf1bf393c8 Bump version to 5.3.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 14:18:06 -07:00
sami7777 39e244a11c Fix build: random_shuffle removal, Windows daemon missing objects
- Replace random_shuffle (removed in C++17) with std::shuffle in wallet.cpp
- Add -std=c++17 to makefile.mingw (Windows daemon was missing it)
- Add lz4.o, tor_embed_hooks.o, tor_embedded.o to makefile.mingw OBJS
- Add build rules for new objects in makefile.mingw
- Simplify Tor embedded build to use aggregate libtor.a

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:47:42 -07:00
sami7777 6724dfc832 Fix build: revert shared_ptr in RPC, replace auto_ptr with unique_ptr
- trianglesrpc.cpp: revert std::shared_ptr back to boost::shared_ptr
  (boost::signals2::slot::track() requires boost::shared_ptr)
- miner.cpp: auto_ptr → unique_ptr (auto_ptr removed in C++17,
  caught by macOS clang)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 13:34:16 -07:00
sami7777 9dadba6b09 Fix build: tuple access syntax, namespace, LZ4 separate compilation
- miner.cpp: .get<N>() → std::get<N>() (boost::tuple member syntax
  doesn't exist on std::tuple)
- script.cpp: remove 'using namespace boost' (no boost headers left)
- smessage.cpp: include lz4/lz4.h instead of lz4/lz4.c (U64 typedef
  conflict with xxhash when LZ4 1.10.0 source included in same TU)
- makefile.unix: add obj/lz4.o as separate compilation unit
- triangles-qt.pro: add src/lz4/lz4.c to SOURCES

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 02:46:37 -07:00
sami7777 c432817d5f Bump version to 5.3.1
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.3.1
2026-03-19 02:36:12 -07:00
sami7777 7ceb1f6a4d Replace boost with C++17 std equivalents, upgrade LZ4 to 1.10.0
- boost::tuple → std::tuple (serialize.h, miner.cpp, script.cpp, walletdb.cpp)
- boost::shared_ptr → std::shared_ptr (trianglesrpc.cpp)
- boost::variant → std::variant for CTxDestination (script.h)
- boost::get → std::get_if (main.cpp, rpcblockchain.cpp, coincontroldialog.cpp, wallet.cpp)
- boost::apply_visitor → std::visit (base58.h, script.cpp, rpcwallet.cpp, test/base58_tests.cpp)
- boost::static_visitor removed from all visitor classes
- boost::lexical_cast → std::to_string/std::stoll (smessage.cpp, rpcsmessage.cpp)
- Removed unused boost/lexical_cast.hpp includes (rest.cpp, trianglesrpc.cpp)
- Removed boost/variant/get.hpp include (rpcdump.cpp)
- Upgraded vendored LZ4 from 1.1.3 to 1.10.0
- Updated LZ4_compress() → LZ4_compress_default() (smessage.cpp)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 02:31:23 -07:00
sami7777 1a2793bb88 Fix build: replace remaining list_of calls, remove register keyword
- Replace boost::assign::list_of/map_list_of with brace-init in
  rpcrawtransaction.cpp (7 call sites missed in previous commit)
- Remove C++17-banned 'register' keyword from lz4.c (macOS build fix)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 02:07:49 -07:00
sami7777 7ee2f00224 Bump version to 5.3.0
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
C++17 modernization, Tor v2 removal, embedded Tor scaffold, IBD speedups.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.3.0
2026-03-19 01:57:24 -07:00
sami7777 383a3b8b02 Modernize codebase: C++17, remove Tor v2, add embedded Tor scaffold, IBD speedups
- Replace ~290 BOOST_FOREACH with C++11 range-for across 41+ files
- Replace boost::assign::map_list_of with C++11 brace initialization
- Remove PAIRTYPE macro (no longer needed without BOOST_FOREACH)
- Guard OpenSSL locking callbacks for 3.x (no-ops in >= 1.1.0)
- Fix Qt deprecated APIs for Qt6 compat (QStyleOptionViewItemV4, setResizeMode)
- Add openssl_compat.h version string wrapper
- Enable C++17 in makefile.unix and triangles-qt.pro

- Delete 163 dead Tor v2 source files (~150K lines removed)
- Add embedded Tor scaffold (tor_embedded.h/cpp) using tor_api.h
- Add build-libtor.sh helper and CODEX-TOR-GUIDE.md
- Update makefile.unix and .pro with USE_TOR_EMBEDDED optional flag
- Fallback to external tor_process when not compiled with libtor

- IBD pipeline refill: 100 -> 1000 blocks
- Send/recv buffer limits: unlimited -> 100MB/32MB
- Orphan block cap: unlimited -> 750 with random eviction
- Socket poll: 10ms -> 1ms during IBD
- Message handler sleep: 10ms -> 1ms during IBD
- Stall detection timeout: 5s -> 2s

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 01:52:40 -07:00
Krystie 0beca5d801 Performance: Increase default dbcache to 2048MB, reduce checkblocks to 24, increase checklevel to 2
Changes improve sync speed without changing consensus:
- dbcache: 128MB → 2048MB (better caching during sync)
- checkblocks: 2500 → 24 (faster startup validation)
- checklevel: 1 → 2 (lighter verification during sync)

These changes make the node faster to sync and restart while maintaining
security and consensus compatibility.
2026-03-19 07:31:25 +01:00
sami7777 47bd5bf083 Fix data directory dialog appearing on every startup
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
Moved setOrganizationName/setApplicationName calls BEFORE
IntroDialog::pickDataDirectory() so QSettings knows where to save the
user's data directory choice.

Previously, QSettings was created without org/app names set, causing
the "strDataDir" setting to be lost, forcing the dialog to appear on
every startup.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
v5.2.1
2026-03-16 22:46:39 -07:00
sami7777 7b5b80cb3a Fix critical bug: duplicate version messages causing peer disconnects
Fixed missing braces in CNode constructor (net.h:327-329) that caused
PushVersion() to execute unconditionally for ALL connections instead of
only outbound connections.

This bug caused inbound peers (seed nodes) to:
1. Send version on connection (unintended)
2. Send version again when receiving peer's version (intended)
3. Trigger Misbehaving(1) on peer side for duplicate version
4. Get disconnected by peer (ProcessMessage fails → CloseSocketDisconnect)

Result: Seed nodes could only serve ~120 blocks before disconnect,
making sync nearly impossible.

Bump version to 5.2.1.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-16 22:05:10 -07:00
sami7777 b50eecc56f Fix build: nMisbehavior is protected
Build All Platforms / build-windows-qt (push) Waiting to run
Build All Platforms / build-windows-daemon (push) Waiting to run
Build All Platforms / build-linux-qt (push) Waiting to run
Build All Platforms / build-linux-daemon (push) Waiting to run
Build All Platforms / build-macos (push) Waiting to run
Build All Platforms / release (push) Blocked by required conditions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
v5.2.0
2026-03-16 21:09:48 -07:00
sami7777 8953173403 Add comprehensive IBD diagnostics (IBD-DIAG prefix)
Verbose logging at every critical sync pipeline stage:
- Version handler: whether getblocks was sent and why
- Inv handler: count of new vs already-known blocks
- Block handler: every block received (throttled), ProcessBlock failures
- ProcessBlock: CheckBlock failures with details
- SendMessages: stall detection with queue sizes
- Periodic status: height, peers, askfor queue, orphan count
- Getblocks handler: what range the seed is serving

All lines prefixed with IBD-DIAG for easy grep.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 21:05:11 -07:00
sami7777 2f307c195c Disable checkpoint message relay and processing
DNS2 was sending a stale sync checkpoint (block 2,186,940) to DNS3
on connect. ProcessSyncCheckpoint then called PushGetBlocks with the
checkpoint hash as the stop point, and AskFor'd block 2,186,940
directly — overriding the normal sequential getblocks chain. DNS3
would request a block it can't process (missing 2M predecessors)
instead of syncing from genesis.

Fix: ignore incoming checkpoint messages entirely (master key was
already removed in V5 fork, no new checkpoints possible). Also stop
relaying stored checkpoint messages to new peers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 20:56:40 -07:00
sami7777 8c5024a78a Fix anti-spam check: use chain tip as fallback, add NULL safety
Instead of skipping the anti-spam difficulty check during IBD, fix it
properly:
- Fall back to pindexBest when sync checkpoint is genesis (height 0)
- Add NULL safety for GetLastBlockIndex in both PoS and PoW cases
- PoS case: if no PoS block exists yet (below 9001), skip gracefully
  since AcceptBlock already rejects PoS below MODIFIER_INTERVAL_SWITCH

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 20:24:48 -07:00
sami7777 3f823e8583 Skip anti-spam difficulty check during IBD
The anti-spam check in ProcessBlock used GetLastSyncCheckpoint() which
pointed to genesis after our reset. When processing PoS blocks,
GetLastBlockIndex(genesis, true) returned NULL (no PoS blocks at genesis),
causing a crash or Misbehaving(100) which banned the seed node.

Fix: skip the entire anti-spam check during IBD - hardcoded checkpoints
already guarantee chain integrity. Also add NULL safety for the PoS
case after IBD completes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 20:19:39 -07:00
sami7777 a4bfc6012a Fix display version: update DISPLAY_VERSION to 5.2.0
version.h had a separate DISPLAY_VERSION set (5.1.7.0) used by
version.cpp for the user-visible version string. clientversion.h
was updated but version.h was not, causing binaries to report
v5.1.7.0 despite being built from v5.2.0 source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 19:37:24 -07:00
sami7777 136d446157 Disable sync checkpoint system that blocks IBD
The sync checkpoint (hashSyncCheckpoint) was persisted in LevelDB pointing
to block 2,186,940. On startup it was loaded from DB, overriding any code
change to the initial value. CheckSync then rejected every block below
that height during IBD since they weren't in mapBlockIndex yet.

Three-pronged fix:
- CheckSync now always returns true (master key disabled, no new sync
  checkpoints will ever be broadcast)
- AcceptBlock no longer calls sync checkpoint enforcement
- LoadBlockIndex resets sync checkpoint to genesis if stored hash is
  not in the block index (prevents assert crash)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:32:11 -07:00
sami7777 1966f49ce2 Fix sync checkpoint blocking IBD, bump to v5.2.0
hashSyncCheckpoint was initialized to block 2,186,940 hash, causing
CheckSync to reject ALL blocks below that height during initial block
download (they aren't in mapBlockIndex yet when checked). Changed to
genesis hash so IBD can proceed from block 0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 18:09:38 -07:00