2018-01-29 17:40:22 +00:00
|
|
|
import
|
|
|
|
../constants, ../utils_numeric, .. / utils / [keccak, bytes], .. / vm / [stack, memory, gas_meter], ../computation, helpers, bigints
|
|
|
|
|
|
|
|
proc sha3op*(computation: var BaseComputation) =
|
|
|
|
let (startPosition, size) = computation.stack.popInt(2)
|
|
|
|
computation.extendMemory(startPosition, size)
|
|
|
|
let sha3Bytes = computation.memory.read(startPosition, size)
|
|
|
|
let wordCount = sha3Bytes.len.i256.ceil32 div 32
|
|
|
|
let gasCost = constants.GAS_SHA3_WORD * wordCount
|
|
|
|
computation.gasMeter.consumeGas(gasCost, reason="SHA3: word gas cost")
|
2018-01-31 12:57:05 +00:00
|
|
|
var res = keccak("")
|
2018-01-29 17:40:22 +00:00
|
|
|
pushRes()
|