A desktop Bitcoin SV wallet. It talks to peers, not servers, and your keys live in one encrypted file on your own disk.
16:24:51 wallet unlocked 16:24:51 node started 16:24:52 peer connected: 3.123.101.88:18333 16:24:52 peer connected: 54.152.215.212:18333 16:24:54 peer connected: 104.239.246.158:18333 16:24:55 catching up from h=1719168 block=00000000...3f9a1c72 16:24:58 received tx=9e4b17d0...c2a85f61 vout=0 amount=8774 sat at=mpoi7Croa2C51PkjNNniceRA4k2JrPMaJr 16:25:03 rescan block peer=54.152.215.212:18333 headers=2000 blocks=412 txs=1731 errors=0
The wallet's event log, on testnet. It thinks out loud: which peers it has, where it is scanning from, what it received. The status line at the top compares where the scan has reached with the peers' best height.
v0.0.10, published 2026-09-10. Four builds and a checksum list. Each file shows its SHA-256 here; the Linux builds and SHA256SUMS carry a Sigstore signature.
sha256a785e97fa5482135c05743352b58ffaaaaf7dec47ec057929acb677ac28ad2cfsha256f9961289410f6bce04f5413e67d1fd91b92049f755d37df89e3c3ac9b7c004e2sha256a55eddfbd4a89768dd3748386da66139ef077278dfe68c6c7ee311a12e3caeecsha256bfc6ca584dd9d4f47b27d161db0cf7cee008cd1a6dccd0a6662aad74845df52dsha256e7c2bc5796f186fe965efabef86e4ab6206f6c24d81e6fddee27000f4b80b357sha256d5bca688b7a6b328ded68d4641e2949e4576a4a6cb4559ce379a4295c714033dsha2569e1867a5c92f31ab3724c32a3a74e00e81c2603ac8d3d9d6f8eb0c84d7437884sha25662cd5b5b6336753eb77c9a6d9852d8aa668399503f50ae797385058b0f9b9fe1sha25677c802bca5255b4da04bc88c61e2a4787dbebc035923841e1cad9c4b62ecadddsha256e7e8ab227d60a00d5d866173e57a50e30dbd50b5e799c63bbfd307877d8251a4sha25642bf38050625600db0ea2ba8c4a0e782f29da9db9097b62238c4f64dc2ea3c20usr/local/bin/ffswallet.The wallet opens on testnet. Mainnet is a choice you make when you create a wallet.
The release workflow signs the Linux builds and the checksum list with Sigstore, keylessly. There is no public key to fetch: the certificate names the GitHub workflow that produced the file, and cosign checks it against the transparency log. Before you run a download, check it against its .sig and .pem:
cosign verify-blob FFSWallet-linux-amd64.AppImage \ --signature FFSWallet-linux-amd64.AppImage.sig \ --certificate FFSWallet-linux-amd64.AppImage.pem \ --certificate-identity-regexp '^https://github.com/brad1121/FFSWallet/' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com
Then sha256sum -c SHA256SUMS in the download directory covers the macOS and Windows files too. SHA256SUMS is itself signed, so the check reaches every file.
FFSWallet is a light node. It connects to the Bitcoin SV peer-to-peer network directly, follows block headers, and listens to the mempool for payments to its own addresses. It does not download the chain and it does not trust an indexer.
It only hears what is relayed while it is open. A payment mined while the wallet was closed is not in the balance until that block is replayed. So the wallet remembers the last block it scanned and, on unlock, catches up from there in the background: it pulls each block from peers and replays it. Blocks on this chain run to gigabytes; they stream through one transaction at a time.
Height: 1757291 · scanned to 1719168 (38123 behind)
That is the status bar. The height on the left is the peers' best; the height in blue is how far the wallet has replayed. When the two agree, the balance is right.
Every release stays mirrored here in full. Run the current one; these are for reference.
sha256199ac949d12902066fbed872a6627d6714adef2a3f263cc5a0ae449a09e7b767sha25685218e862dfb0d81afa0ff45b9a1d92430d938272d39e41c633cb57d4c9e8a8dsha2562b327243d0a2d519d89c6a2bfd58a15ef089754ef2f27748929509602800edb0sha256d3d586e6987477ab6f43fb42b5b8c03264be6a3b0a2b10ee6d22f5bb8b9b6745sha256a002fdfcd5454655a4f5d41fc439bef159678e1f0fa6540447c0780894a5d699sha256c657149841546210d92c86bb00ba2c30281a1a2a2facbc7dcec4057126017527sha256db254d5f3f306242a744158090a7a7e3ac898e8731336928927b0c891185f508sha256c7ab0831235228b2f882fd124535e4320ee16e18219d6f5cde56225775eb9b46sha256825a9bc62d2b98d67aa3f8dd2c11ff00b0742762127d1ba68bd565c7d7e76c73sha256b0fb1a0faa1cf05c982388281f4dbbd0bfc91113569e64b82bda351d05acd00dsha256d5e2217f41a72038b37ff1e8f8d60ca1a2f7bacc0c26a7baeb0a94b870ee979dsha256d39542ce15b03e9d21abe749cb6755d3e0e88de8dec5594f674545cee9a61048sha2565b8b9632583c6f19d39bb9ce424fabd079c64a217912553f4ae180f5d9cfaef2sha256569d2bb9185fabca246dffeec4c67c921d3b2ee3f723a175adabd0d43e51448esha25649f03d42fccd6e3a7d9fb8ccdd70bcadb64854e0c159665d5f84b721d1dd8234sha2564639285ec6c9d371520dc280a17cc1d631ea8ce1e593f5e520cc1107f8c63bb3sha256e1c0e4088a224e401b6f5288e64352f652afc41bdd32d814d1df42ea3e2bed5fsha2561a5e2d3aec6c0ce51da1d0f3b9f7efecc6f0bb8b8c098360af106803666d637fsha2569a7da54bad3ef8079171724c02d745f9e4cc4097fdee3eb433259625abfa4e2esha256629c4c82bbfc591c7fe128e7136c16ed5377db6c58a67e980b48852f8d43b70csha256acf6c1a3ab25c3321e0291e4b902d2476b355c139dd338ac2b15c104b9671daasha256c3e8f219631b612a23cf149fa0db44e839f6446027273e814859f3e54dbc43d8sha256e2cb750c52b3e1e495dbf5f01fe6aa17a9ffd014f4a9bad0309318c510f518fdsha2565b878a8a7f298096e77bf47e00c69be61a26506a7c79e804f3d5ff5fffb26024sha2567c67ed3047502b0f1ec93936ed201dbc84c2c276d424e1b318fe4cab2c3c8d20sha2568cf29445d8a604ee4c999b2287856f3c3850b00390d065c991b0dfa05c6f630asha25681b53abadac39a746acb3dfaea4df6529f6f95bbee5e8e84cf009781bf27ba4fsha256d3a02e9d18d4bb51bafaf77cfe1d67fce50a8ad7ea832ae515d9330759cad9f2sha2562d1a48028e7faeeffd0f2a307a0614f9cc3cc580326d20247c73814ba71e546fsha25680820acbc8c0a784312feb96e4b4b3de44c1dcc73a21789553be8996d2cbadf2sha256418c86061b97e01028593355cad4ef8e279925269bc12cb0b85d1f78e958e563sha256314e47d402d2ff0a2f00075135f2d1fa4e9a9cfb2f705ad43f4e96c1aff17ef4sha2562f9dbe80993051ebbc2995f768b7e0d3ef32f9a105fb03650cfebd348b130f1asha2562717af99f5c9915e874325d55896a7264662c5163b1cec7ae85407c82b9deda2sha256f9c5f61c81084cabddd45ef1095f6e74c02cb7eb8f92e1df02a764aff63f1c69sha256cf963e68d44d374886be7b12a34cce4eae3171f6ee2faf87bff4785421488cbbsha2565830c3f8036e24ad52c8eaf421a12143e5973b94ecd0ec37df2ceffeaea8da88sha2569d04f66441071c98fa8d9699695b62b3530f0a1668b7f54eff74f3004599f43esha256e42b0ac505eb02e2d908deac8f9c366e15ddb588a615967ecec16c4b918fee26sha2564a52fd1dfbcd38cfada9d9c1825b227df4bc518ebc901ce6f32acbff27c30b30sha256e7840ded362f3a871d141958187d3815f4dfabc8a6080e395ddcf9fd4fe6ee4dsha256d7966779aa2d0208b656d4aa8e4c4b47d4b7c128a3e58724302a5d68e687de67sha25632c0f6893d55f0c5d3bab6dbb59cde42553cc2478dd7d08be798bed33bf05f10sha25634a9f1b451cf2b287afe5ad11ce8156fc296e76acaafb1130439d4a10dafaad8sha2568204f75e28c4cd2555d4679fe5f63c79b87c424ae7ea364cf0d8bbd88721f3bbsha256b8c1f5ebf60064a90598bbae788b9be03f1b699eccaa68ada21f2933391e051bsha2561f130bcb033fcdbc9426725afbe9e3926b863a2f1d7adc72ac306c5220e933e2sha256912f603470e5212c0ddb00b0f2bd7349befc7cef5bdc1872847d5372377cb2a6sha2561d9604f9514947144c856f83b403558a5a2b6b8bd694f9bf070ce40c92956e6esha256b474a6788bdee1babea46922d89441e548a08ab8a4a5a6ebb4dc98ee392b5755sha256e967858965e7656f3030688e4044b9e5cf20105120ea13cb3a7f9528a83eaf92sha256fe72e35e6ed78a5cf401fbf467b37b1ec9cf89d37cae95c095ea03c5461e6243sha25662b138086ef28e0c0bad02468c4d98d9a69ca4fe91a7d747bcfc507be0e06b26sha2565fe42279c5a6094976fe233c8d30f6f2cbcf94dbf5323b6ec99fa0436c90cef5sha256db4003e351f2157a2e15f988ef8ac218da3005f2a6f2ec44142440f635224fc6sha25670d4c2f9f70c3b22938aa9c398f8092fa2865b6cc9ec5b31f5a00d038492a714sha25621ba062ffba8df2dba4fddf4dd101f9e641156ecf639e565ee72b83b72a8c252sha25688e7ca96044538e0c5da2cff04d56eb424430abf202bd039ebb50a3135c86e21sha2561f6b00ea57fdad65818b06f26ac93cb810e37ac56ee91567a6a814a9f13fbb47sha2568ce5df89f551c688aa14182ce8b45c547d4376beef121438a01d5c8d20945c14sha256f7e2a840c746fcb6046d52c0c8819efe7cd66e0e004b5beeac042b9152f43a0esha2568a5e97bfdf2eb0446149f1f7d31ab87e6758b847d2e1dd0f25357803daa40728sha256292983bd22ff5c77e5b90e9221d206bebf81b8edcdbf98fd196c075e91a594e5sha256b9737deac896a515b899fcba6f564fd14084c050cce1f5bbb0380abace58f757sha25629387bd2e4575fe53d9e04923d79b9c34f69e1274198372c16f83f87cb05a7fbsha256c85c5b8f850efa084d21df4611497638747183479c85c6f6c79a1b35e7b3bbcfsha25696e53ad06d6fd29d0f2d7b3d05aab476e9c32e98dfd7978b75fa94f7e2f6658esha256031d7b60289d5296f20363d9ce963c996011a2df52e5d935c42453022258281dsha256c66ced19c691b9dbba5d2d8eb5804d2690d21ef485d39ce84af0a404e87d8c69sha256d8de7af099b4d2639c10f9d4a11b7d7cce1966e794b3e516e4115a3fd521bba1sha2567c50266702bfddf060ddf80e4347bc919272eea6cece6c75c41e812d8ccbdf51sha2567b91f36fc1bdfa035aa2d592d177df212224d7b47e057773d8dec2fbf9bf5d3csha25643941ef827ab5bd885a3199e5261bfd856791511c0e8f2e65a4b91dd7b4c45fesha2563b3f50f438101cd3b7a5a7e840cb02b73d944fde03cc4373c0843c786edb95c0sha256550bd0fd407e64b176616475956fc3ead10505bcfb07fd3706b3169afe9c70ccsha2564fd79c607f28fd9d3c178c2d5bb7e692175c9a77073635bcca3760b10abf7f64sha256829bb9f4f94c41fc7754eb31610c8e909b010c12fe74b92b0850f090336973c6sha256edfcecd8bd36c14fa45295cb708f0273ec7637907c8467931a31c77d12f69e27sha256442a6471b7fa8a1f676e9821be54385bfbf132db3afe170bc8d901ccc1518594sha256cd863a342dc6e68a00855202e757833a20792ef51e11790e7ac69c3a6f3aab49sha2567a6022daa21eb95bcdb2066afde15708bdf02a515ca3b6f353d90bad62be4a9asha25665851aa23798a4ab8f7357df8dcf797f2b2765e7de87148f07880ab5643e62adsha25655b86ca6f13e77f5a372d461c22c4a71c0b5c7929e2be5ff737019c4df67fd6csha256b2892b38e5e419cece73dc395a3f6047ac4a8156dfe50f1ca5878818a5bf6694sha256129d5e66f5ee60cafbfe5bf5b29be1f44cb54c1f153524bc6db083111ed9af8asha2568bdf02f00d54b8ff60e7a342ca0f9fc3d68f0d201bab3beb5ad43f0ad8cc04d9sha25605d500ef76d9597d8de3101703bdefd37744226b97368990c9ce30ac73368e1asha25607b69e5c265cba70e634987129d10383d4d83ec3791621e3d5d28c6c5cb526ed