This is true in the same sense that grep is extremely programmable, but comparing grep to C would be strange indeed. Ethereum is a Turing complete VM, allowing you to build extremely complex systems (we, for example, are trying to build a more transparent and distributed directory for a Tor-like service), while Bitcoin lets you sort of control transactions a bit with what amount to something closer to "rules" than "programs" (due to the explicit lack of looping control structure).
I'm not an expert on Bitcoin's scripting language, but here's a few main takeaways
* Ethereum allows shared state between transactions, Bitcoin doesn't. That means one application can state "The price of Eth is $10USD" and a totally unrelated application can reference that value. The result is that each application provides an API that all other applications can call.
* Both Bitcoin and Ethereum have a stack based scripting language. However Ethereum also has a higher level language that compiles to the stack based language. That means you can right reasonably readable code without OP codes. Functional program is so much mentally easier than writing a stack
* Ethereum (unlike Bitcoin) is Turing complete. It can have code that loops and recurses based on the state of the chain
Ethereum extends the concept, but Bitcoin transactions are programs running on the global blockchain (well, the op codes are executed by a single node, but the result is published and verified by the network, if I understand it right)
But just wanted to make the point that Bitcoin is a global computer as much as ethereum is, Solidity is just Turing complete while (Bitcoin’s) Script is intentionally limited to a few instructions.
As I'm sure you know, Bitcoin's scripting language, as originally designed, is deliberately not Turing complete[1]. That's one of Ethereum's key points of difference with Bitcoin.
It's a very difficult challenge to keep control of resource use in any such decentralized system, and even more of a challenge when scripts can loop. It's going to be interesting to see if Ethereum can eventually work without frequent human intervention to modify the code. Even Bitcoin didn't quite get to that state yet.
See the link below. It includes a stack based scripting language (essentially a subset of Forth) for processing transactions so you can do some customization in how transactions unfold. As I understand it (and I don't know much about Ethereum) a big difference is that Eth has a Turing complete scripting language that can run code as part of transaction, while bitcoin only has a subset that doesn't include e.g. looping.
It's pretty simple: you can use an actual programming language with Ethereum.
If you're not familiar with Bitcoin, "Bitcoin script" is the pseudolang that must be used to program Bitcoin. One of its most prominent features is that it has no loops. Most Bitcoin applications involve a ton of jumping through hoops to even make them work at all. The equivalent programs on Ethereum are short and look like C.
If Bitcoin can add real programmability, Ethereum is done for. But so far, the Bitcoin community has not even been able to change a single constant (I'm referring to the block size debate).
Ethereum is a turing machine that runs code, programming languages are more high level. Creating an ADA-like language is trivial compared to making a scalable blockchain that supports computation.
Ethereum itself is more bullet proof, as there are multiple implementations and the description of the protocol better defined and has proofs inside.
They're both like databases replicated onto thousands of nodes. All the fancy crypto and mining is just a way of making the replication secure, so every node has the exact same data even though it's on a public network and nobody knows who's running the nodes.
On Bitcoin, there's one table with two columns: username and balance. You have read access to this table and you can call a stored procedure that transfers some of your balance to another user.
On Ethereum, you have developer rights. It has the same username/balance table as Bitcoin, but you can also create your own tables and write your own stored procedures, which can be called by other users.
Of course this is a drastic simplification of both systems, and misleading in some ways, but it's the best quick explanation I've come up with.
I'm getting obsessed with Ethereum because it's amazing to me that, for example, I can write two pages of backend code plus an html/javascript front end, and I've got a crowdfunding system which I can deploy for free, run indefinitely with zero downtime, and have it moving money around without getting anyone's permission at all. (Or it could be an auction, casino, currency or derivatives exchange, vault, etc.)
The Turing-completeness of the language is the whole point of Ethereum. That's what differentiates it from other (Bitcoin-like) crypto currencies. It allows anyone to build arbitrary business logic--an exchange, a venture capital firm, a game--that is run directly by the participants in the blockchain.
It is true that Ethereum has a more powerful scripting language. The real question, however, is if that feature has practical value.
I think the jury is still out on that question but I personally lean towards no. If and when there are profitable applications of this technology, ones that wouldn't have been possible without ethereum scripts then I will be glad to change my mind.
As a developer, I checked Ethereum's code base. To be honest, it is not that complex in the tech itself.
I know it is not fair to just count code lines to compare the complexity. But the Ethereum python code base has only 30K-40K lines code including test while Linux kernel has 15M lines.
Ethereum is very simple in essence: it's a Turing-complete version of Bitcoin.
The way you transfer a bitcoin from one person to another is by creating a Bitcoin transaction that contains an input script that fulfills an in-blockchain output script with which a number of bitcoins are associated. The output script may say "provide a public key that hashes to <some_hash> and a signature, over a transaction (which sends the bitcoins to a new output script) that redeems this output, that verifies against this public key".
Bitcoins script language -- conditions be fulfilled to transfer tokens associated with one output script to a new output script -- is not Turing-complete, which means it's limited in how complex a condition can be set up for redemption. Ethereum's script language is Turing complete, allowing arbitrarily complex conditions for fulfilling an output script (which allows you to transfer coins/tokens from that output script to a new one).
reply