<p>Before the Taproot soft fork the opcode 186 (0xba) was an undefined opcode. Undefined opcodes abort verification and consider the transaction to be invalid. There are also <a href="https://bitcoin.stackexchange.com/questions/113994/was-the-addition-of-op-nop-codes-in-bitcoin-0-3-6-a-hard-or-soft-fork">OP_NOP</a> opcodes that are designed to be ignored (do nothing) and do not invalidate the transaction. After the Taproot soft fork the opcode 186 (0xba) was defined as OP_CHECKSIGADD. There was an additional change in the Taproot soft fork where opcodes that remained undefined (not the case for the opcode 186) were made OP_SUCCESS. From <a href="https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#specification" rel="nofollow noreferrer">BIP 342</a>:</p>
<blockquote>
<p>If any opcode numbered 80, 98, 126-129, 131-134, 137-138, 141-142, 149-153, 187-254 is encountered, validation succeeds (none of the rules below apply). This is true even if later bytes in the tapscript would fail to decode otherwise.</p>
</blockquote>

CC BY-SA 4.0
2024-04-26T09:05:52.700Z
Thanks, I think there are also some [specified OP_NOPs](https://en.bitcoin.it/wiki/Script#Reserved_words) that do [not invalidate the transaction](https://github.com/bitcoin/bitcoin/blob/7973a670915632b75a6aa16f24f98b936865c48f/src/script/interpreter.cpp#L594).
Lee
CC BY-SA 4.0
2024-04-26T09:15:23.993Z
@Lee: Indeed, I'm getting into a muddle here (been a while since I looked at this). There used to be undefined opcodes and OP_NOPs and after Taproot there are OP_SUCCESSes and OP_NOPs (I think) :)
Michael Folkson
CC BY-SA 4.0
2024-04-26T08:32:39.180Z
2024-04-26T09:19:51.213Z
2024-04-26T09:19:51.213Z
Michael Folkson
<p>From <a href="https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#script-execution" rel="nofollow noreferrer">BIP0342</a>:</p>
<blockquote>
<p>The opcode 186 (0xba) is named as OP_CHECKSIGADD.</p>
</blockquote>
<p>What did <code>0xba</code> do prior to this?</p>

<multi-signature><taproot><history><opcodes>
What did the opcode 0xba do prior to creation of OP_CHECKSIGADD?
Lee
# What did the opcode 0xba do prior to creation of OP_CHECKSIGADD?

(Asked by: username_0 on 2024-04-26)

From [BIP0342](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#script-execution):

> The opcode 186 (0xba) is named as OP\_CHECKSIGADD.

What did `0xba` do prior to this?

**Tags:** multi-signature, taproot, history, opcodes


---

## 1 answers

### Answer by username_1 on 2024-04-26. Score: 1 | Accepted answer

Before the Taproot soft fork the opcode 186 (0xba) was an undefined opcode. Undefined opcodes abort verification and consider the transaction to be invalid. There are also [OP\_NOP](https://bitcoin.stackexchange.com/questions/113994/was-the-addition-of-op-nop-codes-in-bitcoin-0-3-6-a-hard-or-soft-fork) opcodes that are designed to be ignored (do nothing) and do not invalidate the transaction. After the Taproot soft fork the opcode 186 (0xba) was defined as OP\_CHECKSIGADD. There was an additional change in the Taproot soft fork where opcodes that remained undefined (not the case for the opcode 186) were made OP\_SUCCESS. From [BIP 342](https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki#specification):

> If any opcode numbered 80, 98, 126-129, 131-134, 137-138, 141-142, 149-153, 187-254 is encountered, validation succeeds (none of the rules below apply). This is true even if later bytes in the tapscript would fail to decode otherwise.

> **Comments:**
> **username_0**: Thanks, I think there are also some [specified OP_NOPs](https://en.bitcoin.it/wiki/Script#Reserved_words) that do [not invalidate the transaction](https://github.com/bitcoin/bitcoin/blob/7973a670915632b75a6aa16f24f98b936865c48f/src/script/interpreter.cpp#L594).  
> **username_1**: @username_0: Indeed, I'm getting into a muddle here (been a while since I looked at this). There used to be undefined opcodes and OP_NOPs and after Taproot there are OP_SUCCESSes and OP_NOPs (I think) :)  

---

