Repository navigation
Releases
v0.2.0 - two firmwares, and a multisig tutorial that runs
Two firmwares, a multisig tutorial that really runs, and a page that proves what it is serving you.
This is a simulator, not a wallet. No secure element, no air gap, a general purpose computer. Never enter a seed phrase you rely on: use a public test seed.
What is new
Two firmwares, switchable on the page. The 3rdIteration smartcard fork and stock SeedSigner 0.8.7, each pinned to a release, each built reproducibly, each with its own published hashes. The card tray is absent under stock, because stock has no smartcards. The simulator now defaults to Testnet rather than Mainnet.
A multisig tutorial, inside the simulator. One button runs a whole 2 of 3 on Bitsaga Signet, a private test network we run: three SeedKeeper cards each holding a public test seed, three account keys read back off them, a 2 of 3 built and registered on the device, coins from a faucet, a spend signed by two of the three cards, broadcast and confirmed. Self driving or hands on, with the QR exchange shown between a device and a phone rather than hidden. About two and a half minutes.
Technical details, on the page. A panel naming the firmware, the upstream tag and commit, the interpreter and every pinned dependency, and, next to the published hash, the hash of the wallet zip your browser actually received. It says plainly that a page checking itself is a convenience rather than proof, and links to the rebuild that is not.
Smartcards that behave like the hardware. Save a seed to a SeedKeeper and load it back; a Satochip that holds a real key and derives from it; descriptors stored on a card. The simulator now ships the same pysatochip the device builds from GitHub, rather than the older one on PyPI, so it reproduces the device's behaviour including its bugs.
What is checkable
wallet-smartcard.zip |
22e6034509b547242db58ea7303d3f605007c60e637444b173e505eabbb834ca |
| contents | d2527f58d122a7155343b215b596dc94991dad5e893b9f5ec30da6ffe1463684 |
wallet-stock.zip |
2db897dea90a0ecc090e959cbea34c6b4afbaa860478a260cc51f8cfdfd0a253 |
| contents | dbea45131cc89e391b8ced909975b7d0030771d1d284142dd8287668130f2974 |
./build/build-wallet-zip.sh smartcard
sha256sum build/out/wallet-smartcard.zip
curl -s https://bitsaga.be/seedsigner-simulator/wallet-smartcard.zip | sha256sumOr check that the attached file came out of this repository's workflow, which involves nothing from us:
gh attestation verify wallet-smartcard.zip --repo bitsagarob/seedsigner-simTwenty tests, and four things CI does on every push: run them, rebuild both firmwares on a clean runner and fail if either hash moved, run SeedSigner's own test suite against the dependency versions this repository pins, and scan for anything that should not be committed. The tag is signed; .github/allowed_signers holds the key.
Also
Mainnet signing is proven correct offline, against an implementation sharing no code with the wallet, which is why the warning about Mainnet is worded the way it is. The pin can be overridden with SS_REPO and SS_COMMIT to build against your own fork, and such a build says so rather than passing itself off as published.
v0.1.0 — the first release worth checking
The real SeedSigner firmware running in a browser tab — not a video and not a
lookalike, the same Python that runs on the device, drawing the same screens.
This is a simulator, not a wallet. No secure element, no air gap, a
general-purpose computer. Treat every key it shows you as public, and never
enter a seed phrase you rely on — use a public test seed instead.
What it does
- The full wallet: menus, seed loading by QR or by hand, passphrases, xpub
export, PSBT signing, SeedQR backup. - A simulated SeedKeeper and Satochip. Save a seed onto a card, take it out
of the wallet, and load it back off the card. Each of the three slots holds
one of each kind; the card type is yours to pick before you insert it. - Card state lives in memory only, so a page refresh gives you factory-fresh
cards.
What it is built from
| Wallet | 3rdIteration/seedsigner at tag SeSi-0.8.7+ShSi-B11 |
| Commit | 662d9dba2327eb77d6924ae9bd62d4902bf24634 |
wallet.zip sha256 |
d872779967ed1e2b400de469590dd7bf3a459db66c071d26211e87f866db3199 |
| contents sha256 | d2e658a2a422c8d2a318ec0f1159d1a29750b1862b27fd2cf59c336bf9376180 |
That is the same tag the official smartcard hardware image is built from, so the
simulator and the device run the same code.
Checking this release rather than trusting it
Rebuild it yourself and compare:
./build/fetch-assets.sh
./build/build-wallet-zip.sh
sha256sum build/out/wallet.zipOr check that the attached file came out of this repository's workflow, which
involves nothing from us at all:
gh attestation verify wallet.zip --repo bitsagarob/seedsigner-simThe tag is signed. .github/allowed_signers on main holds the key, and the
same key is published at https://github.com/bitsagarob.keys.
CI re-derives both hashes on a clean runner on every change, and runs
upstream's own 22,000-line test suite against this repository's pinned
dependency versions.