VECHAIN Docs
Search
K

Block Model

An introduction and overview of the VechainThor blockchain block model.
VeChainThor defines a block in Golang as:
// block.go
type Block struct {
header *Header
txs tx.Transactions
}
type Header struct {
body headerBody
}
type headerBody struct {
ParentID thor.Bytes32
Timestamp uint64
GasLimit uint64
Beneficiary thor.Address
GasUsed uint64
TotalScore uint64
TxsRoot thor.Bytes32
StateRoot thor.Bytes32
ReceiptsRoot thor.Bytes32
Signature []byte
}
type Transactions []*Transaction
Fields within the headerBody,
Γ\Gamma
, are defined as:
  • ParentID - the ID of the parent block.
  • Timestamp - the block time
  • GasLimit - the maximum amount of gas that all transactions inside the block are allowed to consume
  • Beneficiary - the address assigned by the block generator to receive reward (in VTHO)
  • GasUsed - the actual amount of gas used within the block
  • TotalScore - the accumulated witness number of the chain branch headed by the block. See Trunkfor more detail.
  • TxsRoot - root hash of the transaction in the payload
  • StateRoot - root hash for the global state after applying changes in this block
  • ReceiptsRoot - hash of the transaction receipts trie
  • Signature - signature of block builder
The block ID (thor.Bytes32) can be computed as:
BlkID=h(hash(Γsig)[4:]BlkID = h \circ (hash(\Gamma - sig )[4:]
where
hh
is the block number stored as a uint32 and
[4:][4:]
the operation that discards the first four bytes.
Last modified 19d ago