Difference between revisions of "Block"
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Bitcoin transaction data is immutably recorded by | + | Bitcoin transaction data is immutably recorded by Miners into files called '''blocks'''. Blocks can be thought of as the individual pages of a city recorder's record book (where changes to title to real estate are recorded) or a stock transaction ledger. Each block references the previous block that it was built upon allowing the record of history to form a linear sequence over time, known as the [[blockchain]]. New transactions are constantly being processed by [[Mining|Miners]] into new blocks which are added to the end of the chain. As new blocks are added to the tip of the chain, blocks are [[Confirmation|buried deeper and deeper]] and become [[Proof_of_Work|harder]] to change or remove, forming part of the Bitcoin network's security model. |
===Block message structure=== | ===Block message structure=== | ||
Line 9: | Line 9: | ||
|- | |- | ||
|Magic no | |Magic no | ||
− | | | + | |Data field indicating that this data packet contains a BitcoinSV block. Value always 0xD9B4BEF9 |
|4 bytes | |4 bytes | ||
|- | |- | ||
− | | | + | |Block size |
− | |number of bytes | + | |number of bytes remaining in the packet up to end of block |
|4 bytes | |4 bytes | ||
|- | |- | ||
− | | | + | |[[Block header]] |
− | |[[Block | + | |[[Block header| consists of 6 items]] |
− | |80 bytes | + | | 80 bytes |
|- | |- | ||
|Transaction counter | |Transaction counter | ||
− | | positive integer [[ | + | | positive integer VI = [[VarInt]] |
| 1 - 9 bytes | | 1 - 9 bytes | ||
|- | |- | ||
− | |[[ | + | |[[Transactions]] |
|the (non empty) list of transactions | |the (non empty) list of transactions | ||
|<Transaction counter>-many transactions | |<Transaction counter>-many transactions | ||
Line 30: | Line 30: | ||
==Description== | ==Description== | ||
− | Each block contains, among other things, the [[Block timestamp|current time]], a record of some or all recent [[Bitcoin_Transactions|transactions]], and a reference to the block that came immediately before it. It also contains an answer to a hash puzzle which is unique to each block. The [[Block hashing algorithm]] requires that | + | Each block contains, among other things, the [[Block timestamp|current time]], a record of some or all recent [[Bitcoin_Transactions|transactions]], and a reference to the block that came immediately before it. It also contains an answer to a hash puzzle which is unique to each block. The [[Block hashing algorithm]] requires that Miners pre-build their block candidate before trying to solve the puzzle. New blocks cannot be submitted to the network without the correct answer - the process of "[[mining]]" is essentially the process of competing to be the next to find the answer that "solves" the current block. The hash puzzle in each block is [[difficulty|difficult]] to solve, but once a valid solution is found, it is very easy for the rest of the network to confirm that the solution is correct. There are multiple valid solutions for any given block - only one of the solutions needs to be found for the block to be solved. |
− | As a reward for building and performing work on a block and successfully propagating it to the network, the winning | + | As a reward for building and performing work on a block and successfully propagating it to the network, the winning Miner awards themselves the [[block subsidy]] and any [[Transaction fees]] that have been included in the transactions. The winning Miner pays this reward out to themselves in the first transaction in the block which is known as a generation transaction, or a [[coinbase]] transaction. The block subsidy started at 50 bitcoins per block and is halved every 210,000 blocks, or about every four years. |
When Bitcoin transactions are broadcast to the [[network]] by the sender, nodes who compete to build blocks collect the transactions and add them to the block they are working to solve. Miners' incentive to include transactions in their blocks is the attached [[Transaction fees]]. | When Bitcoin transactions are broadcast to the [[network]] by the sender, nodes who compete to build blocks collect the transactions and add them to the block they are working to solve. Miners' incentive to include transactions in their blocks is the attached [[Transaction fees]]. | ||
− | The [[difficulty]] of the mathematical problem is automatically adjusted by the network, such that it targets a goal of solving an average of 6 blocks per hour. In the original design this rate was adjusted every 2016 blocks which is around 2 weeks. Currently (November 2019) the BitcoinSV network follows a | + | The [[difficulty]] of the mathematical problem is automatically adjusted by the network, such that it targets a goal of solving an average of 6 blocks per hour. In the original design this rate was adjusted every 2016 blocks which is around 2 weeks. Currently (November 2019) the BitcoinSV network follows a 'Difficulty Adjustment Algorithm' (DAA) which adjusts the difficulty every block. |
− | Because each block contains a reference to the prior block, the collection of all blocks in existence can be said to form a chain. However, it's possible for the chain to have temporary splits - for example, if two | + | Because each block contains a reference to the prior block, the collection of all blocks in existence can be said to form a chain. However, it's possible for the chain to have temporary splits - for example, if two Miners arrive at two different valid solutions for the same block at the same time, unbeknownst to one another. The peer-to-peer network is designed to resolve these splits within a short period of time, so that only one branch of the chain survives. |
− | The client accepts the 'longest' chain of blocks as valid. The 'length' of the entire [[ | + | The client accepts the 'longest' chain of blocks as valid. The 'length' of the entire [[blockchain]] refers to the chain with the most blocks at the required difficulty. |
==See Also== | ==See Also== | ||
− | * [[ | + | * [[Block header]] |
+ | * [[Blockchain]] | ||
+ | * [[Block hashing algorithm]] | ||
+ | * [[Block timestamp]] | ||
==Attribution== | ==Attribution== | ||
− | This content is based on content sourced from https://en.bitcoin.it/wiki/Block under [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0]. Although it may have been extensively revised and updated we acknowledge the original authors. | + | This content is based on content sourced from https://en.bitcoin.it/wiki/Block under [https://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0]. Although it may have been extensively revised and updated, we acknowledge the original authors. |
Latest revision as of 01:54, 11 January 2022
Bitcoin transaction data is immutably recorded by Miners into files called blocks. Blocks can be thought of as the individual pages of a city recorder's record book (where changes to title to real estate are recorded) or a stock transaction ledger. Each block references the previous block that it was built upon allowing the record of history to form a linear sequence over time, known as the blockchain. New transactions are constantly being processed by Miners into new blocks which are added to the end of the chain. As new blocks are added to the tip of the chain, blocks are buried deeper and deeper and become harder to change or remove, forming part of the Bitcoin network's security model.
Block message structure
Field | Description | Size |
---|---|---|
Magic no | Data field indicating that this data packet contains a BitcoinSV block. Value always 0xD9B4BEF9 | 4 bytes |
Block size | number of bytes remaining in the packet up to end of block | 4 bytes |
Block header | consists of 6 items | 80 bytes |
Transaction counter | positive integer VI = VarInt | 1 - 9 bytes |
Transactions | the (non empty) list of transactions | <Transaction counter>-many transactions |
Description
Each block contains, among other things, the current time, a record of some or all recent transactions, and a reference to the block that came immediately before it. It also contains an answer to a hash puzzle which is unique to each block. The Block hashing algorithm requires that Miners pre-build their block candidate before trying to solve the puzzle. New blocks cannot be submitted to the network without the correct answer - the process of "mining" is essentially the process of competing to be the next to find the answer that "solves" the current block. The hash puzzle in each block is difficult to solve, but once a valid solution is found, it is very easy for the rest of the network to confirm that the solution is correct. There are multiple valid solutions for any given block - only one of the solutions needs to be found for the block to be solved.
As a reward for building and performing work on a block and successfully propagating it to the network, the winning Miner awards themselves the block subsidy and any Transaction fees that have been included in the transactions. The winning Miner pays this reward out to themselves in the first transaction in the block which is known as a generation transaction, or a coinbase transaction. The block subsidy started at 50 bitcoins per block and is halved every 210,000 blocks, or about every four years.
When Bitcoin transactions are broadcast to the network by the sender, nodes who compete to build blocks collect the transactions and add them to the block they are working to solve. Miners' incentive to include transactions in their blocks is the attached Transaction fees.
The difficulty of the mathematical problem is automatically adjusted by the network, such that it targets a goal of solving an average of 6 blocks per hour. In the original design this rate was adjusted every 2016 blocks which is around 2 weeks. Currently (November 2019) the BitcoinSV network follows a 'Difficulty Adjustment Algorithm' (DAA) which adjusts the difficulty every block.
Because each block contains a reference to the prior block, the collection of all blocks in existence can be said to form a chain. However, it's possible for the chain to have temporary splits - for example, if two Miners arrive at two different valid solutions for the same block at the same time, unbeknownst to one another. The peer-to-peer network is designed to resolve these splits within a short period of time, so that only one branch of the chain survives.
The client accepts the 'longest' chain of blocks as valid. The 'length' of the entire blockchain refers to the chain with the most blocks at the required difficulty.
See Also
Attribution
This content is based on content sourced from https://en.bitcoin.it/wiki/Block under Creative Commons Attribution 3.0. Although it may have been extensively revised and updated, we acknowledge the original authors.