VECHAIN Docs
Search
⌃K

Block

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
where ParentID is the ID of the parent block, Beneficiary is the address assigned by the block generator to receive reward (in VTHO), and TotalScore is the accumulated witness number of the chain branch headed by the block. We will describe what the score means when describing the Proof of Authority consensus algorithm.
Let
Γ\Gamma
denote headerBody. The block ID (thor.Bytes32) can be computed as:
BlkID=h(hash(Γ{sig}))[4:]BlkID = h \circ (hash(\Gamma - \lbrace sig \rbrace))[4:]
where
hh
is the block number stored as a uint32 and
[4:][4:]
the operation that discards the first four bytes.