Skip to content

Conversation

@macgyver13
Copy link

@macgyver13 macgyver13 commented Nov 26, 2025

Tested with Sparrow Air Gapped Wallet commit a6081970 and simulator on mainnet

After putting together some python BIP 375 examples I took a look at the coldcard firmware and discovered it would be a easy lift to create a Proof of Concept to evaluate silent payments since PSBTv2 was already supported. This PR focuses on core behavior and minimal UI/UX changes.

The commits were organized to make review as easy as possible. There are some # TODO: in code where I don't have enough knowledge to make a decision at this time. Appreciate your feedback and advice on this PR.

TODOs:

  • verify silent payments labeled address handling
  • verify multi sig silent payment workflows - need to implement on wallet coordinator side first
  • address edge cases / attack scenarios
  • test on real hardware - evaluate memory and performance
  • proper UI/UX for Silent Payments

screenshots
image
image
image

shared/bech32.py Outdated
@@ -0,0 +1,135 @@
# from <https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you shouldn't need this - just import bech32 we bundle it together with ngu from this C port https://github.com/sipa/bech32/tree/10d38fbba12da9f93c54c7fd44376152e1c06d85

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! Thank you for the feedback.

Unfortunately, I could not use any existing encoding functions in ngu so I followed the scheme of adding nip19 encoding to add bip352_encode. If you have a better idea please let me know.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, I completely forgot we only expose segwit_{encode/decode} thru ngu.codecs - sorry for unreliable info.

Your approach, adding it to the libngu, is correct.

Update libngu Submodule to support bip352_encode
@macgyver13 macgyver13 force-pushed the silentpayments-bip375-psbt branch from 4923edd to c5b5977 Compare December 5, 2025 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants