<p>It's not; that option is unreachable.</p>
<p>In <code>SigVersion::TAPROOT</code> mode, there is no script to speak of, so the script interpreter is never invoked with it. See line 417 where this is asserted.</p>
<p>The line you link to only makes sure that calling <code>OP_CHECKSIGADD</code> causes failures in the two other <code>SigVersion</code> modes that <em>are</em> reachable.</p>

CC BY-SA 4.0
2022-06-16T12:50:42.883Z
2022-06-16T12:50:42.883Z
Pieter Wuille
<p>My understanding is this sig version is only for taproot keyspends, why is it allowed to be used in <code>OP_CHECKSIGADD</code>?</p>
<p><a href="https://github.com/bitcoin/bitcoin/blob/e826b22da252e0599c61d21c98ff89f366b3120f/src/script/interpreter.h#L191" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/blob/e826b22da252e0599c61d21c98ff89f366b3120f/src/script/interpreter.h#L191</a></p>
<p><a href="https://github.com/bitcoin/bitcoin/blob/8035b5c80df51130af7cd398da84186ee42dd6e3/src/script/interpreter.cpp#L1086" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/blob/8035b5c80df51130af7cd398da84186ee42dd6e3/src/script/interpreter.cpp#L1086</a></p>

<script><multi-signature><taproot><opcodes>
Why does `OP_CHECKSIGADD` allow TAPROOT keyspends?
Chris Stewart
# Why does `OP_CHECKSIGADD` allow TAPROOT keyspends?

(Asked by: username_0 on 2022-06-16)

My understanding is this sig version is only for taproot keyspends, why is it allowed to be used in `OP_CHECKSIGADD`?

<https://github.com/bitcoin/bitcoin/blob/e826b22da252e0599c61d21c98ff89f366b3120f/src/script/interpreter.h#L191>

<https://github.com/bitcoin/bitcoin/blob/8035b5c80df51130af7cd398da84186ee42dd6e3/src/script/interpreter.cpp#L1086>

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


---

## 1 answers

### Answer by username_1 on 2022-06-16. Score: 4 | Accepted answer

It's not; that option is unreachable.

In `SigVersion::TAPROOT` mode, there is no script to speak of, so the script interpreter is never invoked with it. See line 417 where this is asserted.

The line you link to only makes sure that calling `OP_CHECKSIGADD` causes failures in the two other `SigVersion` modes that *are* reachable.


---

