What is meant by "non-standard"?

In contexts outside of "mempool policy", and broader than only transactions, what do the terms non-standard and standard mean (e.g. with reference to blocks, headers and well as transactions)? How are they distinct from the term invalid ? Are there any other terms or measures that might be used to refer to the "standardness" or validity of blocks, headers or transactions?

asked May 2 at 10:54 958 7 7 silver badges 19 19 bronze badges Does this answer your question? What is "(mempool) policy"? Commented May 2 at 12:02

@AntoinePoinsot possibly - you've a good answer there; does it still apply for contexts outside the mempool and more broadly than only transactions? (I have updated for this).

Commented May 2 at 12:18 @AntoinePoinsot Does "standardness" only apply to transactions? Commented May 2 at 12:26 Commented May 2 at 12:35 Yes, we only talk about standardness in the context of a transaction. Commented May 2 at 12:46

1 Answer 1

The terms standard and non-standard are specific to transactions. They have no application outside of that.

The terms originate from the IsStandard() function in the original Bitcoin software. Originally, the following five transaction types were considered standard:

P2PK, P2PKH, P2SH, P2MS, and OP_RETURN 

The following were later added:

P2WKH, P2WSH, P2TR 

Anything other than these is non-standard.

Valid transactions are those that pass validity checks (e.g. matching UTXO(s) exist, script operates correctly).

It is possible for a transaction to be non-standard yet valid.

There is discussion of validity vs standardness here.

The term valid or validity may also be applied more broadly; to a block or block header for example.