<p>The <code>isStandard()</code> check has been relaxed as of 2014. You can now include a wide variety of scripts in transactions.</p>

<p>Read more here:
<a href="https://bitcoin.stackexchange.com/questions/36224/what-is-meant-by-relaxed-standards-for-p2sh-redeem-scripts-in-bitcoin-core-0-1">What is meant by &quot;relaxed standards&quot; for P2SH redeem scripts in Bitcoin Core 0.10.0?</a></p>

CC BY-SA 3.0
2016-09-02T02:57:41.703Z
2016-09-02T02:57:41.703Z
2017-04-13T12:47:32.940Z
Michael Matthew Toomim
<p>For the Bitcoin Protocol to serve its purpose, every Client needs to process Transactions in the same matter. For a new kind of Transaction to be introduced and be spendable, it either needs to conform to the current rules (for example, be possible to execute using the <a href="https://en.bitcoin.it/wiki/Script" rel="nofollow">Script</a>), or be accepted by every Client (ideally). If one was to implement a new Transaction kind without people conforming to it, in the best scenario the Transaction would become unspendable, in the worst - it would not be processed by the Clients.</p>

<p>To introduce an option of creating "any kinds of Transactions", one would need to create some new version of the Script or something similar. Moreover, this Script would have to be still resistant to malicious attacks (for example, no loops or similar ways to make a lot of Clients lose a lot of computational resources checking the Transaction validity).</p>

<p>All in all, it might be possible to generalise creating some broad spectrum of Transactions with some changes to the Protocol, but those changes would have to be accepted by everyone. It is highly unlikely one will ever be able to create a new kind of Transaction at a whim.</p>

CC BY-SA 3.0
2017-10-08T21:25:08.570Z
ThePiachu: What happens if I'm a miner and I modify the software I run to accept non-standard transactions, and then I successfully mine a block that includes transactions with my non-standard script?
Loourr
CC BY-SA 3.0
2017-10-09T02:56:00.520Z
@Loourr - you will create a hardfork that will generally be rejected by everyone else that doesn't accept those non-standard transactions.
ThePiachu
CC BY-SA 3.0
2012-12-10T17:29:41.633Z
Thanks for your answer. I was, however, more interested not in expansion of existing protocal, but in removing restrictions, which allow default client to propagate only transactions with script conforming to certain template, rather than any techically valid transactions. For example, adding `OP_DUP OP_DROP` to the beginning of the script does not invalidate the transaction, but currently most clients won't broadcast it, and most pools won't add it to mined block.
aland
CC BY-SA 3.0
2012-12-10T14:10:24.530Z
2012-12-10T14:10:24.530Z
ThePiachu
<p>The current development direction (January 2013) is to tighten up the IsStandard() checks even more. For example, we would like all signatures to conform to a very strict, canonical encoding to make life more difficult for potential attackers. </p>

<p>Allowing more opcodes or opcode patterns (or all opcodes/patterns) to be considered IsStandard() is certainly possible; before doing that I'd like to see a thorough analysis of the possibility for mischief using the current set of opcodes  and a lot of prototyping on the test network (where the IsStandard() check already allows all enabled opcodes).</p>

CC BY-SA 3.0
2014-11-21T17:48:27.147Z
What are the risks associated with allowing the propagation non-standard transaction types?
morsecoder
CC BY-SA 3.0
2013-01-03T17:18:38.260Z
2013-01-03T17:18:38.260Z
gavinandresen
<p>To the best of my knowledge, currently <a href="https://bitcoin.stackexchange.com/a/4488/2343">"Satoshi" client relays and most pools accept only standard (transfer or generation) transactions</a>. Besides, community is working on <a href="https://en.bitcoin.it/wiki/BIP_0011" rel="noreferrer">M-of-N transaction type</a>. Adding non-standard transaction to the blockchain is nowadays pretty problematic.</p>

<p>While currently enabling arbitrary scripts in transactions could be disastrous due to possible bugs in code (or in the script system itself), I wonder if it is planned to allow arbitrary transactions somewhere in the future, or will most of the network always be restricted to some set of "good" transaction templates?</p>

