nimbus-eth1/src/utils/header.nim

66 lines
1.8 KiB
Nim
Raw Normal View History

import ../constants, ttmath, strformat
2018-01-17 14:16:00 +00:00
type
Header* = ref object
2018-01-17 14:16:00 +00:00
timestamp*: int
difficulty*: UInt256
blockNumber*: UInt256
hash*: string
coinbase*: string
gasLimit*: UInt256
2018-02-13 17:18:08 +00:00
stateRoot*: string
# TODO
proc `$`*(header: Header): string =
if header.isNil:
result = "nil"
else:
result = &"Header(timestamp: {header.timestamp} difficulty: {header.difficulty} blockNumber: {header.blockNumber} gasLimit: {header.gasLimit})"
proc generateHeaderFromParentHeader*(
computeDifficultyFn: proc(parentHeader: Header, timestamp: int): int,
parentHeader: Header,
coinbase: string,
timestamp: int = -1,
extraData: string = string""): Header =
Header()
# Generate BlockHeader from state_root and parent_header
# if timestamp is None:
# timestamp = max(int(time.time()), parent_header.timestamp + 1)
# elif timestamp <= parent_header.timestamp:
# raise ValueError(
# "header.timestamp ({}) should be higher than"
# "parent_header.timestamp ({})".format(
# timestamp,
# parent_header.timestamp,
# )
# )
# header = BlockHeader(
# difficulty=compute_difficulty_fn(parent_header, timestamp),
# block_number=(parent_header.block_number + 1),
# gas_limit=compute_gas_limit(
# parent_header,
# gas_limit_floor=GENESIS_GAS_LIMIT,
# ),
# timestamp=timestamp,
# parent_hash=parent_header.hash,
# state_root=parent_header.state_root,
# coinbase=coinbase,
# extra_data=extra_data,
# )
# return header
2018-01-17 14:16:00 +00:00
proc computeGasLimit*(header: Header, gasLimitFloor: UInt256): UInt256 =
2018-01-17 14:16:00 +00:00
# TODO
gasLimitFloor
proc gasUsed*(header: Header): UInt256 =
2018-01-17 14:16:00 +00:00
# TODO
0.u256
2018-01-17 14:16:00 +00:00
proc gasLimit*(header: Header): UInt256 =
2018-01-17 14:16:00 +00:00
# TODO
0.u256