<blockquote>
  <p>Is Ethereum essentially Bitcoin with a Turing-complete scripting language and, if I understand correctly, where the script to be executed (not its hash) is placed in the Ethereum blockchain?</p>
</blockquote>

<p>That's a bit of a simplification, (Ethereum has other improvements like GHOST) but for our purposes (discussing how a Turing complete scripting language could be implemented) it's essentially accurate.</p>

<blockquote>
  <p>If so, why doesn't Ethereum just put hashes of its scripts in the Bitcoin blockchain, send the scripts to be executed through another secure means such as via a P2P network (which would greatly reduce blockchain bloat), and avoid being an altcoin altogether?</p>
</blockquote>

<p>One of the important features of Ethereum is that you can condition spending funds on the output of a script. For example, you could write a lottery script that accepts money from a bunch of different people, and randomly sends all of the money to the winner. Imagine that we change this system so that only the hash of the script is included in the blockchain:</p>

<ul>
<li><p>If it's <em>not</em> a consensus rule, then other nodes will accept a transaction that doesn't satisfy the attached script. In other words, if nodes can't see the entire script, how can a node know whether someone claiming the lottery winnings is actually authorized to do that?</p></li>
<li><p>If it <em>is</em> a consensus rule, that introduces a new set of problems. First, in order to tell if a block is valid, you need to download the scripts from the P2P network, and check that all of the scripts are valid. That increases the amount of time it takes to verify blocks, and therefore increases the amount of orphan blocks. </p>

<p>The second problem that this introduces is that full nodes synchronizing for the first time need these scripts, or they won't be able to check that the blocks are valid. Therefore, the scripts need to be stored indefinitely, in case new nodes join the network.</p>

<p>This doesn't really solve the blockchain bloat - it just moves the problem around.</p></li>
</ul>

<p>There's one more solution that <em>does</em> use the Bitcoin blockchain, though. You could follow Counterparty's example, and create a system where you send a Bitcoin transaction with additional metadata to identify it as a colored coin. You don't change transaction validity rules on the main network; rather, you say that if the transaction doesn't follow certain rules, then it is not a valid TuringCoin transaction for the purpose of establishing ownership of TuringCoins. (Other TuringCoin transactions within the same block would still be valid, though.)</p>

<p>That's not an altcoin in the traditional sense (you're using Bitcoin's blockchain, and you must pay Bitcoin transaction fees) but it is an altcoin in the sense that you're creating your own token that isn't fungible with Bitcoin.</p>

<blockquote>
  <p>If not, is the gas limit the real distinguishing feature of Ethereum compared to Bitcoin?</p>
</blockquote>

<p>The gas limit in Ethereum is present for essentially the same reason that people have proposed making transactions in Bitcoin larger than 100KB invalid: otherwise, it becomes possible to create a block that takes a really long time to validate.</p>

CC BY-SA 3.0
2016-01-15T03:49:54.977Z
What is GHOST, exactly?
Geremia
CC BY-SA 3.0
2016-01-15T04:51:49.173Z
@Geremia Essentially, even if one of your blocks is orphaned, it can be included as an 'uncle block' in a later block. It reduces the cost of orphaned blocks.
Nick ODell
CC BY-SA 3.0
2016-01-14T05:29:16.063Z
2016-01-14T05:35:05.043Z
2016-01-14T05:35:05.043Z
Nick ODell
<p>Is Ethereum essentially Bitcoin with a Turing-complete scripting language and, if I understand correctly, where the script to be executed (not its hash) is placed in the Ethereum blockchain?</p>

<ul>
<li><p>If so, why doesn't Ethereum just put hashes of its scripts in the Bitcoin blockchain, send the scripts to be executed through another secure means such as via a P2P network (which would greatly reduce blockchain bloat), and avoid being an altcoin altogether?</p></li>
<li><p>If not, is the gas limit the real distinguishing feature of Ethereum compared to Bitcoin? Or is gas really Ethereum's equivalent of Bitcoin's transaction fees? Also, would Ethereum's adoption of proof-of-stake further differentiate Ethereum from Bitcon?</p></li>
</ul>

<p><sup>cf. <a href="https://github.com/ethereum/wiki/wiki/White-Paper" rel="noreferrer">Ethereum's white paper</a></sup>
<br><sub>(cf. <a href="https://bitcointalk.org/index.php?topic=1326759" rel="noreferrer">the related BitcoinTalk.org thread</a>)</sub></p>

