Skip to content

Concurrent PSBT spec - #16

Draft
yuval-block wants to merge 1 commit into
mainfrom
concurrent-psbt
Draft

yuval-block wants to merge 1 commit into
mainfrom
concurrent-psbt

Conversation

@yuval-block

@yuval-block yuval-block commented Aug 5, 2026 •

Copy link
Copy Markdown
Collaborator

This is a draft BIP, extending BIP 370 with more concurrency friendly semantics

TODO

  • move to bip-drafts subdir
  • describe generic G-set fields using idempotence ID for keydata
  • spin off different sections into dependent docs
    • explicit fee contributions G-set (one approach for defining termination conditions)
    • payment confirmations (can be in band or out of band)
    • lightning open2 / interactive-tx compatibility
      • optional removal support (G-set of tombstones)
      • explicit sort keys? that plus removal can be
    • security properties of the deterministic seed as a commitment
    • optional fields/BIPs spec that can be used to signal when these auxiliary proposals should be in effect

@yuval-block

Copy link
Copy Markdown
Collaborator Author

A related spec that can be written: G-set based in band CISA full agg - there are specific safety considerations for CISA so this needs to be thought through carefully, but in principle all of the CISA related protocol messages can be accumulated in a G-set

https://groups.google.com/g/bitcoindev/c/TF5mPfy58RQ/m/vAk1Mfg2AwAJ

Comment thread psbt-concurrent.md

This can provides additional integrity to a collaborative transaction construction protocol, since [`SIGHASH_ALL`](#divergence-and-sighash-flags) signatures must agree on the ordering.

In applications where this is desirable, the *Creator* should only set `PSBT_GLOBAL_SORT_DETERMINISTIC` to `0x01`, and leave `PSBT_GLOBAL_SORT_SEED` unset. Each replica will locally provide a value for `PSBT_GLOBAL_SORT_SEED` just in time, as a commitment to protocol transcript (e.g. the root hash of a Merkle set of protocol messages).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

psbt-concurrent.md:132 requires PSBT_GLOBAL_SORT_SEED to be set whenever PSBT_GLOBAL_SORT_DETERMINISTIC is 0x01.
psbt-concurrent.md:146 recommends the Creator set PSBT_GLOBAL_SORT_DETERMINISTIC to 0x01 and leave PSBT_GLOBAL_SORT_SEED unset, so the spec's own recommended flow violates its MUST.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

good catch, i changed my mind about it later to relax, because in some settings setting the determinsitic seed only later can make sense (if it's a transcript hash and only set locally, for example)

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants