implement EIP658: receipt status field

This commit is contained in:
andri lim 2019-04-22 16:37:41 +07:00
parent d8284f9330
commit dd89af6d3d
No known key found for this signature in database
GPG Key ID: 31702AE10541E6B9
3 changed files with 4 additions and 4 deletions

View File

@ -85,9 +85,7 @@ proc makeReceipt(vmState: BaseVMState, fork = FkFrontier): Receipt =
if fork < FkByzantium:
result.stateRootOrStatus = hashOrStatus(vmState.accountDb.rootHash)
else:
# TODO: post byzantium fork use status instead of rootHash
let vmStatus = true # success or failure
result.stateRootOrStatus = hashOrStatus(vmStatus)
result.stateRootOrStatus = hashOrStatus(vmState.status)
result.cumulativeGasUsed = vmState.cumulativeGasUsed
result.logs = vmState.getAndClearLogEntries()

View File

@ -87,8 +87,9 @@ proc execComputation*(computation: var BaseComputation): bool =
if computation.getFork >= FkSpurious:
computation.collectTouchedAccounts(computation.vmState.touchedAccounts)
result = computation.isSuccess
computation.vmstate.status = result
if result:
computation.vmState.addLogs(computation.logEntries)

View File

@ -26,6 +26,7 @@ type
accountDb* : AccountStateDB
cumulativeGasUsed*: GasInt
touchedAccounts*: HashSet[EthAddress]
status* : bool
AccessLogs* = ref object
reads*: Table[string, string]