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

wallet: default to rangeproof-committing sighash when dynafed active

Public commit record

What the developer wrote

Authored by Byron Hambly

73/100 · Adequate
wallet: default to rangeproof-committing sighash when dynafed active

Change the wallet's default pre-Taproot sighash to commit to output
rangeproofs when dynafed is active at the current tip, closing the
pre-Taproot rangeproof (witness) malleability gap. Route the default
through DefaultSighashType(chain().isSighashRangeproofActive()) in
CWallet::SignTransaction and in the signrawtransactionwithwallet /
walletprocesspsbt RPCs when the caller does not supply a sighash.
Explicit user-supplied sighash types are left untouched.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This commit changes the Elements wallet so that, when a newer consensus feature called 'DynaFed' is active, any transaction the wallet signs without an explicit signature mode will automatically include the transaction's confidential output proofs ('rangeproofs') in the signature. Previously, those proofs could be changed by a third party after the transaction was signed, which could let someone mangle a transaction's witness data without invalidating the signature. The fix only changes the default behavior; users who explicitly pick a signature mode are unaffected.

Recommended action

Review the DefaultSighashType helper to confirm it returns the expected SIGHASH_ALL_WITH_RANGEPROOF when rangeproof sighash is active and SIGHASH_ALL otherwise. Verify that no other wallet signing paths bypass this default. Consider whether any tests or release notes should document the changed default for RPC users.

Security signals we found

01

Fixes a known malleability vector: pre-Taproot rangeproof/witness malleability

02

Changes wallet default sighash only when dynafed is active

03

Does not override explicit user sighash choices

04

Touches wallet signing paths (CWallet::SignTransaction, signrawtransactionwithwallet, walletprocesspsbt)

05

Adds ELEMENTS-specific comments indicating security relevance

Risk score

Why this scored 64/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 10/15
Affected reach 12/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.