#!/usr/bin/env bash set -euo pipefail ELECTRUM_VERSION="${1:-4.7.2}" echo ">>> Installing Electrum ${ELECTRUM_VERSION}" WORKDIR="/tmp/electrum" mkdir -p "$WORKDIR" cd "$WORKDIR" BASE_URL="https://download.electrum.org/${ELECTRUM_VERSION}" TARBALL="Electrum-${ELECTRUM_VERSION}.tar.gz" SIG_FILE="${TARBALL}.asc" FINGERPRINT_THOMASV='6694 D8DE 7BE8 EE56 31BE D950 2BD5 824B 7F94 70E6' FINGERPRINT_SOMBERNIGHT='0EED CFD5 CAFB 4590 6734 9B23 CA9E EEC4 3DF9 11DC' FINGERPRINT_EMZY='9EDA FF80 E080 6596 04F4 A76B 2EBB 056F D847 F8A7' PUB_THOMASV='https://raw.githubusercontent.com/spesmilo/electrum/master/pubkeys/ThomasV.asc' PUB_SOMBERNIGHT='https://raw.githubusercontent.com/spesmilo/electrum/master/pubkeys/sombernight_releasekey.asc' PUB_EMZY='https://raw.githubusercontent.com/spesmilo/electrum/master/pubkeys/Emzy.asc' echo ">>> Importing signing keys..." for pubkey_url in "$PUB_THOMASV" "$PUB_SOMBERNIGHT" "$PUB_EMZY"; do wget -q "$pubkey_url" done for key_file in *.asc; do gpg --import "$key_file" rm -f "$key_file" done echo ">>> Downloading Electrum ${ELECTRUM_VERSION}..." wget -q "${BASE_URL}/${TARBALL}" wget -q "${BASE_URL}/${SIG_FILE}" echo ">>> Verifying GPG signature..." VERIFY_OUTPUT=$(gpg --verify "$SIG_FILE" "$TARBALL" 2>&1 || true) echo "$VERIFY_OUTPUT" echo "$VERIFY_OUTPUT" | grep -q "Good signature" \ || { echo "ERROR: GPG verification failed — no good signature found" >&2; exit 1; } MATCHED=0 for fp in "$FINGERPRINT_THOMASV" "$FINGERPRINT_SOMBERNIGHT" "$FINGERPRINT_EMZY"; do if echo "$VERIFY_OUTPUT" | grep -qF "$fp"; then echo ">>> Fingerprint matched: ${fp}" MATCHED=1 break fi done [ "$MATCHED" -eq 1 ] \ || { echo "ERROR: no trusted fingerprint found in verify output" >&2; exit 1; } echo ">>> Creating venv and installing Electrum..." python3 -m venv --system-site-packages /opt/electrum /opt/electrum/bin/pip install --quiet --use-pep517 "${WORKDIR}/${TARBALL}" ln -sf /opt/electrum/bin/electrum /usr/bin/electrum rm -rf "$WORKDIR" echo ">>> Done: Electrum ${ELECTRUM_VERSION} installed" echo ">>> Try: electrum --help"