2018-01-30 12:51:43 +00:00
|
|
|
import
|
2018-04-06 18:29:47 +00:00
|
|
|
../constants, ../errors, ../computation, ../vm_state, ../types, .. / vm / [stack]
|
2018-01-30 12:51:43 +00:00
|
|
|
|
|
|
|
{.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)
|
2018-04-06 18:29:47 +00:00
|
|
|
stack.push(vmState.timestamp.u256)
|
2018-01-30 12:51:43 +00:00
|
|
|
|
|
|
|
proc number*(computation) =
|
|
|
|
stack.push(vmState.blockNumber)
|
|
|
|
|
|
|
|
proc difficulty*(computation) =
|
|
|
|
stack.push(vmState.difficulty)
|
|
|
|
|
|
|
|
proc gaslimit*(computation) =
|
|
|
|
stack.push(vmState.gasLimit)
|
|
|
|
|