Files
specification/protocol/blockchain/transaction-validation/network-level-validation-rules.md
T

22 lines
1.6 KiB
Markdown
Raw Normal View History

2019-12-30 12:06:54 -05:00
# Network-Level Validation Rules
2019-12-30 17:26:16 -05:00
In some cases, transactions may be rejected by the network despite the fact that they successfully unlock their inputs, spend valid UTXOs, and do not conflict with other transactions. That is, a node may receive the transaction and consider it valid, but it may choose not to relay it to its peers or reject it outright. In particular, custom, or non-standard, transactions are often treated this way by the Bitcoin Cash network at large. Custom transactions are defined as those which are not considered standard.
## Standard Transactions
Standard transactions are those that:
- Only have outputs that use [standard locking scripts](/protocol/blockchain/transaction/locking-script#Standard%20Scripts)
- Are below the maximum transaction size of 100,000 bytes
- Have a valid version number (currently only version 2 is valid)
- Have input scripts that only contain push operations
- Have input scripts with unlocking scripts below the 1650 byte maximum
2020-01-02 11:01:32 -05:00
- Have at most one [data output](/protocol/blockchain/transaction/locking-script#Data%20Output)
2020-01-02 11:04:10 -05:00
- For [multisig](/protocol/blockchain/transaction/locking-script#Multisig) outputs, must have at most 3 parties and at least 1 required party (i.e. 1-of-1 through 3-of-3).
2019-12-30 17:26:16 -05:00
- Have non-data outputs with amount above the [dust](#dust) threshold
2020-01-02 11:01:32 -05:00
Be aware, however, that these rules may vary from node-to-node as they are often configurable. Some nodes may also accept and relay non-standard transactions. For this reason, among others, it is always wise to send transactions to multiple nodes.
2019-12-30 17:26:16 -05:00
2020-01-02 11:04:10 -05:00
### Dust