bip-0375: say the version byte belongs to the identifier, not to the field #2257

pull fametrano wants to merge 1 commits into bitcoin:master from fametrano:bip375-sp-info-identifier-serialization changing 1 files +1 −1
  1. fametrano commented at 5:24 PM on August 14, 2026: contributor

    One sentence, in the Unique Identification section:

    The PSBT_OUT_SP_V0_INFO should be serialized as a zero byte for the version, followed by the 33 bytes of the scan key and then 33 bytes for the spend key.

    It names the field, and the field is 66 bytes: its table entry is <33 byte scan key> <33 byte spend key>, bip375_test_vectors.json carries 66, and validator/validate_psbt.py refuses anything else — invalid[1] reports "Output 0 SP_V0_INFO has wrong length (65 bytes, expected 66)".

    Read in its section the sentence is not about the field but about the output script that stands in for a silent payment output when building the unsigned transaction used for unique identification, where 67 bytes contradicts nothing. That is also where it came from: d29e2f8 added it together with the unique-identification paragraph above it.

    Both readings are available to someone reading the sentence alone, and one of them contradicts three other artefacts. This picks the one that does not, without changing anything normative.

    No changelog entry or version bump: nothing about the format changes, and leaving them out keeps this from conflicting with #2207 or #2256, both of which touch the changelog. Glad to add both if you would rather have them.

    scripts/link-format-chk.sh, scripts/buildtable.pl, scripts/diffcheck.sh and typos pass locally.

    Noticed while implementing BIP375 in btclib, which serializes the version byte in the identifier and not in the field: https://github.com/btclib-org/btclib/issues/768

  2. bip-0375: say the version byte belongs to the identifier, not to the field
    "The PSBT_OUT_SP_V0_INFO should be serialized as a zero byte for the
    version, followed by the 33 bytes of the scan key and then 33 bytes for
    the spend key" names the field, and the field is 66 bytes: its table
    entry is "<33 byte scan key> <33 byte spend key>", the test vectors carry
    66, and the validator refuses anything else.
    
    The sentence is in the Unique Identification section and was added with
    it, so what it describes is the output script that stands in for a silent
    payment output when building the unsigned transaction that identifies the
    psbt -- 67 bytes there, and nothing about the field. Read as the field's
    own serialization it contradicts the table, which is how it first read
    here.
    
    Only the wording changes.
    ad10d550fc
  3. jonatack commented at 9:43 PM on August 14, 2026: member

    @fametrano Thank you for your contribution. Out of personal curiosity, what AI did you use to make 228 GitHub contributions (so far) today? The PR description is a little hard to grok, can you summarize more concisely in your own words, please?


github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bips. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-08-20 04:10 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me