Bitcoin Is Not One Computation Object: Script Boundedness, UTXO State, and Transaction-Chained Universality
"Bitcoin is Turing-complete" is ill-posed until one names the object, rule set, and enforcement tier — where the rule set includes the composition combining unlocking and locking scripts, not just the opcode table. Our result is era-resolved: whether Bitcoin can enforce a covenant turns on the opcode set, the script composition, and the resource model — and on mainnet these never simultaneously admitted the covenant we exhibit. A single v0.1.0 Script provably halts (F1). The deployed genesis validator composed scripts in one pass with a permissive OP_RETURN, so every output was bypass-spendable: the 2009 chain's script layer enforced no locking predicate and sits at the Recorded tier (Lemma 3, our composition finding, [C-executed]). Under a sound two-phase composition the genesis opcodes express a computationally consensus-enforcing OP_PUSH_TX covenant (under a stated classical hash-binding assumption) — OP_CAT plus arbitrary-precision arithmetic bind the spending transaction through OP_CHECKSIG and constrain its outputs — which we assemble, shape-pin, run with a program-carrying two-counter machine, and execute through the compiled interpreter ([C-executed] on the rule set R*: genesis opcodes over sound composition). Reading the actual bitcoin/bitcoin source across the 2010 hardening shows R* never ran on mainnet, and pins why. Sound two-phase composition first shipped at v0.3.7 (31 July 2010) — but the same hardening imposed a 201-non-push-opcode consensus limit that genesis lacked, and the covenant needs 353 opcodes (its two mandatory little-endian↔big-endian reversals alone are 197), so at v0.3.7 its output is unspendable (executed: rejected under the full v0.3.7 rule set). The two axes — opcode expressiveness and sound composition — did briefly coexist at v0.3.7–v0.3.9, but our covenant needs a third thing, opcode-budget headroom, that v0.3.7 removed at the same moment; then commit 4bd188c (15 August 2010) disabled the covenant opcodes and cut the numeric cap together. So our exact legacy-sighash covenant is off mainnet at every version, and R* is counterfactual — bracketed by unsound composition before v0.3.7, the op-count limit at v0.3.7, and the opcode/arithmetic removal at v0.3.10. (Even the bare binding stripped of all machinery is 224 non-push opcodes executed, golfable toward ~216, still >201; whether a maximally golfed covenant could reach 201 is genuinely open — the optimistic counting baseline (~155) sits below 201 while every known construction sits above, so it turns on an unproven reversal rate, [C-model] — while every covenant we build, 224 to 353 ops, is rejected, [C-executed].) Both the R* capability and the genesis refutation run through the compiled interpreter ([C-executed], certifying recompiled semantics, not bit-identity with the 2009 binary), each historical fact read from the hash-pinned bitcoin/bitcoin tags. The contribution is a definitional discipline plus an artifact adjudicating the covenant capability on R*, its genesis refutation, and the three-factor bracket that keeps our covenant off mainnet. Changes in version 2: Corrects the full two-counter dispatching covenant's non-push op-count to 353 (the earlier 254 figure is the smaller single-counter C(7) construction, 733 bytes); the three-factor era result and all conclusions are unchanged, since every construction in the 224–353 range still exceeds v0.3.7's 201-op limit. Also tightens the machine theorems' hypotheses (well-formed programs), states the two-axis window as v0.3.7–v0.3.9, and makes minor cross-reference and typesetting fixes.
Authors
- PARTH MAURIA SAXENA (ORCID: https://orcid.org/0009-0006-9409-6534)
Publication Details
- Journal
- Zenodo (CERN European Organization for Nuclear Research)
- Published
- 2026-07-18
- DOI
- https://doi.org/10.5281/zenodo.21384415
- Primary Topic
- Blockchain Technology Applications and Security
- Type
- preprint