2024-09-29 08:52:19 +00:00
|
|
|
# eth
|
|
|
|
# Copyright (c) 2024 Status Research & Development GmbH
|
|
|
|
# Licensed and distributed under either of
|
|
|
|
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
|
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
|
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
|
|
|
|
{.push raises: [].}
|
|
|
|
|
|
|
|
import "."/[addresses, base, hashes, times]
|
|
|
|
|
|
|
|
export addresses, base, hashes, times
|
|
|
|
|
|
|
|
type
|
|
|
|
DifficultyInt* = UInt256
|
|
|
|
|
|
|
|
Header* = object
|
|
|
|
# https://github.com/ethereum/execution-specs/blob/51fac24740e662844446439ceeb96a460aae0ba0/src/ethereum/cancun/blocks.py
|
|
|
|
parentHash*: Hash32
|
|
|
|
ommersHash*: Hash32
|
|
|
|
coinbase*: Address
|
|
|
|
stateRoot*: Root
|
|
|
|
transactionsRoot*: Root
|
|
|
|
receiptsRoot*: Root
|
|
|
|
logsBloom*: Bloom
|
|
|
|
difficulty*: DifficultyInt
|
|
|
|
number*: BlockNumber
|
|
|
|
gasLimit*: GasInt
|
|
|
|
gasUsed*: GasInt
|
|
|
|
timestamp*: EthTime
|
|
|
|
extraData*: seq[byte]
|
2024-10-02 11:00:10 +00:00
|
|
|
mixHash*: Bytes32
|
|
|
|
## AKA mix_digest in some specs - Hash32 in the eth API but Bytes32 in
|
|
|
|
## the execution API and spec!
|
2024-09-29 08:52:19 +00:00
|
|
|
nonce*: Bytes8
|
|
|
|
baseFeePerGas*: Opt[UInt256] # EIP-1559
|
|
|
|
withdrawalsRoot*: Opt[Hash32] # EIP-4895
|
|
|
|
blobGasUsed*: Opt[uint64] # EIP-4844
|
|
|
|
excessBlobGas*: Opt[uint64] # EIP-4844
|
|
|
|
parentBeaconBlockRoot*: Opt[Hash32] # EIP-4788
|
|
|
|
requestsRoot*: Opt[Hash32] # EIP-7685
|
|
|
|
|
|
|
|
# starting from EIP-4399, `mixDigest` field is called `prevRandao`
|
2024-10-02 11:00:10 +00:00
|
|
|
template prevRandao*(h: Header): Bytes32 =
|
2024-09-29 08:52:19 +00:00
|
|
|
h.mixHash
|
|
|
|
|
2024-10-02 11:00:10 +00:00
|
|
|
template `prevRandao=`*(h: Header, hash: Bytes32) =
|
2024-09-29 08:52:19 +00:00
|
|
|
h.mixHash = hash
|
|
|
|
|
|
|
|
template txRoot*(h: Header): Root = h.transactionsRoot
|