diff --git a/CHANGELOG.md b/CHANGELOG.md index bf1dafd..0393596 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,37 @@ 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.4] - 2026-08-02 + +### Changed +- **RocksDB bumped 8.9.1 → 10.10.1** in CI (`scripts/ci/build-rocksdb.sh`). + Required to read the Hetzner Dropbox bootstrap snapshot's chain DB, + whose SST files are at format_version=7. RocksDB 10.10.1 still uses + `format_version=6` as its own default; the daemon does NOT pin a + different value, so newly written SSTs continue to land at v6. This + is deliberate: mixed v6/v7 SST files in the same DB are supported by + RocksDB, and v7 writes from this build would close the door on + downgrade to 6.2.3 (or any RocksDB < 10.4.0) without fixing anything. + +### Notes for operators upgrading from 6.2.3 +- The daemon's runtime dependency is `librocksdb.so.10.10.1` + (replacing the previous `librocksdb.so.8.9.1`). Install or build + rocksdb from source before rolling 6.2.4 onto a node; the .deb + from CI bundles the right SONAME and should just work on + Ubuntu 22.04 / 24.04. +- If you imported the Hetzner Dropbox bootstrap snapshot's chain DB + into this node, that DB still contains v7 SSTs. Any daemon down to + RocksDB 10.4.0 will read it; RocksDB ≤ 10.3.x will reject the v7 + SSTs with `Corrupt or unsupported format_version: 7`. After the + daemon compacts the imported chain DB, the v7 SSTs may be re-written + at v6 and the DB becomes readable by older rocksdb again — that + happens naturally as part of normal compaction, no extra action + required. +- Package checksums in `packaging/flatpak`, `packaging/scoop`, and + `packaging/winget` are regenerated during the CI release workflow + after artifacts are produced; do not ship those package manifests + until their SHA-256 sums match the v6.2.4 release artifacts. + ## [6.2.3] - 2026-08-01 ### Changed diff --git a/packaging/appimage/build-appimage.sh b/packaging/appimage/build-appimage.sh index c13f144..2441e9f 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.3" +VERSION="6.2.4" 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 89adb77..35c2ecd 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.3" +VERSION="6.2.4" 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 c3fb03e..86bf805 100644 --- a/packaging/docker/Dockerfile +++ b/packaging/docker/Dockerfile @@ -1,6 +1,6 @@ FROM ubuntu:22.04 AS builder -ARG VERSION=6.2.3 +ARG VERSION=6.2.4 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.3 +ARG VERSION=6.2.4 LABEL maintainer="Cryptographic Triangles Team" LABEL description="Cryptographic Triangles (TRI) headless daemon" -LABEL version="6.2.3" +LABEL version="6.2.4" 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 87e9258..8f4494d 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.3 + image: cryptographic-triangles/trianglesd:6.2.4 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 b5670ab..a88c732 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.3/Cryptographic-Triangles-v6.2.3-linux-x64-qt + url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-v6.2.4-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.3/Cryptographic-Triangles-v6.2.3-linux-x64-daemon + url: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-v6.2.4-linux-x64-daemon sha256: 4d2ab25d61127d6aff3e6f3069556d04f4b823f8849e97629c12871ad4779517 dest-filename: trianglesd-linux diff --git a/packaging/rpm/build-rpm.sh b/packaging/rpm/build-rpm.sh index e601ee6..de1e380 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.3" +VERSION="6.2.4" 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 4dafbbb..61737c1 100644 --- a/packaging/rpm/triangles.spec +++ b/packaging/rpm/triangles.spec @@ -1,5 +1,5 @@ Name: triangles -Version: 6.2.3 +Version: 6.2.4 Release: 1%{?dist} Summary: Cryptographic Triangles (TRI) cryptocurrency wallet License: MIT diff --git a/packaging/scoop/triangles.json b/packaging/scoop/triangles.json index ddb70e6..8cbb141 100644 --- a/packaging/scoop/triangles.json +++ b/packaging/scoop/triangles.json @@ -1,11 +1,11 @@ { - "version": "6.2.3", + "version": "6.2.4", "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.3/Cryptographic-Triangles-6.2.3-win-x64.zip", + "url": "https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-6.2.4-win-x64.zip", "hash": "6f002a669a7e92aaf3d8dd7b1ae80f06a086c99a15ca05cf107665009ffc06b7" } }, diff --git a/packaging/winget/CryptographicTriangles.TrianglesQt.yaml b/packaging/winget/CryptographicTriangles.TrianglesQt.yaml index dfd022d..6033ef2 100644 --- a/packaging/winget/CryptographicTriangles.TrianglesQt.yaml +++ b/packaging/winget/CryptographicTriangles.TrianglesQt.yaml @@ -1,5 +1,5 @@ PackageIdentifier: CryptographicTriangles.TrianglesQt -PackageVersion: 6.2.3 +PackageVersion: 6.2.4 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.3/Cryptographic-Triangles-6.2.3-win-x64.zip + InstallerUrl: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-6.2.4-win-x64.zip InstallerSha256: 6F002A669A7E92AAF3D8DD7B1AE80F06A086C99A15CA05CF107665009FFC06B7 ManifestType: singleton ManifestVersion: 1.6.0 diff --git a/scripts/ci/build-rocksdb.sh b/scripts/ci/build-rocksdb.sh index 0885d8a..c3be06d 100755 --- a/scripts/ci/build-rocksdb.sh +++ b/scripts/ci/build-rocksdb.sh @@ -13,15 +13,30 @@ # Triangles' CMake find_library probes /usr/local before /usr/lib so # the just-built copy is picked up first. # -# Pinned version matches DNS2's system librocksdb (8.9.1) so test -# coverage matches production. +# Pin policy (2026-08-02): chase the LATEST stable 10.x. "Match +# DNS2's system librocksdb" reasoning was abandoned: forward +# compatibility mattered more than byte-for-byte soname parity. # # Usage: sudo ./scripts/ci/build-rocksdb.sh set -euo pipefail -ROCKSDB_VERSION="${ROCKSDB_VERSION:-8.9.1}" +# 2026-08-02 (Sami directive: "why wouldn't we be using the latest RocksDB"): +# Bumped 8.9.1 -> 10.10.1. Hetzner's Dropbox bootstrap snapshot's chain-DB +# SSTs are at format_version=7; that requires RocksDB >= 10.4.0 to read. +# 10.10.1 is the latest 10.x patch release and retains full read-compat +# for v5/v6 SSTs, so older chain DBs (DNS3's 8.9.1 chain DB, the snapshot +# fork) open cleanly on the new daemon. The daemon does not pin its own +# writes to v7 — see CHANGELOG for why. +# Pin policy: default version + commit are set together. Overriding +# ROCKSDB_VERSION alone is allowed (e.g. for testing); the commit line +# below is the canonical default for the matching release tag. When +# overriding the version, override the commit too — the validation +# below will fail loudly otherwise. +ROCKSDB_VERSION="${ROCKSDB_VERSION:-10.10.1}" ROCKSDB_TAG="v${ROCKSDB_VERSION}" -ROCKSDB_COMMIT="${ROCKSDB_COMMIT:-49ce8a1064dd1ad89117899839bf136365e49e79}" +# v10.10.1 commit (canonical pin for the tag above; override together +# with ROCKSDB_VERSION if testing a different release). +ROCKSDB_COMMIT="${ROCKSDB_COMMIT:-4595a5e95ae8525c42e172a054435782b3479c57}" INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}" JOBS="${JOBS:-$(nproc)}" diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 67b9ca6..8054daf 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -1,6 +1,6 @@ name: triangles base: core22 -version: '6.2.3' +version: '6.2.4' 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.3/Cryptographic-Triangles-v6.2.3-linux-x64-qt + source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-v6.2.4-linux-x64-qt source-type: file organize: - Cryptographic-Triangles-v6.2.3-linux-x64-qt: bin/triangles-qt + Cryptographic-Triangles-v6.2.4-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.3/Cryptographic-Triangles-v6.2.3-linux-x64-daemon + source: https://github.com/SamiAhmed7777/triangles_v5/releases/download/v6.2.4/Cryptographic-Triangles-v6.2.4-linux-x64-daemon source-type: file organize: - Cryptographic-Triangles-v6.2.3-linux-x64-daemon: bin/trianglesd + Cryptographic-Triangles-v6.2.4-linux-x64-daemon: bin/trianglesd desktop-entry: plugin: dump diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7911c0f..be8b9aa 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1016,15 +1016,15 @@ exec "$PROG" "${OBJS[@]}" "$@" "${CMAKE_BINARY_DIR}/lib/libleveldb_lib.a" "-lssl" "-lcrypto" "-ldb_cxx" "-levent" "-lsqlite3" "-lminiupnpc" "${CMAKE_BINARY_DIR}/lib/libsecp256k1.a" - # RocksDB: build-rocksdb.sh installs librocksdb.so.8.9.1 to - # /usr/local (CI) or the user has it via the distro package - # (DNS2 has librocksdb-dev). The library search path picks up - # either /usr/local/lib or /usr/lib automatically, so a bare + # RocksDB: build-rocksdb.sh installs librocksdb.so (currently + # librocksdb.so.10.10.1) to /usr/local on CI, or it comes from + # the distro package. The library search path picks up either + # /usr/local/lib or /usr/lib automatically, so a bare # "-lrocksdb" works on both. The previous generator expression # ($,-lrocksdb,${ROCKSDB_LIBRARY}>) # failed on CI because: # 1. CMake's find_package(RocksDB CONFIG) does NOT find the .cmake - # config RocksDB 8.9.1 ships, only the .pc file. + # config RocksDB 10.10.1 ships, only the .pc file. # 2. The pkg-config path exposes PkgConfig::RocksDB (NOT # RocksDB::rocksdb), so $ is # FALSE. diff --git a/src/clientversion.h b/src/clientversion.h index fa03011..48c765f 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -6,10 +6,10 @@ // // 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 3 -#define CLIENT_VERSION_BUILD 0 +#define CLIENT_VERSION_MAJOR 6 +#define CLIENT_VERSION_MINOR 2 +#define CLIENT_VERSION_REVISION 4 +#define CLIENT_VERSION_BUILD 0 // Converts the parameter X to a string after macro replacement on X has been performed. // Don't merge these into one macro! diff --git a/src/txdb-rocksdb.cpp b/src/txdb-rocksdb.cpp index 331d32f..5cb77d1 100644 --- a/src/txdb-rocksdb.cpp +++ b/src/txdb-rocksdb.cpp @@ -143,6 +143,13 @@ static rocksdb::Options GetRocksOptions() int nCacheSizeMB = GetArg("-dbcache", 2048); table_opts.block_cache = rocksdb::NewLRUCache(static_cast(nCacheSizeMB) * 1048576); table_opts.filter_policy.reset(rocksdb::NewBloomFilterPolicy(10, false)); + // Default BlockBasedTableOptions.format_version left at RocksDB's own + // default (6 in 10.10.1). Mixed v6/v7 SSTs in the same DB are + // supported — pinning to 7 here would only matter if we wanted + // brand-new SSTs to land at v7 for a specific reason (e.g. matching + // a v7 snapshot), and the cost (irreversible downgrade boundary + // the first time a v7 SST is written by this build) outweighs the + // benefit given the snapshot is consumed at import time, not later. opts.table_factory.reset(rocksdb::NewBlockBasedTableFactory(table_opts)); return opts;