False Return

Revision as of 00:34, 24 November 2020 by Brendan (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

False Return outputs are transaction outpoints which begin with the script "OP_FALSE OP_RETURN". This script always returns a false when evaluated making the output unspendable and locking any funds attached to that endpoint. When attempting to spend the False Return output, OP_FALSE will push "false" to the stack, after which OP_RETURN is executed. OP_RETURN terminates the execution immediately. The result of the execution is then read from the top of the stack. In this case, "false" is read, therefore the script fails regardless of what else is on the stack.

False Return outputs can be used to store arbitrary information such as records, tokens, files and more. False Return outputs are commonly used as vehicles to carry data for application layer protocols inside Bitcoin transactions.


Due to changes made by Satoshi in 2010 to prevent people exploiting a bug in the Bitcoin software, the OP_RETURN opcode was changed to force scripts to terminate in failure. This led to the widespread use of so-called 'Op_Return outputs' which start with an OP_RETURN instruction and then store data for application layer protocols. Bitcoin Core rules stipulated that to use an OP_RETURN instruction in an output, it had to be both, the only opcode in the output, and the first opcode in the output. The Quasar Update in early 2019 relaxed these requirements to allow OP_FALSE OP_RETURN in preparation for the Genesis update in February 2020, where the original OP_RETURN functionality was restored. The use of the OP_FALSE, replicated the provably unspendable property of OP_RETURN that many use cases have come to rely on. Many second layer protocols were built using the OP_RETURN framework prior to being migrated to False Return outputs.