CC BY-SA 3.0
2016-02-05T17:51:07.770Z
Related: [What is the gas limit for?](http://bitcoin.stackexchange.com/questions/39132/what-is-gas-limit-in-ethereum)
Nick ODell
<transaction-fees><script><ethereum><proof-of-stake><turing-completeness>
Is Ethereum essentially Bitcoin with Turing-complete Script?
Geremia
# Is Ethereum essentially Bitcoin with Turing-complete Script?

(Asked by: username_0 on 2016-01-13)

Is Ethereum essentially Bitcoin with a Turing-complete scripting language and, if I understand correctly, where the script to be executed (not its hash) is placed in the Ethereum blockchain?

* If so, why doesn't Ethereum just put hashes of its scripts in the Bitcoin blockchain, send the scripts to be executed through another secure means such as via a P2P network (which would greatly reduce blockchain bloat), and avoid being an altcoin altogether?
* If not, is the gas limit the real distinguishing feature of Ethereum compared to Bitcoin? Or is gas really Ethereum's equivalent of Bitcoin's transaction fees? Also, would Ethereum's adoption of proof-of-stake further differentiate Ethereum from Bitcon?

cf. [Ethereum's white paper](https://github.com/ethereum/wiki/wiki/White-Paper)
  
(cf. [the related BitcoinTalk.org thread](https://bitcointalk.org/index.php?topic=1326759))

**Tags:** transaction-fees, script, ethereum, proof-of-stake, turing-completeness

> **Comments:**
> **username_1**: Related: [What is the gas limit for?](http://bitcoin.stackexchange.com/questions/39132/what-is-gas-limit-in-ethereum)  

---

## 1 answers

### Answer by username_1 on 2016-01-14. Score: 4 | Accepted answer

> Is Ethereum essentially Bitcoin with a Turing-complete scripting language and, if I understand correctly, where the script to be executed (not its hash) is placed in the Ethereum blockchain?

That's a bit of a simplification, (Ethereum has other improvements like GHOST) but for our purposes (discussing how a Turing complete scripting language could be implemented) it's essentially accurate.

> If so, why doesn't Ethereum just put hashes of its scripts in the Bitcoin blockchain, send the scripts to be executed through another secure means such as via a P2P network (which would greatly reduce blockchain bloat), and avoid being an altcoin altogether?

One of the important features of Ethereum is that you can condition spending funds on the output of a script. For example, you could write a lottery script that accepts money from a bunch of different people, and randomly sends all of the money to the winner. Imagine that we change this system so that only the hash of the script is included in the blockchain:

* If it's *not* a consensus rule, then other nodes will accept a transaction that doesn't satisfy the attached script. In other words, if nodes can't see the entire script, how can a node know whether someone claiming the lottery winnings is actually authorized to do that?
* If it *is* a consensus rule, that introduces a new set of problems. First, in order to tell if a block is valid, you need to download the scripts from the P2P network, and check that all of the scripts are valid. That increases the amount of time it takes to verify blocks, and therefore increases the amount of orphan blocks.

  The second problem that this introduces is that full nodes synchronizing for the first time need these scripts, or they won't be able to check that the blocks are valid. Therefore, the scripts need to be stored indefinitely, in case new nodes join the network.

  This doesn't really solve the blockchain bloat - it just moves the problem around.

There's one more solution that *does* use the Bitcoin blockchain, though. You could follow Counterparty's example, and create a system where you send a Bitcoin transaction with additional metadata to identify it as a colored coin. You don't change transaction validity rules on the main network; rather, you say that if the transaction doesn't follow certain rules, then it is not a valid TuringCoin transaction for the purpose of establishing ownership of TuringCoins. (Other TuringCoin transactions within the same block would still be valid, though.)

That's not an altcoin in the traditional sense (you're using Bitcoin's blockchain, and you must pay Bitcoin transaction fees) but it is an altcoin in the sense that you're creating your own token that isn't fungible with Bitcoin.

> If not, is the gas limit the real distinguishing feature of Ethereum compared to Bitcoin?

The gas limit in Ethereum is present for essentially the same reason that people have proposed making transactions in Bitcoin larger than 100KB invalid: otherwise, it becomes possible to create a block that takes a really long time to validate.

> **Comments:**
> **username_0**: What is GHOST, exactly?  
> **username_1**: @username_0 Essentially, even if one of your blocks is orphaned, it can be included as an 'uncle block' in a later block. It reduces the cost of orphaned blocks.  

---

