区块
一个区块包含了一批有序的交易,和一些其他的关键数据:
- 父区块哈希 —— 通过引用父区块哈希的方式,把所有区块链起来
- 区块高度 —— 在父区块的高度上递增
- 状态根哈希 —— 区块执行后的最终状态树的根哈希
- 交易累加器根哈希 —— 区块执行后的所有交易累加器的根哈希
- 区块累加器根哈希 —— 区块执行后的所有区块ID累加器的根哈希
区块体
区块 Block 包含了一批有序的交易,并且也包括了这些交易按顺序执行之后的状态。 区块是 Starcoin 区块链的核心概念,如图所示:

Block 包含了 BlockHeader 和 BlockBody。其中 BlockBody 包含了两部分:
区块头
区块头(BlockHeader)表示了当前区块包含的所有交易执行完之后,链所处的状态。 BlockHeader 是 Starcoin 区块链的核心概念,包含了重要的数据。

图中各字段表示的意思如下:
parent_hash—— 父区块哈希, 32字节,通过引用父区块哈希的方式,把所有区块链起来timestamp—— 时间戳,8字节number—— 区块高度,8字节,在父区块的高度上递增(目前已废弃)author—— 矿工签名,16字节(目前已废弃)author_auth_key—— 矿工的 auth_key,32字节,可选,用于第一次创建矿工的链上账号(目前已废弃)txn_accumulator_root—— 当前区块的所有交易执行完之后,交易的 Merkle 累加器 root,32字节,参看默克尔累加器block_accumulator_root—— 父区块的 Merkle 累加器 root,32字节,参看默克尔累加器state_root—— 当前区块的所有交易执行完之后,全局状态树 root,32字节,参看全局状态树difficulty—— 当前区块的最小难度,32字节body_hash—— 当前区块的 BlockBody 的哈希,32字节gas_used—— 当前 Block 的所有交易消耗的总 Gas,8字节chain_id—— 网络标识,1字节,区分不同网络nonce—— 计算出来的 nonce,4字节,nonce 是一个用于计算难度的随机数。extra—— 区块头的扩展数据,4字节