AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Informational 12 Bitcoin

Merge bitcoin/bitcoin#35301: Silent Payments: Implement bip352 (take 2)

Public commit record

What the developer wrote

Authored by Ava Chow

91/100 · Strong
Merge bitcoin/bitcoin#35301: Silent Payments: Implement bip352 (take 2)

e3ee0ebd89e9955da94c8d806cfa1793baba9860 tests: add BIP352 test vectors as unit tests (josibake)
f133d1373af6f58488f73fe3dc795d37c4796dd9 common: add bip352.{h,cpp} secp256k1 module (josibake)
44997c391afc1f3ae75d2331606e1261fd365801 Add "sp" HRP (josibake)
356c91f6ae51bd9e48db0920110ac9303f54f714 crypto: add KeyPair::GetSecpKeypair (josibake)

Pull request description:

This PR is part of integrating silent payments into Bitcoin Core. It is the second iteration of https://github.com/bitcoin/bitcoin/pull/28122, now based on https://github.com/bitcoin-core/secp256k1/pull/1765.

This project is tracked in https://github.com/bitcoin/bitcoin/issues/28536.

BIP352
This PR focuses strictly on the BIP logic and attempts to separate it from the wallet and transaction implementation details. This is accomplished by working directly with public and private keys, instead of needing a wallet backend and transactions for testing. Labels for the receiver are optional and thus deferred for a later PR.

Test vectors from the BIP are included as unit tests.

ACKs for top commit:
rustaceanrob:
reACK e3ee0ebd89e9955da94c8d806cfa1793baba9860
theStack:
re-ACK e3ee0ebd89e9955da94c8d806cfa1793baba9860
achow101:
ACK e3ee0ebd89e9955da94c8d806cfa1793baba9860

Tree-SHA512: 9b5706e35a49606ac53303c4be0c08f0a08ee273bd69855ff2c869ebcf63dc1e798f8295b8800a41a7094658ab17134366b1ebf2b79dbda5d4af377b05bb2854
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit adds the first implementation of BIP352 (Silent Payments) to Bitcoin Core. Silent Payments are a new type of privacy-preserving Bitcoin address that lets someone receive payments without publicly revealing a fixed address. The change introduces new code for encoding/decoding silent payment addresses, deriving output public keys, and scanning transactions for outputs belonging to the recipient. It is a feature addition, not a fix for a known security bug. There is no evidence in the commit or supplied references that this introduces a vulnerability or that any security incident occurred.

Recommended action

Review the new BIP352 implementation for correctness against the BIP352 specification, especially edge cases in public key extraction, prevout handling, and secp256k1 silentpayments API usage. Continue monitoring the secp256k1 silentpayments module for upstream security advisories. No immediate security response is indicated by this commit alone.

Security signals we found

01

New cryptographic feature implementation (BIP352 Silent Payments)

02

Extensive use of secp256k1 silentpayments module

03

Input public key extraction from P2PKH, P2WPKH, P2SH-P2WPKH, and P2TR inputs

04

Validation of compressed/fully-valid public keys and Bech32m checksums

05

Rejection of unknown witness versions >1 and reserved address versions >=31

06

No vendor disclosure of security relevance, vulnerability, or incident

Risk score

Why this scored 12/100

Our methodology →
Potential impact 0/30
Exploitability 0/25
Stealth signal 0/15
Affected reach 0/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.