Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions bip-0174.mediawiki
Original file line number Diff line number Diff line change
Expand Up @@ -907,8 +907,14 @@ For every type that a Combiner understands, it may refuse to combine PSBTs if it

The Combiner does not need to know how to interpret scripts in order to combine PSBTs. It can do so without understanding scripts or the network serialization format.

In general, the result of a Combiner combining two PSBTs from independent participants A and B should be functionally equivalent to a result obtained from processing the original PSBT by A and then B in a sequence.
Or, for participants performing fA(psbt) and fB(psbt): Combine(fA(psbt), fB(psbt)) == fA(fB(psbt)) == fB(fA(psbt))
In general, the result of a Combiner combining two PSBTs from independent participants A and B will be functionally equivalent to a result obtained from processing the original PSBT by A and then B in a sequence.
Or, for participants performing fA(psbt) and fB(psbt) where fA() and fB() only add unique fields to the PSBT: Combine(fA(psbt), fB(psbt)) == fA(fB(psbt)) == fB(fA(psbt))
Combining two PSBTs is commutative unless the PSBTs have conflicting fields, i.e., fields with duplicated keys but differing values.

As discussed in [[Handling Duplicated Keys]], when a combiner is asked to combine PSBTs with conflicting fields,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think this link should be

[[#handling-duplicated-keys|Handling Duplicated Keys]]

Added a fixup in #2203.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks!

the combiner may arbitrarily choose the value for the combined PSBT from any of the original PSBTs.
Alternatively, the combiner may refuse to combine PSBTs with conflicting content.
In this case, the previously discussed commutative property no longer holds.

===Input Finalizer===

Expand Down