add enable/disableTracing to vm_state

This commit is contained in:
andri lim 2018-12-11 16:27:22 +07:00 committed by zah
parent b159b5c945
commit 9d6dbceefc
2 changed files with 12 additions and 2 deletions

View File

@ -19,7 +19,7 @@ proc traceTransaction*(db: BaseChainDB, header: BlockHeader,
captureDB = newCaptureDB(db.db, memoryDB)
captureTrieDB = trieDB captureDB
captureChainDB = newBaseChainDB(captureTrieDB, false) # prune or not prune?
vmState = newBaseVMState(parent, captureChainDB, tracerFlags + {TracerFlags.EnableTracing})
vmState = newBaseVMState(parent, captureChainDB, tracerFlags)
var stateDb = newAccountStateDB(captureTrieDB, parent.stateRoot, db.pruneTrie)
if header.txRoot == BLANK_ROOT_HASH: return
@ -30,9 +30,13 @@ proc traceTransaction*(db: BaseChainDB, header: BlockHeader,
for idx, tx in body.transactions:
var sender: EthAddress
if tx.getSender(sender):
if idx == txIndex:
vmState.enableTracing()
let txFee = processTransaction(stateDb, tx, sender, vmState)
gasUsed = (txFee div tx.gasPrice.u256).truncate(GasInt)
if idx == txIndex: break
if idx == txIndex:
vmState.disableTracing()
break
else:
assert(false, "Could not get sender")

View File

@ -128,3 +128,9 @@ proc getAndClearLogEntries*(vmState: BaseVMState): seq[Log] =
proc clearLogs*(vmState: BaseVMState) =
# call this when computation error
vmState.logEntries.setLen(0)
proc enableTracing*(vmState: BaseVMState) =
vmState.tracingEnabled = true
proc disableTracing*(vmState: BaseVMState) =
vmState.tracingEnabled = false