In discussing https://github.com/rust-bitcoin/rust-bitcoin/pull/669?notification_referrer_id=NT_kwDOAA2G-7EyNDgwMTU5NzIxOjg4NjUyMw#event-5861680619 it’s clear that the PSBT spec is ambiguous with respect to what values should be parseable for PSBTs, this patch clears up the ambiguity.
Personally, I feel that the better path is to allow NULLDUMMY here, as there could be some situations whereby satisfaction is NP-hard without some indicator of use a signature or not:
e.g., a contrived example (not saying you should do this) is
0<0> toaltstack
1<pk0> Checksig OP_IF FROMALTSTACK <V0> OP_ADD TOALTSTACK OP_ENDIF
2<pk1> Checksig OP_IF FROMALTSTACK <V1> OP_ADD TOALTSTACK OP_ENDIF
3...
4<pkN> Checksig OP_IF FROMALTSTACK <VN> OP_ADD OP_ENDIF
5<T> OP_EQUAL
where to satisfy requires solving a subset-sum, so just collecting all valid signatures does not allow a polynomial time finalizer to solve by inference in many cases even if all signers add their signature.
Of course, this isn’t the best example, but it is an example nonetheless.