Author: Russell O'Connor 2021-07-07 14:24:17
Published on: 2021-07-07T14:24:17+00:00
In an email exchange between Russell O'Connor and ZmnSCPxj, they discussed the idea of banning Turing completeness in Bitcoin Script. ZmnSCPxj argued for allowing total Turing-completeness but banning partial Turing-completeness, while O'Connor stated that it would be infeasible to ban non-terminating computation for cross-transaction computations. Recursive covenants allow a program to "write" source code for the next step of the computation to the scriptPubKey of one of its outputs, leading to the ability to write universal (i.e., non-terminating) computations. This can only be prevented by banning source code manipulation, which would mean banning the manipulation of strings of bytes, the very basis of the Bitcoin Script language. O'Connor later apologized for his hasty response and agreed with ZmnSCPxj's point about modeling each transaction step as the continue constructor in the RecResult codata type.
Updated on: 2023-06-15T00:02:15.978873+00:00