feat(coinjoin): add SLIP-19 ownership proofs#903
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #903 +/- ##
===========================================
+ Coverage 97.39% 97.44% +0.05%
===========================================
Files 83 84 +1
Lines 10845 11078 +233
===========================================
+ Hits 10562 10795 +233
Misses 283 283 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
b853125 to
2b5d27a
Compare
Implement firmware-side SLIP-19 support for CoinJoin flows: - Add SLIP-21 ownership key derivation and SLIP-19 proof generation - Support P2WPKH and BIP-86 tweaked P2TR proof signing - Add policy-gated CoinJoin PSBT signing with self-transfer checks - Add disabled-by-default CoinJoin security settings - Add focused SLIP-19 and CoinJoin PSBT tests - Add CoinJoin feature documentation - Add translation entries for new CoinJoin settings
- normal PSBT uses signer.sign - CoinJoin PSBT uses signer.sign_coinjoin
2b5d27a to
4bf4598
Compare
Only show the CoinJoin PSBT signing option when CoinJoin is enabled in security settings. Add a focused menu visibility test for enabled and disabled states.
|
Thxs for contribution @PMK. I will need to read SLIP-19/SLIP-21 (and their suposed SLIP*) and will be a nice learn so i could review. Please correct-me if i made a conceptual error here, but from what i rememeber coinjoin needs PSBTv2 (being done on embit), this is another way to do coinjoin? But since it's a SLIP*, it have a good acceptance on a hardware wallet. Let's wait others review too :) Since the concept of coinjoin is not an air-gap workflow AFAIK, but it's a neat new workflow. So IMO would be nice to have a issue linked to this PR, since it's a new feature. |
|
This is the first step to supporting remote-signing of coinjoin transactions, sadly a pure airgapped solution would disrupt rounds more than be helpful. So I'm working on the next step, a fork that allows limited communication over USB, so that we can do unattended auto-signing based on pre-approved spending policy (a bit like a HSM). Old Trezor firmware still does this, which I revived recently: https://github.com/kravens/WalletWasabi/tree/feature/trezor-coinjoin but I'd like to have cheaper self-built solutions too (where Krux is a great starting point). This probably deviates from the philosophy of not shipping any USB comm code with the firmware, let us know what you think! |
From the created documentation:
The second screenshot is that it failed to sign. I indeed had to put a caption below it. |




What is this PR for?
Implement firmware-side SLIP-19 support for CoinJoin flows:
See this documentation for more info about CoinJoin.
Fixes #709
Changes made to:
Did you build the code and tested on device?
What is the purpose of this pull request?
With thanks to @kravens