Skip to content

NUT-11: hash blinded outputs in SIG_ALL - #461

Closed
SatsAndSports wants to merge 2 commits into
cashubtc:nut11-sigall-v1from
SatsAndSports:sigall-hashed-outputs
Closed

SatsAndSports wants to merge 2 commits into
cashubtc:nut11-sigall-v1from
SatsAndSports:sigall-hashed-outputs

Conversation

@SatsAndSports

Copy link
Copy Markdown

Summary

Point encoding

SHA256 is applied to the exact canonical raw point encoding decoded from the
B_ hex string. For secp256k1 this is the 33-byte compressed SEC1 encoding,
including the 0x02 or 0x03 parity prefix. It is not the 32-byte x-only
representation and not the UTF-8 hexadecimal representation.

Including parity ensures that B_ and -B_ have distinct commitments even
though they share an x-coordinate. Defining the preimage as the canonical raw
encoding also extends naturally to other point types.

Verification

  • regenerated both framed transcripts and tagged hashes independently
  • verified the new BIP-340 signatures
  • ran npx prettier@3.9.1 --check 11.md tests/11-test.md

@SatsAndSports

Copy link
Copy Markdown
Author

I've decided to close this PR that I made

I'm not against hashing the blinded outputs, and am happy for anyone else to advocate for this. It's just that I now have another solution (Unpoisonable Blinded Outputs) that fixes the poison issue directly, allowing us to keep using adverserial multi-party e-cash transactions (e.g. Spilman with non-interactive setup)

@github-project-automation github-project-automation Bot moved this from Backlog to Done in nuts Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant