3

When a node receives a non-standard transaction (for example, it has more than one OP_return output or has some of the non-standard outputs), it will not be relayed further through the network, however, if it is valid inside a block, it will be accepted.

What I'm curious about is what happens to a block that contains non-standard transactions? If it is valid, of course it will be accepted, but is such a block relayed further through the network or not (as in the case of transactions)?

For example, a block contains a transaction with 2 OP_return outputs, or something in the script validation is not standard, but everything is valid. This block will be accepted by the node, but will the node relay further this block to other peers or not (as in the case of non-standard transaction)?

2 Answers 2

5

The block will be relayed if it is valid. Standardness rules have no play in a valid mined block.

If it wasn't relayed then the chain would break and that block would probably be reorged out for no reason.

1
  • 2
    So the term "standardness" only exists in the context of transactions? And in the context of blocks, if the block is valid = relay, otherwise not.
    – dassd
    Sep 16, 2023 at 23:29
2

Mempool policy and the standardness rules only apply to unconfirmed transactions. There are no propagation guarantees for unconfirmed transactions. Unconfirmed transactions that conform to a node’s mempool policy are forwarded on best-effort basis and eventually reach most nodes that are online at the time the transaction is propagating.

Once any transactions are included in a block, mempool policy no longer applies. Blocks are only judged on basis of the validity rules that define the network consensus. We have propagation guarantees for blocks: every full node must learn about the current best chaintip in order to synchronize with the rest of the network. Therefore, any valid transactions included in a block are guaranteed to be propagated along with the rest of the block.

We treat these two different types of data so differently to protect our own nodes’ resources and network resources. Unconfirmed transactions are cheap to produce and might not be of permanent relevance. In contrast, blocks are expensive to produce and almost always of permanent relevance.

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.