Blocks are batches of transactions with a hash of the previous block in the chain. This links blocks together in a chain. Each additional block strengthens the verification of the previous block and hence the entire blockchain. The block hash value is calculated based on the block content through the hash algorithm, which makes the block content difficult to tamper with, because one change in any block in history would invalidate all the following blocks as all subsequent hashes would change and everyone running the blockchain would notice.

Why Blocks

To ensure that all participants on the TRON network maintain a synchronized state and agree on the precise history of transactions, we batch transactions into blocks. This means hundreds of transactions are committed, agreed on, and synchronized on all at once.

How Blocks Work

To preserve the transaction history, blocks are strictly ordered,every new block created contains the hash of its parent block. At any given time, almost all participants on the network are in agreement on the exact number and history of blocks.

Once a super representative produces a block, it will broadcast the newly produced block to the network, and all nodes in the network will add the received block to the end of their blockchain. The exact block consensus process is specified by the "Proof of Stake" protocol of the TRON network.

What's In A Block

The block object will look a little like this:

{
    "block_header":
    {
        "raw_data": 
        {
            "number": 23345280,
            "txTrieRoot": "b04e2c9fcbc26bff7173968a198f23b8a1e2875b3f24c02f186c70c3e7a3041e",
            "witness_address": "410765bed97bbd836f6e489265fd0d9ca1c888e606",
            "parentHash": "000000000164387f439d804494b10e099751748f0a555ce0e7860fee4e1dc6c6",
            "version": 23,
            "timestamp": 1648717482000
        },
        "witness_signature":"47b1f77b3e30cfbbfa41d795dd34475865240617dd1c5a7bad526f5fd89e52cd057c80b665cc2431efab53520e2b1b92a0425033baee915df858ca1c588b0a1800"
    },
    "transactions":[{<->},...,{<->}]
}

A block consists of two parts: the block header and the transaction list. The block header includes the following fields:

  • raw_data.number - The block number, that is, the height of the block on the chain
  • raw_data.txTrieRoot - The hash of the root node of the Merkle tree of transactions in the block
  • raw_data.witness_address - The super representative account address which produces this block
  • raw_data.parentHash - The block ID of the previous block. The block ID is the unique identifier of the block, which consists of the block height and the hash of the raw_data of the block header. parentHash links blocks together in a chain
  • raw_data.version - Version number, it is used to identify the version of the chain
  • raw_data.timestamp - Timestamp when the block was created
  • witness_signature - Super representative's signature on the block

transactions is a list of transactions that are packaged into the block. For the content of each transaction, please refer to the transaction chapter.

Block Interval

In the TRON network, the block interval is 3 seconds, that is, a block is generated every 3 seconds.

Block Size

Blocks themselves are bounded in size, and the maximum size of a block will not exceed 2,000,000 bytes (about 1.9M).