nimbus-eth1/src/logic/block_ops.nim

33 lines
833 B
Nim
Raw Normal View History

import
../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack]
{.this: computation.}
{.experimental.}
using
computation: var BaseComputation
proc blockhash*(computation) =
let blockNumber = stack.popInt()
let blockHash = vmState.getAncestorHash(blockNumber)
stack.push(blockHash)
proc coinbase*(computation) =
stack.push(vmState.coinbase)
proc timestamp*(computation) =
2018-04-06 17:59:32 +00:00
# TODO: EthTime is an alias of Time, which is a distinct int64 so can't use u256(int64)
# This may have implications for different platforms.
stack.push(vmState.timestamp.uint64.u256)
stack.push(vmState.timestamp.u256)
proc number*(computation) =
stack.push(vmState.blockNumber)
proc difficulty*(computation) =
stack.push(vmState.difficulty)
proc gaslimit*(computation) =
stack.push(vmState.gasLimit)