Author: Russell O'Connor 2021-07-07 13:12:58
Published on: 2021-07-07T13:12:58+00:00
In an email exchange, ZmnSCPxj and Russell discuss whether or not to ban Turing completeness for the sake of banning it. ZmnSCPxj argues that partial Turing-completeness should be banned, but total Turing-completeness should be allowed. However, when it comes to cross-transaction computations, it is not feasible to ban non-terminating computation. The nature of recursive covenants is such that the program "writes" the source code of the next step of the computation to the scriptPubKey to one of the outputs of its transaction. This leads to the ability to write universal (i.e., non-terminating) computations. Banning source code manipulation would mean banning the manipulation of strings of bytes, which is how the entire Bitcoin Script language works. Even the most trivial of non-terminating programs can be implemented by extracting the current input's scriptPubKey from the sighash and "writing" the identical scriptPubKey to one of its outputs.
Updated on: 2023-06-15T00:02:06.075504+00:00