Skip to content

Instantly share code, notes, and snippets.

@kdmukai
Last active August 17, 2024 12:40
Show Gist options
  • Save kdmukai/fa61a98fd04fc06d3526edf48bbe1506 to your computer and use it in GitHub Desktop.
Save kdmukai/fa61a98fd04fc06d3526edf48bbe1506 to your computer and use it in GitHub Desktop.
SeedSigner v0.8.0 Release Notes

SeedSigner v0.8.0 Release Notes


Quick Highlights:

Addtional legacy signing support:

  • P2PKH (bip44): Legacy format dating back to 2014.
  • P2SH multisig (bip45): Legacy multisig (also 2014).

Quality-of-Life improvements ❤️

  • New animated QR scanning UI + frame-by-frame feedback
  • Much better animated QR scanning progress estimation calcs: no more stuck-at-99%-progress misery!
  • Smarter rendering of outgoing animated QRs = faster reads by wallet software.
  • UX improvements when entering bip39 passphrases, verifying multisig change, etc.
  • Two new community-created 3d-printable enclosure designs.

Explicit support for PSBTs w/OP_RETURN

  • displays the human-readable message or the raw hex data.

Import Electrum Seeds 🌱

  • Import an Electrum native segwit mnemonic, export xpub, sign txs.

Major code refactors, Github automations, MOAR TESTS🔥!

  • Crucial yet unwieldy code got much more wieldy.
  • Awesome Github Actions integrations to automate test suite checks & generate custom SeedSigner OS images.
  • Significant upgrades to the test suite, both under the hood & overall test coverage.

Notes:

