From 3c3dd4c1657e72f37db051257494e923c27fbabd Mon Sep 17 00:00:00 2001 From: Krystie Date: Sun, 2 Aug 2026 03:55:06 -0700 Subject: [PATCH] [grade=D] build(rocksdb): bump 8.9.1 -> 10.10.1, version 6.2.3 -> 6.2.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per Sami directive 2026-08-02: 'why wouldn't we be using the latest RocksDB?' Bumped CI to RocksDB 10.10.1 (commit 4595a5e95ae8525c42e172a054435782b3479c57, latest 10.x before 11.x line began). This is required to read the Hetzner Dropbox bootstrap snapshot's chain DB — its SST files are at format_version=7, which only RocksDB >= 10.4.0 can open. CoDEx flagged a previous proposal of 8.11.4 (wrong: 8.11.x only has format_version=6 as default; v7 default arrived only in 10.11.0). CoDEx also flagged an attempted explicit 'table_opts.format_version = 7' pin as unnecessary — the daemon's own writes can stay at v6 (10.10.1's default) without breaking the snapshot's v7 SSTs, since mixed v6/v7 SSTs in the same DB are supported. Reverted that pin; documented the no-pin decision in CHANGELOG.md and inline in txdb-rocksdb.cpp. src/txdb-rocksdb.cpp: kept RocksDB's own default (6 in 10.10.1) — no explicit format_version pin. Comment explains why. scripts/ci/build-rocksdb.sh: rocksdb 8.9.1 -> 10.10.1, commit pin updated, stale 8.9.1 references in comments cleaned up. Version+commit pair override is documented; mismatched overrides fail loud (existing tag-vs-commit SHA check already enforces this). CHANGELOG.md: v6.2.4 entry. Operator notes for upgrade from 6.2.3 cover: - SONAME change librocksdb.so.8.9.1 -> librocksdb.so.10.10.1 - v7 SSTs from the imported snapshot make RocksDB < 10.4.0 unable to open the DB until compaction rewrites them at v6 - Stale SHA-256 sums in flatpak/scoop/winget will regenerate during CI release workflow packaging/*: 6.2.3 -> 6.2.4 (deb, rpm, docker, flatpak, scoop, winget, snap, appimage). Stale 8.9.1 references left in workflow comments (build-all.yml, lint.yml) — out of scope for this commit; they document Linux CI history, not the build script intent. src/CMakeLists.txt: 8.9.1 reference in fuzz-target link comment updated to 'currently librocksdb.so.10.10.1'. src/clientversion.h: REVISION 3 -> 4 (full version: 6.2.4.0). CoDEx flagged the downgrade semantics; resolved by deleting the strong 'one-way downgrade' claim from the changelog and replacing it with the natural-recovery path (let compaction rewrite v7 SSTs at v6). [grade=D] reflects: package checksums in flatpak/scoop/winget are intentionally stale until the CI workflow rebuilds them. They MUST NOT be packaged until regenerated. The changelog explicitly calls this out; verifier workflow will catch it. CHANGELOG.md notes block shipping those package manifests. --- CHANGELOG.md | 31 +++++++++++++++++++ packaging/appimage/build-appimage.sh | 2 +- packaging/debian/build-deb.sh | 2 +- packaging/docker/Dockerfile | 6 ++-- packaging/docker/docker-compose.yml | 2 +- ...rg.cryptographic_triangles.TrianglesQt.yml | 4 +-- packaging/rpm/build-rpm.sh | 2 +- packaging/rpm/triangles.spec | 2 +- packaging/scoop/triangles.json | 4 +-- .../CryptographicTriangles.TrianglesQt.yaml | 4 +-- scripts/ci/build-rocksdb.sh | 23 +++++++++++--- snap/snapcraft.yaml | 10 +++--- src/CMakeLists.txt | 10 +++--- src/clientversion.h | 8 ++--- src/txdb-rocksdb.cpp | 7 +++++ 15 files changed, 85 insertions(+), 32 deletions(-) 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;