While in theory Bitcoin can be adapted to "2.0 features" and beyond, in practice it's impossible.
Bitcoin code, protocol and marshaling formats are a mess. Bitcoin blockchain and transaction data structures make too many hardcoded assumptions about underlying application - payments with a single token.
Bitcoin scripting language was designed for transaction validation only, which makes implementing a smart contracts with it a hack and requires external Oracles.
TL;DR: Bitcoin is a good PoC which gained a network effect.
> Bitcoin code, protocol and marshaling formats are a mess.
Which is why people are working on e.g. Libconsensus.
There are dozens of functional Bitcoin clients based on entirely different codebases, which indicates that it's entirely possible to start from scratch.
>payments with a single token.
While the Bitcoin transaction format is a bit inflexible, you're wrong about the assumptions it makes. Even from the beginning, there has been in-protocol support for more advanced transaction types, like escrow transactions. You can even use a lot of these transaction types right now! There are still some transaction script opcodes that haven't been fully enabled yet, but that's just a matter of tweaking the consensus rules once we're sure that the opcode was implemented correctly and won't have any bad side effects. This has happened several times already with no major problems.
You can find a list of Bitcoin script shortcomings in the Ethereum whitepaper and Ethereum Design Rationale document.
Writing a BIP to add a new opcode for every possible transaction type is not the answer. And still I don't see how multisig or P2SH can use something else than BTC tokens (colored coins require external asset registries).
>You can find a list of Bitcoin script shortcomings in the Ethereum whitepaper and Ethereum Design Rationale document.
Ah, Ethereum, the ultimate crypto-currency vaporware. When did vbuterin announce it, over a year ago now?
There's a reason the Bitcoin script is simple; because it does everything we want Bitcoin to do (facilitate economic transactions) and it's simple enough that we can be sure it works properly.
If Ethereum actually releases, I'll take that into consideration for my judgement of more complex script schemes.
Yes, Bitcoin is "single-token". What's the downside of this? Why do I care if I need an external registry for non-standard tokens? For tokens to have any effect in the real world (e.g. economic value), you need some form of "external asset registry" no matter what. In most cases, this comes in the form of the seller passing judgement on the value of the token.
Bitcoin code, protocol and marshaling formats are a mess. Bitcoin blockchain and transaction data structures make too many hardcoded assumptions about underlying application - payments with a single token.
Bitcoin scripting language was designed for transaction validation only, which makes implementing a smart contracts with it a hack and requires external Oracles.
TL;DR: Bitcoin is a good PoC which gained a network effect.