Legacy multisig support enables full SeedSigner compatibility with Unchained vaults! (this is unofficial; don't expect Unchained customer support to be able to help you)

The new animated QR scanning UI is sexy (@easyuxd ftw!) and adds a green/gray feedback dot:

  • Green = QR frame read, new data received
  • Gray = QR frame read, but no new data
  • No dot = wtf are you pointing at?

New Pro Tip: If your software coordinator seems stalled when reading a long outgoing animated QR, flick the SeedSigner joystick up/down. Why? The first few frames of an animated QR are the most valuable and they do NOT repeat. But now when you change your SeedSigner's outgoing QR code brightness (joystick up/down), those valuable frames are re-played.

Adding limited support for Electrum seeds is meant to help legacy/OG users eventually migrate away from Electrum and into more standardized wallet software. Full integration with Electrum is not planned.


SettingsEntryUpdateSelectionView_electrum_seeds SeedElectrumMnemonicStartView SeedAddPassphraseExitDialogView

PSBTOverviewView_op_return PSBTOpReturnView_text PSBTOpReturnView_raw_hex_data


TODO: Include reproducible build hashes, signed release, etc

Four .img files are included in the release; select the one that is appropriate for your Raspberry Pi hardware:

  • "pi0.img" - For Raspberry Pi Zero v1.3 & Raspberry Pi Zero W
  • "pi2.img" - For Raspberry Pi 2 Model B
  • "pi02w.img" - For Raspberry Pi Zero 2 W & Raspberry Pi 3 Model B
  • "pi4.img" - For Raspberry Pi 4 Model B

To install on your microSD card:

  • Download the appropriate .img file
  • Write the extracted image to a MicroSD card (32MB or larger)
  • (make sure to use "dd" or a disk-authoring tool like Balena Etcher)
  • Re-install the memory card in your signer

More Notes:

Full details:

  • Lead Maintainer: @newtonick
  • Most prolific PR reviewer/tester: @jdlcdl
  • 🎉🎉 NINE new devs contributed to this release! 🎉🎉

New Features:

  • Add Legacy P2PKH Signing: @3rdIteration; w/@jdlcdl, @BamaHodl, @newtonick (#567)
  • Support bip45 legacy multisig p2sh: @kdmukai, @newtonick; w/@jdlcdl (#540, #572)
  • Add limited support for electrum segwit seeds: @BamaHodl (🎉 FIRST PR!), @kdmukai; w/@jdlcdl, @newtonick, @pointbiz, @berlinxray, @jamesturnernz, @3rdIteration (#513, #571)
  • Parse psbts with OP_RETURN data & display payload: @kdmukai; w/@jdlcdl, @newtonick, @petertodd (#517)

Improvements:

  • Animated QR scanning: new UI and improved progress calculation: @kdmukai, design by @easyuxd (#541)
  • Hold QR animation on brightness tips and reset animated QR sequence: @kdmukai; w/@jdlcdl (#495)
  • Add exit dialog when entering passphrase: @alvroble (🎉 FIRST PR!); w/@jdlcdl, @kdmukai, @easyuxd, @seedsigner, @dulcedu (#563)
  • Render SeedQR small registration block in solid squares: @kdmukai; w/@jdlcdl (#484)
  • Clearer UI when multisig change or self-transfer outputs aren't yet verified: @3rdIteration, @newtonick; w/@kdmukai (#533, #549)

Bugfixes:

  • Xpub export can select the wrong coordinator: @kdmukai (#490)
  • Message Signing TextDoesNotFitException on long no whitespace messages: @newtonick (#576)

New Enclosures:

  • "Look Screws!": @surfac3 (🎉 FIRST PR!); w/@newtonick (#505)
  • "Push Case": @kayth21; w/@seedsigner, @newtonick (#548)

CI / Github integrations:

  • Test suite integration w/Github Actions, runs on each PR update: @dbast (🎉 FIRST PR!); w/@jdlcdl, @kdmukai (#469)
  • Initial build workflow via Github Actions: @overcat; w/@newtonick, @kdmukai (#392)
  • More robust automated build integrations: @dbast; w/@kdmukai (#493)

For developers:

  • Add PR template: @newtonick; w/@jdlcdl, @kdmukai (#441)
  • Update seed_phrase_to_qr.py; warnings, add Compact SeedQR: @kdmukai (#523)
  • Entropy-to-mnemonic CLI utility: @kdmukai; w/@jdlcdl, @newtonick (#404)
  • Add optional Docker env to run test suite, generate screenshots: @newtonick; w/@jdlcdl, @kdmukai (#476)

Documentation:

  • Improved manual dev build instructions: @hax0rbana-adam, @kdmukai; w/@jdlcdl (#436, #509)
  • Clarify reproducible build steps vs manual dev build: @newtonick; w/@jdlcdl, @kdmukai (#487)
  • Misc updates: @newtonick, @thedon702, @seedsigner, @smartm0use (🎉 FIRST PR!), @akarve (🎉 FIRST PR!), @jambolo (🎉 FIRST PR!) (#481, #478, #458, #486, #539, #565, #532, #587, #588, #593)

Misc / Nerdy details:

  • Improve FlowTest + Exception handling interactions: @kdmukai; w/@newtonick, @Marc-Gee (#573)
  • QR Encoder refactor + fountain encoder restart(): @kdmukai; w/@jdlcdl, @newtonick (#494)
  • Taproot support enabled by default: @1ma (🎉 FIRST PR!) (#538)
  • Improved error message for missing font: @dbast; w/@jdlcdl, @kdmukai (#471)
  • Controller import cleanup/refactor: @kdmukai; w/@jdlcdl (#496)
  • Fix unhandled exception when attempting to sign message for custom derivation address: @BamaHodl (#518)
  • UI BTC Address cutoff in PSBTAddressDetailsScreen screen: @newtonick, @kdmukai; w/@jdlcdl (#579, #583)
  • Fix issue caused by having is_sign_message method and property of same name: @BamaHodl; w/@dbast (#578)
  • Fix min python version to 3.10: @dbast; w/@jdlcdl (#470)
  • Dependency bumps for python3.10 compatibility: @LilySu (🎉 FIRST PR!); w/@newtonick, @TABConf (#477)
  • Add Python 3.12 to test matrix as upper bound and fix findings: @dbast (#559)
  • embit version updated to v0.8.0: @newtonick; shout out @stepansnigirev! (#566)
  • Trimming / moving dependencies: @dbast; w/@jdlcdl, @newtonick (#543)
  • Refactor around Pillow deprecations: @newtonick (#485)
  • Migrate to pyproject.toml: @dbast; w/@kdmukai (#554)
  • Setup Python logging + convert print statements to logger calls: @dbast; w/@jdlcdl, @kdmukai (#558)
  • Restore log access in pytest: @kdmukai (#574)
  • Additional tests: @jdlcdl, @kdmukai (#466, #524)
  • Additional screenshots added to the screenshot generator: @kdmukai (#521)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment