Inconsistency of "fee at end" rule
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.
CC: @wintercooled (reported the issue), @apoelstra @stevenroose (might have some insight into the rule)
There is no consensus reason that the fee output should be last (or that there be exactly one of them, for that matter).