diff --git a/nimbus/vm/computation.nim b/nimbus/vm/computation.nim index 86efc4a63..909e7592a 100644 --- a/nimbus/vm/computation.nim +++ b/nimbus/vm/computation.nim @@ -113,6 +113,8 @@ proc applyMessageAux(computation: var BaseComputation, opCode: static[Op]) = if computation.msg.depth > STACK_DEPTH_LIMIT: raise newException(StackDepthError, "Stack depth limit reached") + let nilai = computation.vmState.readOnlyStateDb().getBalance(computation.msg.sender) + if computation.msg.value != 0: let senderBalance = computation.vmState.readOnlyStateDb(). @@ -174,7 +176,7 @@ proc applyMessage(computation: var BaseComputation, opCode: static[Op]) = var snapshot = computation.snapshot() defer: snapshot.dispose() - when opCode == Call: + when opCode in {Call, Create}: try: computation.applyMessageAux(opCode) except VMError: diff --git a/nimbus/vm/interpreter/opcodes_impl.nim b/nimbus/vm/interpreter/opcodes_impl.nim index 718842a03..fdacc406c 100644 --- a/nimbus/vm/interpreter/opcodes_impl.nim +++ b/nimbus/vm/interpreter/opcodes_impl.nim @@ -747,8 +747,8 @@ template genCall(callName: untyped, opCode: Op): untyped = childMsg.sender = sender else: childMsg.sender = computation.msg.storageAddress - - if opCode == CallCode: + + when opCode == CallCode: childMsg.storageAddress = computation.msg.storageAddress var childComputation = applyChildComputation(computation, childMsg, opCode)