diff --git a/protocol/blockchain/block.md b/protocol/blockchain/block.md index e2c0509..9754410 100644 --- a/protocol/blockchain/block.md +++ b/protocol/blockchain/block.md @@ -31,4 +31,12 @@ The block reward started at 5,000,000,000 satoshis (50 BCH) and decreases by hal Transaction fees are often required by the network for transactions to be relayed across the network. Satoshis provided as inputs to a transaction, but not consumed by its outputs, are collected by the coinbase transaction as implicit inputs. -The coinbase message is provided in the inputs unlocking script. The unlocking script is required to begin with a push of the block height which can then be followed why whatever data is desired. The block height encoded as a variable-length, little-endian integer. The [OP_DATA_X](/protocol/blockchain/script/op-codes/op-data-x) operation is used to push the necessary number of bytes to encode the length. This requirement was added with version 2 blocks as a part of [BIP-34](/protocol/forks/bip-0034). \ No newline at end of file +The coinbase message is provided in the inputs unlocking script. +The unlocking script is required to begin with a push of the block height which can then be followed why whatever data is desired. +The block height encoded as a variable-length, little-endian integer. +The [OP_DATA_X](/protocol/blockchain/script/op-codes/op-data-x) operation is used to push the necessary number of bytes to encode the length. +This requirement was added with version 2 blocks as a part of [BIP-34](/protocol/forks/bip-0034). + +Each coinbase transaction may only have one transaction input. + +Each coinbase transaction's unlocking script must be less than or equal to 100 bytes. diff --git a/protocol/blockchain/transaction-validation.md b/protocol/blockchain/transaction-validation.md index a0de586..e58fd1e 100644 --- a/protocol/blockchain/transaction-validation.md +++ b/protocol/blockchain/transaction-validation.md @@ -8,4 +8,20 @@ Transaction validation can be broken down into three major categories: - [Block-Level Validation Rules](/protocol/blockchain/transaction-validation/block-level-validation-rules) which determine whether transactions are valid in a given blockchain context (i.e. in a given block with a given history) - [Network-Level Validation Rules](/protocol/blockchain/transaction-validation/network-level-validation-rules) which determine whether transactions are relayed from node to node -The three of these are closely intertwined but often result in different behavior when they are violated. For details, see the linked pages for definitions of each. \ No newline at end of file +The three of these are closely intertwined but often result in different behavior when they are violated. For details, see the linked pages for definitions of each. + +## Miscellaneous Validation Rules + +Bitcoin also has some miscellaneous rules for validation, which include exceptions or oddities. +The following are miscellaneous rules. + +### Genesis Block Coinbase + +The genesis block's coinbase may not be spent. +Furthermore, this coinbase's output is not considered an unspent transaction output. + +### Extra Coinbase Validation Rules + +Coinbases may only have one transaction input. + +All coinbase unlocking script must be less than or equal to 100 bytes in size.