Since its introduction in 2014, OP_RETURN was limited to a single output per transaction. This helped ensure that it was used sparingly and primarily for small proofs or certificates.
In Bitcoin Core v30, this restriction has been removed. Transactions with multiple OP_RETURN outputs are now considered standard and will be relayed by default.
This change significantly increases the amount of arbitrary data that can be carried in a single transaction. It also weakens the historical reasoning behind OP_RETURN as a small and controlled data outlet.
My questions:
- Why was the one-per-transaction limit removed after being enforced for more than a decade?
- Was the impact on spam and chain bloat carefully studied before merging this change?
- How does allowing multiple OP_RETURNs align with the original compromise that OP_RETURN was meant to represent?
- What guidance would Core give to node operators who believe this change undermines Bitcoin’s efficiency as money?