Skip to content

Conversation

@nymius
Copy link
Contributor

@nymius nymius commented Jan 19, 2026

Abstract

This document proposes an additional per input field for BIP 370 PSBTv2 that allows BIP 352 silent payment tweaks to be included in a PSBT of version 2. This field will be relevant to silent payment outputs spending.

Mailing list discussion: https://groups.google.com/g/bitcoindev/c/Kap7NMwzl2k
Delving bitcoin discussion: https://delvingbitcoin.org/t/bip352-psbt-support/877/32

Copy link
Member

@murchandamus murchandamus left a comment

Choose a reason for hiding this comment

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

This is a good start, most parts seem to already be here. Would be great to get some more eyes on this from other people working on Silent Payments.

@nymius
Copy link
Contributor Author

nymius commented Jan 29, 2026

I have pushed the changes in separated commits, to squash later.
Thanks for the feedback!

@murchandamus
Copy link
Member

What’s the next step here? Will you be asking for people to provide some review, do you still have planned work, are there any open questions?

@nymius
Copy link
Contributor Author

nymius commented Feb 4, 2026

So far, I haven't received any negative feedback on the proposal, so I plan to do a second round of review on the rationale. I would like to steel-man the argument for this approach against the other alternatives.
Since the feedback occurred outside the designated channels, I will try to move the discussion there whenever possible.

@murchandamus
Copy link
Member

Assigned BIP376. Please update the BIP and Assigned headers in the preamble, add a table entry in the README for your proposal, and update your documents filename.

@murchandamus murchandamus changed the title BIP Draft: Spending Silent Payment outputs with PSBTs BIP376: Spending Silent Payment outputs with PSBTs Feb 5, 2026
@nymius nymius force-pushed the bip-spending-silent-payments-outputs-with-psbts branch from 43d3ce2 to aa4c4ed Compare February 5, 2026 20:18
@nymius
Copy link
Contributor Author

nymius commented Feb 5, 2026

While weighing the requirement of BIP 375, I detected there is no mention of how to source the base key to which the PSBT_IN_SP_TWEAK is added.

I have multiple ideas for this:

  • The 33 byte spend public key is included in the keydata from the new field.
  • The derivation information of the spend key is included in the corresponding BIP 32 fields.
  • The spend public key is transformed into a 32 xonly public key and it is included in one of the BIP 371 fields and both parities are considered.
  • This is left unspecified and the signer should implement a way to match the private key with the input and the tweak.

This would be a source of ambiguity. I will consider the options and update once I've a conclusion.

@murchandamus murchandamus added the PR Author action required Needs updates, has unaddressed review comments, or is otherwise waiting for PR author label Feb 6, 2026
@murchandamus
Copy link
Member

Okay, I’ll consider this in your court until you state otherwise in a comment here. :)

@craigraw
Copy link
Contributor

craigraw commented Feb 6, 2026

Good catch. I don't think this should be left unspecified.

Further, I think this choice can be simplified by considering the requirements of hardware wallets. I checked the firmware for both the Coldcard and the BitBox02 - both derive private keys from derivation paths, not public keys.

While you could use PSBT_IN_BIP32_DERIVATION, there may be some confusion with PSBT_OUT_TAP_BIP32_DERIVATION since BIP352 spends Taproot outputs.

To avoid this I suggest creating a new field called PSBT_IN_SP_SPEND_BIP32_DERIVATION which contains the same keydata and valuedata definitions used for PSBT_IN_BIP32_DERIVATION.

After considering how to explain the difficulty of making BIP 341 and
BIP 352 compatible to avoid the addition of this field, I decided to
remove the paragraph completely, because at the end, the discussion if
BIP 352 could have been made differently to be compatible with BIP 341
tag hashes and reuse BIP 371 fields, belongs to BIP 352 and not here.
This BIP should consider BIP 352 as it is. Changes to BIP 352 belong to
a different BIP proposal.
@nymius nymius force-pushed the bip-spending-silent-payments-outputs-with-psbts branch from 09e9b51 to 2a3ca6a Compare February 11, 2026 16:34
@nymius
Copy link
Contributor Author

nymius commented Feb 11, 2026

I have revised the spec to address grammar and phrasing, and included the following updates regarding content:

  • Following @craigraw suggestion (thanks!) I added a new PSBT_IN_SP_BIP32_DERIVATION field:
    • I considered other alternatives that do not adhere to the BIP 32 scheme, such as FROST. However, as the PSBT specification is primarily built around the BIP 32 derivation scheme, I decided not to deviate from that standard. When the time comes, these protocols will likely propose updates to align with the PSBT specification. I added a reference at the end explaining this.
    • I moved the PSBT_IN_SP_TWEAK below this new field.
    • I added a paragraph to the rationale justifying the creation of this new field rather than reusing one of the existing *_BIP32_DERIVATION fields.
  • I removed a paragraph from the rationale regarding the complexity of making BIP 341 and BIP 352 compatible to reuse Taproot BIP 371 fields (03e925c): I realized that the discussion of whether BIP 352 could have been designed to comprise BIP 341 tag hashes pertains to BIP 352 itself, not this document. This BIP should address BIP 352 as currently defined; changes to the BIP 352 standard belong to a different proposal.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New BIP PR Author action required Needs updates, has unaddressed review comments, or is otherwise waiting for PR author

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants