Block
DISCLAIMER
This article is a direct copy of the original https://en.bitcoin.it/wiki/Block and has not been checked for correctness or edited. 11 October 2019
Expected review by: 25 October 2019
20191011 Review Brendan Lee Edited first paragraph NOTE: MAGIC BYTES ARE SET TO BTC VALUE. DOES THIS NEED TO CHANGE? 29 Nov - removing core guff, re-formatting around corporate miner/large block paradigm
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 block chain. 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 structure
Field | Description | Size |
---|---|---|
Magic no | value always 0xD9B4BEF9 | 4 bytes |
Blocksize | number of bytes following up to end of block | 4 bytes |
Blockheader | 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 difficult-to-solve mathematical puzzle - the answer to which is unique to each block. 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 mathematical problem in each block is extremely 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 number of Bitcoins generated per block started at 50 per block and is halved every 210,000 blocks (about four years). Currently over 18 million coins have been created and the block subsidy has halved twice, dropping to 12.5 Bitcoins per block.
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. Every 2016 blocks (solved in about two weeks), all Bitcoin clients compare the actual number created with this goal and modify the target by the percentage that it varied. The network comes to a consensus and automatically increases (or decreases) the difficulty of generating blocks.
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 block chain refers to the chain with the most combined difficulty, not the one with the most blocks. This prevents someone from forking the chain and creating a large number of low-difficulty blocks, and having it accepted by the network as 'longest'.