diff --git a/CHANGELOG.md b/CHANGELOG.md index 4bf9516..2c20998 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,21 @@ All notable changes to Triangles (TRI) are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [6.2.0] - 2026-08-01 +## [6.2.2] - 2026-08-01 + +### Fixed +- **Snapshot regeneration: full chain index, not just the last 2000.** + `UTXO_SNAPSHOT_DEFAULT_HEADERS` was 2000, which silently trimmed the + snapshot to the last 2000 blocks even though the v2+ format is designed + to carry the full chain index. The too-small snapshot caused + `GetKernelStakeModifier() : block not indexed` errors after a fresh + node loaded it — the kernel-stake-modifier walk in `CreateCoinStake` + needs blocks older than the last 2000 because `nStakeModifierSelectionInterval` + is multi-day. The block index was effectively unusable for the + StakeMiner on the recovered node. Default is now 0 (all headers); the + trim is bypassed when `nHeaders=0`. Callers may still pass an explicit + positive value for a small diagnostic snapshot. + ### Fixed - **Build portability: v6.1.9 binary crashed with SIGILL on every diff --git a/packaging/appimage/build-appimage.sh b/packaging/appimage/build-appimage.sh index 1bc5526..8fc1bfc 100644 --- a/packaging/appimage/build-appimage.sh +++ b/packaging/appimage/build-appimage.sh @@ -3,7 +3,7 @@ # Run on a Linux x64 system with appimagetool installed set -e -VERSION="6.2.0" +VERSION="6.2.2" APPDIR="Triangles-x86_64.AppDir" RELEASE_URL="https://github.com/SamiAhmed7777/triangles_v5/releases/download/v${VERSION}" diff --git a/packaging/debian/build-deb.sh b/packaging/debian/build-deb.sh index ac7d551..5d4a96e 100644 --- a/packaging/debian/build-deb.sh +++ b/packaging/debian/build-deb.sh @@ -3,7 +3,7 @@ # Run from the packaging/debian directory set -e -VERSION="6.2.0" +VERSION="6.2.2" PKGDIR="triangles_${VERSION}-1_amd64" RELEASE_URL="https://github.com/SamiAhmed7777/triangles_v5/releases/download/v${VERSION}" diff --git a/packaging/docker/Dockerfile b/packaging/docker/Dockerfile index 84d8bab..9dc6012 100644 --- a/packaging/docker/Dockerfile +++ b/packaging/docker/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:22.04 AS builder -ARG VERSION=6.2.0 +ARG VERSION=6.2.2 ARG DEB_URL=https://github.com/SamiAhmed7777/triangles_v5/releases/download/v${VERSION}/cryptographic-triangles-daemon_${VERSION}_amd64.deb RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -13,11 +13,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ # ---------- Runtime ---------- FROM ubuntu:22.04 -ARG VERSION=6.2.0 +ARG VERSION=6.2.2 LABEL maintainer="Cryptographic Triangles Team" LABEL description="Cryptographic Triangles (TRI) headless daemon" -LABEL version="6.2.0" +LABEL version="6.2.2" RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ diff --git a/packaging/docker/docker-compose.yml b/packaging/docker/docker-compose.yml index 6b7e695..fa7d217 100644 --- a/packaging/docker/docker-compose.yml +++ b/packaging/docker/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.8" services: trianglesd: build: . - image: cryptographic-triangles/trianglesd:6.2.0 + image: cryptographic-triangles/trianglesd:6.2.2 container_name: trianglesd restart: unless-stopped ports: diff --git a/packaging/flatpak/org.cryptographic_triangles.TrianglesQt.yml b/packaging/flatpak/org.cryptographic_triangles.TrianglesQt.yml index d9b5c78..81b36da 100644 --- a/packaging/flatpak/org.cryptographic_triangles.TrianglesQt.yml +++ b/packaging/flatpak/org.cryptographic_triangles.TrianglesQt.yml @@ -25,7 +25,7 @@ modules: - install -Dm644 org.cryptographic_triangles.TrianglesQt.metainfo.xml /app/share/metainfo/org.cryptographic_triangles.TrianglesQt.metainfo.xml sources: - type: file - url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-v6.2.0-linux-x64-qt + url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-v6.2.2-linux-x64-qt sha256: ed220eb8d0b403f62cdac28988541fd1a27864491e233216f9c00a4c2537b4a3 dest-filename: triangles-qt-linux - type: file @@ -55,6 +55,6 @@ modules: - install -Dm755 trianglesd-linux /app/bin/trianglesd sources: - type: file - url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-v6.2.0-linux-x64-daemon + url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-v6.2.2-linux-x64-daemon sha256: 4d2ab25d61127d6aff3e6f3069556d04f4b823f8849e97629c12871ad4779517 dest-filename: trianglesd-linux diff --git a/packaging/rpm/build-rpm.sh b/packaging/rpm/build-rpm.sh index f40267c..0b2db6d 100644 --- a/packaging/rpm/build-rpm.sh +++ b/packaging/rpm/build-rpm.sh @@ -4,7 +4,7 @@ # Install build tools: sudo dnf install rpm-build rpmdevtools set -e -VERSION="6.2.0" +VERSION="6.2.2" RELEASE_URL="https://github.com/SamiAhmed7777/triangles_v5/releases/download/v${VERSION}" echo "Building RPM for Triangles v${VERSION}..." diff --git a/packaging/rpm/triangles.spec b/packaging/rpm/triangles.spec index f7cdf31..69b832c 100644 --- a/packaging/rpm/triangles.spec +++ b/packaging/rpm/triangles.spec @@ -1,5 +1,5 @@ Name: triangles -Version: 6.2.0 +Version: 6.2.2 Release: 1%{?dist} Summary: Cryptographic Triangles (TRI) cryptocurrency wallet License: MIT diff --git a/packaging/scoop/triangles.json b/packaging/scoop/triangles.json index f51c856..8663e1d 100644 --- a/packaging/scoop/triangles.json +++ b/packaging/scoop/triangles.json @@ -1,11 +1,11 @@ { - "version": "6.2.0", + "version": "6.2.2", "description": "Cryptographic Triangles (TRI) cryptocurrency wallet with PoS staking and encrypted messaging", "homepage": "https://cryptographic-triangles.org", "license": "MIT", "architecture": { "64bit": { - "url": "https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-6.2.0-win-x64.zip", + "url": "https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-6.2.2-win-x64.zip", "hash": "6f002a669a7e92aaf3d8dd7b1ae80f06a086c99a15ca05cf107665009ffc06b7" } }, diff --git a/packaging/winget/CryptographicTriangles.TrianglesQt.yaml b/packaging/winget/CryptographicTriangles.TrianglesQt.yaml index 2e579d7..1356a59 100644 --- a/packaging/winget/CryptographicTriangles.TrianglesQt.yaml +++ b/packaging/winget/CryptographicTriangles.TrianglesQt.yaml @@ -1,5 +1,5 @@ PackageIdentifier: CryptographicTriangles.TrianglesQt -PackageVersion: 6.2.0 +PackageVersion: 6.2.2 PackageLocale: en-US Publisher: Cryptographic Triangles PublisherUrl: https://cryptographic-triangles.org @@ -27,7 +27,7 @@ Installers: - RelativeFilePath: triangles-qt.exe PortableCommandAlias: triangles-qt ArchiveBinariesDependOnPath: true - InstallerUrl: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-6.2.0-win-x64.zip + InstallerUrl: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-6.2.2-win-x64.zip InstallerSha256: 6F002A669A7E92AAF3D8DD7B1AE80F06A086C99A15CA05CF107665009FFC06B7 ManifestType: singleton ManifestVersion: 1.6.0 diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index d16ad69..12aa01f 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,6 +1,6 @@ name: triangles base: core22 -version: '6.2.0' +version: '6.2.2' summary: Cryptographic Triangles (TRI) cryptocurrency wallet description: | Privacy-focused cryptocurrency featuring Proof-of-Stake consensus, @@ -51,10 +51,10 @@ apps: parts: triangles: plugin: dump - source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-v6.2.0-linux-x64-qt + source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-v6.2.2-linux-x64-qt source-type: file organize: - Cryptographic-Triangles-v6.2.0-linux-x64-qt: bin/triangles-qt + Cryptographic-Triangles-v6.2.2-linux-x64-qt: bin/triangles-qt stage-packages: - libqt5widgets5 - libqt5gui5 @@ -73,10 +73,10 @@ parts: trianglesd: plugin: dump - source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.0/Cryptographic-Triangles-v6.2.0-linux-x64-daemon + source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.2/Cryptographic-Triangles-v6.2.2-linux-x64-daemon source-type: file organize: - Cryptographic-Triangles-v6.2.0-linux-x64-daemon: bin/trianglesd + Cryptographic-Triangles-v6.2.2-linux-x64-daemon: bin/trianglesd desktop-entry: plugin: dump diff --git a/src/clientversion.h b/src/clientversion.h index a029a2d..19681b0 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -8,7 +8,7 @@ // These need to be macros, as version.cpp's and triangles-qt.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 6 #define CLIENT_VERSION_MINOR 2 -#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_REVISION 2 #define CLIENT_VERSION_BUILD 0 // Converts the parameter X to a string after macro replacement on X has been performed. diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp index 6d06c44..57766b8 100644 --- a/src/rpcblockchain.cpp +++ b/src/rpcblockchain.cpp @@ -1300,8 +1300,12 @@ Value dumputxoset(const Array& params, bool fHelp) if (params.size() > 1) nHeaders = params[1].get_int(); - if (nHeaders < 100) - throw JSONRPCError(RPC_INVALID_PARAMETER, "nheaders must be at least 100"); + // 0 = include all chain headers (the v2+ default). Positive values are + // a count of the most recent block index entries to embed (useful for + // chain segment diagnostics, but NOT for full bootstrap — kernel-stake + // walks need the full index). + if (nHeaders > 0 && nHeaders < 100) + throw JSONRPCError(RPC_INVALID_PARAMETER, "nheaders must be 0 (all) or at least 100"); std::filesystem::path destPath(filename); std::string strError; diff --git a/src/utxosnapshot.h b/src/utxosnapshot.h index 9143d00..5ca292c 100644 --- a/src/utxosnapshot.h +++ b/src/utxosnapshot.h @@ -21,9 +21,15 @@ static const unsigned int UTXO_SNAPSHOT_MAGIC = 0x53585455; // "UTXS" little-end // LoadBlockIndex only walks 500 blocks back from pindexBest. static const unsigned int UTXO_SNAPSHOT_VERSION = 3; -// Number of block index entries to include in snapshot (covers difficulty, -// median time, stake modifier, and reorg depth requirements) -static const unsigned int UTXO_SNAPSHOT_DEFAULT_HEADERS = 2000; +// Number of block index entries to include in snapshot. The v2+ design +// collects ALL block index entries (genesis → tip) so a snapshot-loaded +// node can address every block via mapBlockIndex — which is required for +// the kernel-stake-modifier walk in StakeMiner / CheckStakeKernelHash to +// succeed for any UTXO (not just the last 2000). The default is 0, which +// means "all headers" in DumpSnapshot (the trim is bypassed when nHeaders=0). +// Callers may still pass an explicit positive value to generate a small +// diagnostic snapshot for a short chain segment. +static const unsigned int UTXO_SNAPSHOT_DEFAULT_HEADERS = 0; namespace UtxoSnapshot {