cryptoadvance / cryptoadvance/specter-desktop
v2.0.5 Build Not Reproducible
- Dominant language
- Python
- Stars
- 847
- Forks
- 259
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 2
Description
**Issue Type**: Build Reproducibility
**Version**: v2.0.5
**Component**: Electron AppImage (`specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz`)
**Verification Date**: 2025-12-19
**Verifier**: Daniel Garcia
**Organization**: WalletScrutiny.com
---
### Summary
Attempted to reproduce the v2.0.5 Electron AppImage build from source using a containerized
environment matching your official build configuration (Ubuntu 22.04, Python 3.10, Node.js 18). The
resulting binary differs from the official release.
**Status**: NOT REPRODUCIBLE
---
### Build Environment
**Container**: Ubuntu 22.04 (Jammy)
- Python 3.10.12
- Node.js 18.x
- electron-builder 24.13.3
- All dependencies from `requirements.txt` (with `--require-hashes`)
**Build Command**:
```bash
# Phase 1: Build specterd
virtualenv --python=python3.10 .buildenv
pip3 install -r requirements.txt --require-hashes
pyinstaller specterd.spec
# Phase 2: Build Electron app
cd pyinstaller/electron
npm install
npm run dist
```
Comparison Results
Official Release:
Tarball: specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz
SHA256: 8a187c4710085186e2618ef181e6d9d91e8d2175975055ef3724c187e977e991
AppImage: Specter-2.0.5.AppImage
SHA256: dbcd46b74d3adf21a626c7a9fc3c67dcff4009277e9d72eea167c6a097df808d
Size: 108,659,362 bytes
Built from Source:
AppImage: Specter-2.0.5.AppImage
SHA256: 669e7a0b3180ef8cf779c8f4a9b9dde6f037fde3259cac4721891ef49403fc06
Size: 108,429,545 bytes
Diff: -229,817 bytes
Result: Completely different hashes
### Raw Results
```
===== Begin Results =====
appId: specter-desktop
signer: N/A
apkVersionName: 2.0.5
apkVersionCode: N/A
verdict:
appHash: 669e7a0b3180ef8cf779c8f4a9b9dde6f037fde3259cac4721891ef49403fc06 (AppImage)
tarballHash: 8a187c4710085186e2618ef181e6d9d91e8d2175975055ef3724c187e977e991 (specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz)
commit: v2.0.5
BUILDS MATCH BINARIES
Release: specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz (tarball hash: 8a187c4710085186e2618ef181e6d9d91e8d2175975055ef3724c187e977e991)
Compared: Specter-2.0.5.AppImage - x86_64-linux-gnu - 669e7a0b3180ef8cf779c8f4a9b9dde6f037fde3259cac4721891ef49403fc06 - 0 (DOESN'T MATCH)
SUMMARY
total: 1
matches: 0
mismatches: 1
===== Also ====
Entry point check: Not applicable for AppImage builds
Built files: 83, Official files: 83
Dependency version drift detected (npm packages)
Project acknowledges non-reproducibility in docs/build-instructions.md
===== End Results =====
---> Removed intermediate container 51e64b843c9d
---> 5cfabb372ac4
Successfully built 5cfabb372ac4
Successfully tagged specter-verifier:2-0-5-x86-64-linux-gnu-electron-gui-1766146013-3024467
Extracting results...
RESULTS
date: 2025-12-19T12:11:11+0000
script_version: v0.2.9
build_type: electron-gui
results:
- architecture: x86_64-linux-gnu
status: not_reproducible
files:
- filename: Specter-2.0.5.AppImage
hash: 669e7a0b3180ef8cf779c8f4a9b9dde6f037fde3259cac4721891ef49403fc06
match: false
notes: "AppImage extracted from official tarball specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz (tarball hash: 8a187c4710085186e2618ef181e6d9d91e8d2175975055ef3724c187e977e991). Compared AppImage extracted from official tarball (specter_desktop-v2.0.5-x86_64-linux-gnu.tar.gz). Built 83 files vs official 83 files. Binary differs due to dependency version drift.
```
[WalletScrutiny Verification Link](https://walletscrutiny.com/verifier/?pubkey=1f9e547c2f31942623b8ad1d07713282e8640fd8cf474e9f79f18ace8af216ed#verificationId=bb6f5d9bf4e22c6a369fe5365920a566d60590354b1ff903e8e56316c5d81b41)
Contributor guide
Research direction
Start with docs/build-instructions.md, requirements.txt, specterd.spec, and pyinstaller/electron, then review the reported npm dependency version drift. Re-run the two build phases in the stated Ubuntu 22.04 environment and compare the resulting AppImage with the official hash. Done means the source build produces matching release binaries or documents the remaining reproducibility cause.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, node.js, python
- Domain
- build-system, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100