Shrike 2.5.4-blake2b.4 - unified opt-in signature hash for Knots rc3
Pre-releaseSuperseded by v2.5.4-blake2b.5. This build cannot verify a confirmation above height 149183 on testnet4: it reads every block header as 80 bytes, where a header is 164 from the fork on, and identifies a v2 block by its SHA256d rather than the BLAKE2b hash the chain links on. A transaction confirmed above that height shows no confirmations and raises a verification refused dialog naming the connected server, which is not at fault. Kept here so the files already downloaded can still be verified against its signed manifest.
Shrike signing with the unified opt-in signature hash as Bitcoin Knots v29.4.1.knots20260508rc3 defines it, on upstream Sparrow 2.5.4.
Builds published before rc3 do not work and must be replaced. The signature message changed, so an older build's opted-in spends are rejected with mempool-script-verify-flag-failed. Every opted-in spend, not just some.
Verified
Reproducible: building this commit locally with Eclipse Temurin 25.0.2+10 produces an application tree byte-identical to the one CI published. As upstream notes, this covers the .tar.gz and .zip contents, not the installers.
On live testnet4: a node at /Knots:20260508rc3/ reports blake2b {height: 150027, active: true}, matching the height this build ships, and a mined transaction carries hash type 0x21.
Against a node built from rc3 on regtest: Knots' own feature_unified_sighash; 166 cross-implementation vectors across all four script types; an opted-in send accepted and mined; a pre-activation input spent after activation; an early opt-in refused where the fork is unscheduled; CVE-2020-14199 blocked under the opt-in and reproduced without it. The published x86_64 deb itself was run against rc3, not just the source tree. 306 wallet and 595 drongo unit tests.
Downloads
| Platform | File |
|---|---|
| Windows | Shrike-2.5.4.msi, or .zip for a portable copy |
| macOS | Shrike-2.5.4-arm64-unsigned.dmg, or -x86_64-unsigned.dmg for Intel |
| Linux x86_64 | shrike_2.5.4-1_amd64.deb, or -x86_64.tar.gz |
| Linux aarch64 | shrike_2.5.4-1_arm64.deb, or -aarch64.tar.gz |
| Headless | the shrikeserver-* files |
The macOS builds are not code signed or notarized. Notarization needs a paid Apple Developer account this project does not have. macOS will refuse to open the app on first launch, reporting it as damaged or from an unidentified developer; that means it is unsigned, not that the download is bad. To run it:
xattr -dr com.apple.quarantine /Applications/Shrike.app
Verify SHA256SUMS before doing that. Clearing quarantine removes the check that would otherwise stop a tampered download, so the signature is the only assurance left.
The Windows installer is not Authenticode signed either, and SmartScreen will warn. Upstream Sparrow does not sign its installer either.
Installs to /opt/shrike with its config in ~/.shrike, alongside an existing Sparrow rather than over it. The app reports its version as 2.5.4-blake2b.4.
gpg --import privkeyio-signing-key.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
Signed by Kyle Santiago kyle@privkey.io, key A47D99B6DB0D715D40C59A2023AE8A8EA7E24E38. All files come from one packaging workflow run and one manifest.
Do not use on mainnet
No build carries a mainnet activation height, so past activation the wallet declines to opt in and signs the legacy way, as it does anywhere if even one keystore is hardware-held. A signature that does not opt in is valid under the pre-fork rules as well as the new ones, so it can be replayed against nodes that have not adopted the fork. Opting in is what prevents that. The wallet says so in its status; it does not stop you.
Built from privkeyio/sparrow@6e9acc9c with privkeyio/drongo@2829907, on upstream Sparrow 2.5.4.
No warranty
This is an unofficial, unaudited build provided as is, with no warranty and no liability, under the same Apache 2.0 terms as the LICENSE it inherits. It is not a Sparrow release and is neither affiliated with nor supported by Sparrow Wallet. Running it is entirely at your own risk, and you alone bear any loss of funds.