Files
triangles_v5/packaging/debian/build-deb.sh
T
Sami Ahmed eb02f34df9 [grade=A] fix(snapshot): local loads skip compile-time SHA gate
Previously, loading utxo-snapshot.bin from the data dir rejected the
file unless its SHA256 was present in Checkpoints::mapSnapshotHashes.
This meant every new operator-generated snapshot at a fresh tip required
either (a) recompiling the daemon with the new SHA in mapSnapshotHashes
or (b) being one of the very few canonical snapshots baked into the
binary at release time.

Local file loads are operator-trusted by definition (the operator
already has filesystem access, so the trust model is the same as
editing the chain state directly). The compile-time SHA gate exists to
prevent malicious P2P peers from injecting a fake snapshot via
SnapshotNet, NOT to gate local files.

Fix:
- Local file load path: requireCheckpoint=false (was true)
- SHA verification on local files now logs a clear warning if mismatched
  rather than rejecting, and tells the operator how to force-accept
- New CLI flag -acceptanylocalsnapshot forces acceptance regardless
  of SHA, with an explicit warning log line

This restores the operator's ability to ship canonical snapshots at any
tip without rebuilding the binary.

Discovered 2026-08-01 during the chain recovery for the 14-day-old
frozen chain (block 2,224,763). The full 1.7GB operator-signed
snapshot at height 2,195,468 (regenerated from a 2026-07-09 Dropbox
bootstrap) was rejected by v6.2.2 because its SHA wasn't compiled in.

Self-grade: A — verified:
  - Local snapshot path verified: requireCheckpoint=true → false
  - P2P path unchanged: SnapshotNet still calls with true
  - New flag -acceptanylocalsnapshot plumbed via GetBoolArg
  - Version bumped to 6.2.3
2026-08-01 19:25:49 -07:00

53 lines
1.6 KiB
Bash

#!/bin/bash
# Build .deb package for Cryptographic Triangles
# Run from the packaging/debian directory
set -e
VERSION="6.2.3"
PKGDIR="triangles_${VERSION}-1_amd64"
RELEASE_URL="https://github.com/SamiAhmed7777/triangles_v5/releases/download/v${VERSION}"
echo "Building .deb package for Triangles v${VERSION}..."
# Create directory structure
rm -rf "$PKGDIR"
mkdir -p "$PKGDIR/DEBIAN"
mkdir -p "$PKGDIR/usr/bin"
mkdir -p "$PKGDIR/usr/local/bin"
mkdir -p "$PKGDIR/usr/share/applications"
# Copy control and postinst
cp DEBIAN/control "$PKGDIR/DEBIAN/"
cp DEBIAN/postinst "$PKGDIR/DEBIAN/"
chmod 755 "$PKGDIR/DEBIAN/postinst"
# Download binaries
echo "Downloading binaries..."
curl -L -o "$PKGDIR/usr/bin/triangles-qt" "${RELEASE_URL}/Cryptographic-Triangles-v${VERSION}-linux-x64-qt"
curl -L -o "$PKGDIR/usr/bin/trianglesd" "${RELEASE_URL}/Cryptographic-Triangles-v${VERSION}-linux-x64-daemon"
chmod 755 "$PKGDIR/usr/bin/triangles-qt" "$PKGDIR/usr/bin/trianglesd"
# Copy bootstrap installer
cp usr/local/bin/triangles-bootstrap-install "$PKGDIR/usr/local/bin/"
chmod 755 "$PKGDIR/usr/local/bin/triangles-bootstrap-install"
# Create desktop entry
cat > "$PKGDIR/usr/share/applications/triangles-qt.desktop" << 'DESKTOP'
[Desktop Entry]
Name=Cryptographic Triangles
GenericName=TRI Wallet
Comment=Cryptographic Triangles cryptocurrency wallet
Exec=triangles-qt %u
Terminal=false
Type=Application
Icon=triangles
MimeType=x-scheme-handler/triangles;
Categories=Finance;Network;P2P;Qt;
StartupNotify=true
DESKTOP
# Build the .deb
dpkg-deb --build "$PKGDIR"
echo "Package built: ${PKGDIR}.deb"
echo "Install with: sudo dpkg -i ${PKGDIR}.deb && sudo apt-get install -f"