<p>It may have been possible but it would be more expensive to do so. From Michael Folkson <a href="https://bitcoin.stackexchange.com/questions/116923/was-the-lifting-of-the-taproot-transaction-size-limit-accidental-why-would-or">Was the lifting of the Taproot transaction size limit &quot;accidental&quot;? Why would ordinals want to fill a block with OP_RETURNs?</a></p>
<blockquote>
<p>Ordinals don't use OP_RETURN, but push a script in the witness directly.
OP_FALSE OP_IF &lt;push protocol / media data with multiple OP_PUSH&gt; OP_ENDIF
Bitcoin isn't here used as an anchor layer, but as a storage layer as arbitrary data conserved in the witness of a tx.</p>
</blockquote>
<p>From Pinhead (in the same thread)</p>
<blockquote>
<p>Since there is no scriptCode directly included in the signature hash (only indirectly through a precomputable tapleaf hash), the CPU time spent on a signature check is no longer proportional to the size of the script being executed. The maximum script size of 10000 bytes does not apply. Their size is only implicitly bounded by the block weight limit.</p>
</blockquote>
<p>Not using OP_RETURN allows the script size to be implicitly limited by the block weight limit. Otherwise you would need to pay for each OP_RETURN on top of the size of the data itself and would be limited by OP_RETURN's maximum script size.</p>

CC BY-SA 4.0
2023-03-02T23:21:10.430Z
2023-03-02T23:21:10.430Z
Poseidon
<p>It seems like Pipe is using OP_RETURNs now:
<a href="https://github.com/BennyTheDev/pipe-specs" rel="nofollow noreferrer">https://github.com/BennyTheDev/pipe-specs</a></p>

CC BY-SA 4.0
2023-12-06T12:34:18.920Z
2023-12-06T12:34:18.920Z
edwinzhang
<p>With the recent rise of Inscriptions using the script in the taproot input, why wasn't this possible previously just using OP_RETURN? What is special about the taproot upgrade that made this feasible to do?</p>

CC BY-SA 4.0
2023-02-10T18:32:37.183Z
Related: https://bitcoin.stackexchange.com/q/116923/5406, https://bitcoin.stackexchange.com/q/116875/5406
Murch
<taproot><op-return><ordinals><nft>
Why weren’t Inscriptions possible before taproot by just using OP_RETURN to store the data?
Patoshi パトシ
# Why weren’t Inscriptions possible before taproot by just using OP_RETURN to store the data?

(Asked by: username_0 on 2023-02-10)

With the recent rise of Inscriptions using the script in the taproot input, why wasn't this possible previously just using OP\_RETURN? What is special about the taproot upgrade that made this feasible to do?

**Tags:** taproot, op-return, ordinals, nft

> **Comments:**
> **username_1**: Related: https://bitcoin.stackexchange.com/q/116923/5406, https://bitcoin.stackexchange.com/q/116875/5406  

---

## 2 answers

### Answer by username_2 on 2023-03-02. Score: 4

It may have been possible but it would be more expensive to do so. From Michael Folkson [Was the lifting of the Taproot transaction size limit "accidental"? Why would ordinals want to fill a block with OP\_RETURNs?](https://bitcoin.stackexchange.com/questions/116923/was-the-lifting-of-the-taproot-transaction-size-limit-accidental-why-would-or)

> Ordinals don't use OP\_RETURN, but push a script in the witness directly.
> OP\_FALSE OP\_IF <push protocol / media data with multiple OP\_PUSH> OP\_ENDIF
> Bitcoin isn't here used as an anchor layer, but as a storage layer as arbitrary data conserved in the witness of a tx.

From Pinhead (in the same thread)

> Since there is no scriptCode directly included in the signature hash (only indirectly through a precomputable tapleaf hash), the CPU time spent on a signature check is no longer proportional to the size of the script being executed. The maximum script size of 10000 bytes does not apply. Their size is only implicitly bounded by the block weight limit.

Not using OP\_RETURN allows the script size to be implicitly limited by the block weight limit. Otherwise you would need to pay for each OP\_RETURN on top of the size of the data itself and would be limited by OP\_RETURN's maximum script size.


---

### Answer by username_3 on 2023-12-06. Score: 0

It seems like Pipe is using OP\_RETURNs now:
<https://github.com/BennyTheDev/pipe-specs>


---

