Block

Blocks consist of groups of transactions, and each block is linked to the previous one in the chain through a hash. This chaining of blocks enhances the verification process for the entire blockchain. With each added block, the validation of the preceding block is reinforced. The block hash is determined by applying a hash algorithm to the block's content, adding a layer of security against tampering. Any alteration in the content of a block throughout the blockchain's history would render all subsequent blocks invalid, as the changes would affect their hashes, making it easily detectable by all participants running the blockchain.

Why Blocks

To guarantee that all participants within the Pollux network uphold a synchronized state and align on the accurate transaction history, we consolidate transactions into blocks. This entails the simultaneous commitment, agreement, and synchronization of hundreds of transactions.

How Blocks Work

To maintain the integrity of the transaction history, blocks follow a strict order. Each newly created block includes the hash of its parent block. Consistently, nearly all participants within the network align on the precise count and chronological sequence of blocks.

Upon the creation of a block by a super representative, the freshly generated block is disseminated across the network. Subsequently, all nodes within the network append the received block to the conclusion of their respective blockchains. The precise consensus mechanism for blocks is outlined by the "Proof of Stake" protocol of the Pollux network.

What's in a Block

The block object will look a little like this:

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

A block is composed of two main sections: the block header and the transaction list. The block header encompasses the following attributes:

raw_data.number- Denoting the block number, representing its height within the chain raw_data.txTrieRoot - The hash of the root node in the Merkle tree of transactions enclosed in the block . raw_data.witness_address - The account address of the super representative responsible for producing this block . raw_data.parentHash - The block ID of the preceding block. The block ID, a unique identifier for the block, is formed by the block height and the hash of the raw_data in the block header. parentHash establishes the linkage between blocks in the chain . raw_data.version - Version number, serving to identify the version of the PRC . raw_data.timestamp - The timestamp indicating when the block was created . witness_signature - The super representative's signature on the block. transactions constitute a list of transactions bundled within the block. For details regarding the content of each transaction, please refer to the transaction chapter.

Block Interval

Within the Pollux network, the block interval is set at 3 seconds, indicating the generation of a new block every 3 seconds.

Block Size

The size of blocks is limited, and a block's maximum size will not surpass 2,000,000 bytes (approximately 1.9M).

Last updated