The Bitcoin-based approach, on the other hand, has the flaw that it does not inherit the
simplified payment verification features of Bitcoin. SPV works for Bitcoin because it can
use blockchain depth as a proxy for validity; at some point, once the ancestors of a
transaction go far enough back, it is safe to say that they were legitimately part of the
state. Blockchain-based meta-protocols, on the other hand, cannot force the blockchain
not to include transactions that are not valid within the context of their own protocols.
Hence, a fully secure SPV meta-protocol implementation would need to backward scan all
the way to the beginning of the Bitcoin blockchain to determine whether or not certain
transactions are valid. Currently, all "light" implementations of Bitcoin-based meta-
protocols rely on a trusted server to provide the data, arguably a highly suboptimal result
especially when one of the primary purposes of a cryptocurrency is to eliminate the need
for trust.
Scripting
Even without any extensions, the Bitcoin protocol actually does facilitate a weak version of
a concept of "smart contracts". UTXO in Bitcoin can be owned not just by a public key, but
also by a more complicated script expressed in a simple stack-based programming
language. In this paradigm, a transaction spending that UTXO must provide data that
satisfies the script. Indeed, even the basic public key ownership mechanism is
implemented via a script: the script takes an elliptic curve signature as input, verifies it
against the transaction and the address that owns the UTXO, and returns 1 if the
verification is successful and 0 otherwise. Other, more complicated, scripts exist for
various additional use cases. For example, one can construct a script that requires
signatures from two out of a given three private keys to validate ("multisig"), a setup
useful for corporate accounts, secure savings accounts and some merchant escrow
situations. Scripts can also be used to pay bounties for solutions to computational
problems, and one can even construct a script that says something like "this Bitcoin UTXO
is yours if you can provide an SPV proof that you sent a Dogecoin transaction of this
denomination to me", essentially allowing decentralized cross-cryptocurrency exchange.
However, the scripting language as implemented in Bitcoin has several important
limitations:
Lack of Turing-completeness - that is to say, while there is a large subset of