<h1>Short version</h1>
<p>Yes.</p>
<h1>Long version</h1>
<h2>Bitcoin</h2>
<p>The bitcoin implementation of banned opcodes is in <a href="https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L349" rel="nofollow noreferrer">script.cpp</a>:</p>
<pre><code>        if (opcode == OP_CAT ||
            opcode == OP_SUBSTR ||
            opcode == OP_LEFT ||
            opcode == OP_RIGHT ||
            opcode == OP_INVERT ||
            opcode == OP_AND ||
            opcode == OP_OR ||
            opcode == OP_XOR ||
            opcode == OP_2MUL ||
            opcode == OP_2DIV ||
            opcode == OP_MUL ||
            opcode == OP_DIV ||
            opcode == OP_MOD ||
            opcode == OP_LSHIFT ||
            opcode == OP_RSHIFT)
            return false;
</code></pre>
<p>Note that this is not a complete list - OP_NOTEQUAL is also disabled. This code struck me oddly because it appears to create a fork with transactions that use OP_NOTEQUAL. (Perhaps it wasn't being used.)</p>
<pre><code>                // OP_NOTEQUAL is disabled because it would be too easy to say
                // something like n != 1 and have some wiseguy pass in 1 with extra
                // zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001)
                //if (opcode == OP_NOTEQUAL)
                //    fEqual = !fEqual;
</code></pre>
<p><a href="https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L781" rel="nofollow noreferrer">Source.</a></p>
<h2>Namecoin</h2>
<p><a href="https://github.com/vinced/namecoin/blob/master/src/script.cpp#L102" rel="nofollow noreferrer">Same.</a></p>
<h2>LiteCoin</h2>
<p><a href="https://github.com/litecoin-project/litecoin/blob/master/src/script.cpp#L271" rel="nofollow noreferrer">Same.</a></p>
<h2>SolidCoin</h2>
<p>You didn't ask about it, but it's also the <a href="https://github.com/solidcoin/solidcoin/blob/master/src/script.cpp#L101" rel="nofollow noreferrer">same.</a></p>

CC BY-SA 3.0
2013-02-06T01:08:17.997Z
2013-02-07T05:56:52.597Z
2020-06-16T11:10:03.350Z
Nick ODell
<p>The reference Bitcoin client disables several script commands (the programming within a transaction) due to possible implementation issues in the network.  I think it's possible that a forked client may actually enable such commands.</p>

<ul>
<li>Do any of the other networks (namecoin, litecoin, test or prod, etc) enable disabled script commands?</li>
</ul>

<p>I'd like to test and compare my implementation against others.</p>

<development><script><testnet><litecoin>
Are all the *coin networks consistent in which script actions are permitted and disabled?
makerofthings7
# Are all the *coin networks consistent in which script actions are permitted and disabled?

(Asked by: username_0 on 2012-12-20)

The reference Bitcoin client disables several script commands (the programming within a transaction) due to possible implementation issues in the network. I think it's possible that a forked client may actually enable such commands.

* Do any of the other networks (namecoin, litecoin, test or prod, etc) enable disabled script commands?

I'd like to test and compare my implementation against others.

**Tags:** development, script, testnet, litecoin


---

## 1 answers

### Answer by username_1 on 2013-02-06. Score: 2

# Short version

Yes.

# Long version

## Bitcoin

The bitcoin implementation of banned opcodes is in [script.cpp](https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L349):

```
        if (opcode == OP_CAT ||
            opcode == OP_SUBSTR ||
            opcode == OP_LEFT ||
            opcode == OP_RIGHT ||
            opcode == OP_INVERT ||
            opcode == OP_AND ||
            opcode == OP_OR ||
            opcode == OP_XOR ||
            opcode == OP_2MUL ||
            opcode == OP_2DIV ||
            opcode == OP_MUL ||
            opcode == OP_DIV ||
            opcode == OP_MOD ||
            opcode == OP_LSHIFT ||
            opcode == OP_RSHIFT)
            return false;

```

Note that this is not a complete list - OP\_NOTEQUAL is also disabled. This code struck me oddly because it appears to create a fork with transactions that use OP\_NOTEQUAL. (Perhaps it wasn't being used.)

```
                // OP_NOTEQUAL is disabled because it would be too easy to say
                // something like n != 1 and have some wiseguy pass in 1 with extra
                // zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001)
                //if (opcode == OP_NOTEQUAL)
                //    fEqual = !fEqual;

```

[Source.](https://github.com/bitcoin/bitcoin/blob/master/src/script.cpp#L781)

## Namecoin

[Same.](https://github.com/vinced/namecoin/blob/master/src/script.cpp#L102)

## LiteCoin

[Same.](https://github.com/litecoin-project/litecoin/blob/master/src/script.cpp#L271)

## SolidCoin

You didn't ask about it, but it's also the [same.](https://github.com/solidcoin/solidcoin/blob/master/src/script.cpp#L101)


---

