elements icon indicating copy to clipboard operation
elements copied to clipboard

Inconsistency of "fee at end" rule

Open gwillen opened this issue 4 years ago • 2 comments

Some of our RPCs enforce a rule that the fee output must be last. I'm not clear on where this requirement comes from, or whether it needs to be enforced.

There is at least one case in blinding (blinded inputs / no blinded outputs) where we have to add a zero-value OP_RETURN output in order to balance the blinding factors. It looks like we add this at the end, which messes up the 'fee output must be last' logic.

If the fee output indeed must be last, I would like to add some checks to ensure we are consistent about this everywhere, rather than in an ad-hoc way as we do now. Then we can move the "bonus output" to be before the fee for consistency.

If not, I would like to revisit the "fee last" rule.

gwillen avatar Mar 30 '21 22:03 gwillen

CC: @wintercooled (reported the issue), @apoelstra @stevenroose (might have some insight into the rule)

gwillen avatar Mar 30 '21 22:03 gwillen

There is no consensus reason that the fee output should be last (or that there be exactly one of them, for that matter).

apoelstra avatar Apr 21 '21 13:04 apoelstra