<p>As they say, Ethereum is Turing complete, Bitcoin script is intentionally not Turing complete. </p>

<p>Ethereum has a <a href="http://ethdocs.org/en/latest/introduction/what-is-ethereum.html#ethereum-virtual-machine" rel="nofollow noreferrer">virtual machine</a> with a set of opcodes. Bitcoin script is defined by different opcodes, defined in <a href="https://github.com/bitcoin/bitcoin/blob/master/src/script/script.h#L48" rel="nofollow noreferrer"><code>src/script/script.h</code></a>. There are good descriptions of the opcodes at <a href="https://en.bitcoin.it/wiki/Script" rel="nofollow noreferrer">https://en.bitcoin.it/wiki/Script</a>.</p>

<p><strong>Differences include:</strong>  </p>

<ul>
<li>Ethereum charges for each operation: <a href="https://github.com/djrtwo/evm-opcode-gas-costs" rel="nofollow noreferrer">https://github.com/djrtwo/evm-opcode-gas-costs</a> to account for differences in computation difficulty.  </li>
<li>Bitcoin scripts are limited to a certain complexity (e.g. num of sigops) to prevent DoS attacks.</li>
</ul>

<p><strong>Similarities include:</strong>  </p>

<ul>
<li>Contracts live on the blockchain. In an Ethereum-specific binary format (EVM bytecode), and in Bitcoin as Bitcoin Script.</li>
</ul>

<blockquote>
  <p>Does Bitcoin script run on-chain (similar to Ethereum smart contracts)
  or they run off-chain?</p>
</blockquote>

<p>Yes. Script can be stored in 3 places in a transaction: <code>witness</code>, <code>scriptSig</code> and <code>scriptPubkey</code>. These transactions are stored in blocks on the blockchain, and are run by nodes validating them.</p>

CC BY-SA 4.0
2018-08-29T15:04:50.813Z
2018-08-29T15:04:50.813Z
JBaczuk
<p>Can we compare <code>Bitcoin script</code> and <code>Ethereum smart contract</code> ? </p>

<p>And if yes, </p>

<p>What are <strong>differences/similarities</strong> of Bitcoin script and Ethereum smart contract in sense of functionality, architecture and how to interact with blockchain? </p>

<p>Does Bitcoin script run <strong>on-chain</strong> (similar to Ethereum smart contracts) or they run <strong>off-chain</strong>? </p>

<script><ethereum><terminology>
Differences/similarities of "Bitcoin script" and "Ethereum smart contract"?
Questioner
# Differences/similarities of "Bitcoin script" and "Ethereum smart contract"?

(Asked by: username_0 on 2018-08-29)

Can we compare `Bitcoin script` and `Ethereum smart contract` ?

And if yes,

What are **differences/similarities** of Bitcoin script and Ethereum smart contract in sense of functionality, architecture and how to interact with blockchain?

Does Bitcoin script run **on-chain** (similar to Ethereum smart contracts) or they run **off-chain**?

**Tags:** script, ethereum, terminology


---

## 1 answers

### Answer by username_1 on 2018-08-29. Score: 1

As they say, Ethereum is Turing complete, Bitcoin script is intentionally not Turing complete.

Ethereum has a [virtual machine](http://ethdocs.org/en/latest/introduction/what-is-ethereum.html#ethereum-virtual-machine) with a set of opcodes. Bitcoin script is defined by different opcodes, defined in [`src/script/script.h`](https://github.com/bitcoin/bitcoin/blob/master/src/script/script.h#L48). There are good descriptions of the opcodes at <https://en.bitcoin.it/wiki/Script>.

**Differences include:**

* Ethereum charges for each operation: <https://github.com/djrtwo/evm-opcode-gas-costs> to account for differences in computation difficulty.
* Bitcoin scripts are limited to a certain complexity (e.g. num of sigops) to prevent DoS attacks.

**Similarities include:**

* Contracts live on the blockchain. In an Ethereum-specific binary format (EVM bytecode), and in Bitcoin as Bitcoin Script.

> Does Bitcoin script run on-chain (similar to Ethereum smart contracts)
> or they run off-chain?

Yes. Script can be stored in 3 places in a transaction: `witness`, `scriptSig` and `scriptPubkey`. These transactions are stored in blocks on the blockchain, and are run by nodes validating them.


---

