Sure, bitcoin script can in theory compute any computable problem (as can any turing machine). But it doesn't have native access to the data it needs, so pretty much any input you'd want to use needs to be put there by a trusted "oracle" (through a clever encoding into UTXO logic). For example, bitcoin script can't compare the amount of coins sent to two different bitcoin addresses, so you'd need to use oracles to do that [1]. In ethereum script it is trivial to do it on-chain (no oracles needed), since it was designed from the ground up for such use-cases (i.e. "smart contracts").
1. http://bitcoin.stackexchange.com/questions/36229/bitcoin-scr...
Or at least that's how the story is supposed to go. In theory, porting nice-to-have features to a larger audience results in more revenue and more overall societal benefit than starting a new scarcity race, which Ethereum has done, pitting investors against each other.
Ethereum script is said to only be quasi-turing complete because although it has loops, execution is metered by gas fees (functionally equivalent to bitcoin tx size).
As an average developer, I can launch a smart contract with 20 lines of code in Ethereum. I have no idea in earth how to even start writing those things on classic blockchains, let alone prove they work as I expect.
Meanwhile, everyone is waiting for the first smart contract that is actually useful for something.
Have you done this before? I tried to learn Ethereum (as an average developer) but it was over my head.
more in depth tutorials exist on ethereum.org
does the level of verbosity decrease as you get into more advanced applications?
Where's the github gist for this?
Or maybe you are trying to say that this could have been done on Bitcoin? Maybe, but whatever you try to shoehorn into Bitcoin's crippled contract pseudolang is going to be an order of magnitude simpler in a language that is Turing complete.
For example, today I participated in a demonstration of trustlessly, privately, and securely selling information (a 16x16 sudoku solution) via Bitcoin:
https://bitcoincore.org/en/2016/02/26/zero-knowledge-conting...
(But you probably won't read about it on HN; no profit in promoting it. </cynic>)
Would you mind expanding on your point a bit and if possible provide a link or 2 at a comprehensible level for someone who is mot a mathemetician.
I don't want to push back here as I have to reason by analogy not first principles here but:
* rust/go etc took a fairly long time to go into production.
* developing tooling and ecosystems and implementations around complex ideas is difficult.
* self enforcing contracts (my lack of knowledge may betray me) are just another name for "smart contracts"? For a contract to be made you need a transaction and a condition to strike. How is this achieved in this new model as an input/condition is unknowable and must bd provided in advance to do anything interesting, e.g i pay you 1 dollar in 5000 seconds vs. the election outcome. What tradeoffs were made erroneously on ethereums part.
All these are to say, honest question, how has the field evolved enough in 2 years that it is not only leagues better, but peoduction ready?
Could you explain at a (space doctors big idea) level how these concepts work? Super interested to check out something using/working on it
If you have a lot a techniques like zero-knowledge proofs, homomorphic computations, multi-party computation, indistinishability (sic) obfuscation (not quite practical yet), and various threshold schemes - you will quickly realize we could basically already do everything that Ethereum was designed for from the start. In fact - a lot of the new crypto techniques make it possible to scale DAC applications even better than what blockchains would allow since you can implement a lot of crypto-application protocols outside of the blockchain and keep only the hash-locked payments on the chain (which I honestly think is preferable.)
It just seems to me like Vitalik largely invented Ethereum because he didn't want to bother messing around with all the crypto-hacking that's required to implement self-enforcing, autonomous contracts (which is half the fun.) My biggest problem with this is people act like this isn't possible with Bitcoin when we had working smart contracts (and special coins for smart contracts) before Ethereum even existed. Interestingly enough - there's even ways to make the answer to any computable problem the keys to unlock a Bitcoin payment which means if you structure your crypto-protocol right you can essentially implement any self-paying, and self-running corporation as a never-ending complex chain of future problems.
(I would speculate that it's even possible to build a universal turning machine on top of any bitcoin-style blockchain that can compute any problem off-chain and allow these computations to be proven and self-enforcing but that is a topic for future research.)