20

To the best of my knowledge, currently "Satoshi" client relays and most pools accept only standard (transfer or generation) transactions. Besides, community is working on M-of-N transaction type. 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?

3
  • possibly answered here: bitcoin.stackexchange.com/questions/4486/…
    – kirian
    Commented Dec 8, 2012 at 14:16
  • 1
    @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
    Commented Dec 8, 2012 at 14:24
  • Sorry you are right. I don't know what the plans are for non-standard transactions in the Satoshi client.
    – kirian
    Commented Dec 8, 2012 at 15:00

3 Answers 3

9

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).

1
  • 1
    What are the risks associated with allowing the propagation non-standard transaction types?
    – morsecoder
    Commented Nov 21, 2014 at 17:48
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?

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), 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.

3
  • 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
    Commented Dec 10, 2012 at 17:29
  • 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
    Commented Oct 8, 2017 at 21:25
  • 1
    @Loourr - you will create a hardfork that will generally be rejected by everyone else that doesn't accept those non-standard transactions.
    – ThePiachu
    Commented Oct 9, 2017 at 2:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.