CC BY-SA 3.0
2012-12-08T14:16:28.383Z
possibly answered here: http://bitcoin.stackexchange.com/questions/4486/transaction-with-slightly-changed-script-is-never-relayed
kirian
CC BY-SA 3.0
2012-12-08T14:24:00.017Z
@kirian Could you please post exact quotation? I can't find anything about the plans of handling non-standard transactions in the future, or whether "`IsStandard`" check in "default" client is considered temporary or permanent.
aland
CC BY-SA 3.0
2012-12-08T15:00:20.640Z
Sorry you are right. I don't know what the plans are for non-standard transactions in the Satoshi client.
kirian
<script><non-standard-transaction>
Will general non-standard transactions ever be allowed?
aland
# Will general non-standard transactions ever be allowed?

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

To the best of my knowledge, currently ["Satoshi" client relays and most pools accept only standard (transfer or generation) transactions](https://bitcoin.stackexchange.com/a/4488/2343). Besides, community is working on [M-of-N transaction type](https://en.bitcoin.it/wiki/BIP_0011). Adding non-standard transaction to the blockchain is nowadays pretty problematic.

While currently enabling arbitrary scripts in transactions could be disastrous due to possible bugs in code (or in the script system itself), I wonder if it is planned to allow arbitrary transactions somewhere in the future, or will most of the network always be restricted to some set of "good" transaction templates?

**Tags:** script, non-standard-transaction

> **Comments:**
> **username_1**: possibly answered here: http://bitcoin.stackexchange.com/questions/4486/transaction-with-slightly-changed-script-is-never-relayed  
> **username_0**: @username_1 Could you please post exact quotation? I can't find anything about the plans of handling non-standard transactions in the future, or whether "`IsStandard`" check in "default" client is considered temporary or permanent.  
> **username_1**: Sorry you are right. I don't know what the plans are for non-standard transactions in the Satoshi client.  

---

## 3 answers

### Answer by username_5 on 2013-01-03. Score: 9 | Accepted answer

The current development direction (January 2013) is to tighten up the IsStandard() checks even more. For example, we would like all signatures to conform to a very strict, canonical encoding to make life more difficult for potential attackers.

Allowing more opcodes or opcode patterns (or all opcodes/patterns) to be considered IsStandard() is certainly possible; before doing that I'd like to see a thorough analysis of the possibility for mischief using the current set of opcodes and a lot of prototyping on the test network (where the IsStandard() check already allows all enabled opcodes).

> **Comments:**
> **username_6**: What are the risks associated with allowing the propagation non-standard transaction types?  

---

### Answer by username_2 on 2016-09-02. Score: 5

The `isStandard()` check has been relaxed as of 2014. You can now include a wide variety of scripts in transactions.

Read more here:
[What is meant by "relaxed standards" for P2SH redeem scripts in Bitcoin Core 0.10.0?](https://bitcoin.stackexchange.com/questions/36224/what-is-meant-by-relaxed-standards-for-p2sh-redeem-scripts-in-bitcoin-core-0-1)


---

### Answer by username_3 on 2012-12-10. Score: 1

For the Bitcoin Protocol to serve its purpose, every Client needs to process Transactions in the same matter. For a new kind of Transaction to be introduced and be spendable, it either needs to conform to the current rules (for example, be possible to execute using the [Script](https://en.bitcoin.it/wiki/Script)), or be accepted by every Client (ideally). If one was to implement a new Transaction kind without people conforming to it, in the best scenario the Transaction would become unspendable, in the worst - it would not be processed by the Clients.

To introduce an option of creating "any kinds of Transactions", one would need to create some new version of the Script or something similar. Moreover, this Script would have to be still resistant to malicious attacks (for example, no loops or similar ways to make a lot of Clients lose a lot of computational resources checking the Transaction validity).

All in all, it might be possible to generalise creating some broad spectrum of Transactions with some changes to the Protocol, but those changes would have to be accepted by everyone. It is highly unlikely one will ever be able to create a new kind of Transaction at a whim.

> **Comments:**
> **username_0**: Thanks for your answer. I was, however, more interested not in expansion of existing protocal, but in removing restrictions, which allow default client to propagate only transactions with script conforming to certain template, rather than any techically valid transactions. For example, adding `OP_DUP OP_DROP` to the beginning of the script does not invalidate the transaction, but currently most clients won't broadcast it, and most pools won't add it to mined block.  
> **username_4**: username_3: What happens if I'm a miner and I modify the software I run to accept non-standard transactions, and then I successfully mine a block that includes transactions with my non-standard script?  
> **username_3**: @username_4 - you will create a hardfork that will generally be rejected by everyone else that doesn't accept those non-standard transactions.  

---

