区块是一个包含了一系列交易的集合,另外一个区块还包含了前一个区块的哈希值,这种实现方式将各个区块连接到一起形成链。每添加一个区块都会增强前一个区块的确定性,从而增强整条区块链的确定性。区块哈希值是根据区块内容通过hash算法计算而来的,这使区块内容具有难以篡改的特性,因为历史上任何块的更改,都将使后续的所有区块失效,任何运行节点的人都会发现这个更改。
区块的意义
为了确保TRON网络上的所有节点保持一致的状态并就交易的历史达成一致,我们将交易打包进区块,实现了数百个交易同时被提交、确认以及同步到全网。
区块的工作原理
为了维护交易的历史状态,区块是严格排序的,每个新创建的区块都包含其父区块的hash值。在任何给定的时间,网络上的几乎所有节点都对区块的数量和历史状态达成一致。
一旦超级代表生产出一个区块后,会将新产出的区块广播到网络,网络中所有节点都会将收到的区块添加到自己区块链的末尾。具体的区块共识过程由TRON网络的“权益证明”协议来实现。
区块的组成
一个区块的格式如下:
{
"block_header":
{
"raw_data":
{
"number": 23345280,
"txTrieRoot": "b04e2c9fcbc26bff7173968a198f23b8a1e2875b3f24c02f186c70c3e7a3041e",
"witness_address": "410765bed97bbd836f6e489265fd0d9ca1c888e606",
"parentHash": "000000000164387f439d804494b10e099751748f0a555ce0e7860fee4e1dc6c6",
"version": 23,
"timestamp": 1648717482000
},
"witness_signature":"47b1f77b3e30cfbbfa41d795dd34475865240617dd1c5a7bad526f5fd89e52cd057c80b665cc2431efab53520e2b1b92a0425033baee915df858ca1c588b0a1800"
},
"transactions":[{<->},...,{<->}]
}
区块包括两部分内容:区块头和交易列表。区块头包括以下字段:
raw_data.number
- 区块号,即该区块处于链上的高度raw_data.txTrieRoot
- 区块中交易的默克尔树的根节点的哈希值raw_data.witness_address
- 产块的超级代表账户地址raw_data.parentHash
- 上一个区块的区块ID。区块ID是区块的唯一标识符,它由区块高度以及区块头的raw_data的哈希值组成。通过parentHash将各个区块连接起来形成了链raw_data.version
- 版本号,用来标识链的版本raw_data.timestamp
- 区块被创建时的时间戳witness_signature
- 超级代表对该区块的签名
transactions
是被打包进该区块的所有交易的列表,其中每个交易包含的内容,请参考交易章节。
区块间隔时间
在TRON网络中,区块间隔时间为3秒,即每3秒产生出一个区块。
区块大小
区块的大小是有限制的,最大不会超过2,000,000 bytes(约1.9M)。
Updated about 1 year ago