From fd8a649df32b7cdc841528b069c94d62a7ca766d Mon Sep 17 00:00:00 2001 From: andri lim Date: Thu, 2 May 2019 12:59:10 +0700 Subject: [PATCH] fix RevertInCreateInInit problem --- GeneralStateTests.md | 6 +++--- nimbus/vm/computation.nim | 7 +++++-- tests/test_generalstate_failing.nim | 1 - 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/GeneralStateTests.md b/GeneralStateTests.md index 74d48e172..b1a57da77 100644 --- a/GeneralStateTests.md +++ b/GeneralStateTests.md @@ -1686,7 +1686,7 @@ OK: 37/38 Fail: 0/38 Skip: 1/38 + RevertDepthCreateAddressCollision.json OK + RevertDepthCreateOOG.json OK + RevertInCallCode.json OK - RevertInCreateInInit.json Skip ++ RevertInCreateInInit.json OK + RevertInDelegateCall.json OK + RevertInStaticCall.json OK + RevertOnEmptyStack.json OK @@ -1722,7 +1722,7 @@ OK: 37/38 Fail: 0/38 Skip: 1/38 + TouchToEmptyAccountRevert2.json OK + TouchToEmptyAccountRevert3.json OK ``` -OK: 40/46 Fail: 0/46 Skip: 6/46 +OK: 41/46 Fail: 0/46 Skip: 5/46 ## stSStoreTest ```diff InitCollision.json Skip @@ -2645,4 +2645,4 @@ OK: 133/133 Fail: 0/133 Skip: 0/133 OK: 130/130 Fail: 0/130 Skip: 0/130 ---TOTAL--- -OK: 2254/2447 Fail: 0/2447 Skip: 193/2447 +OK: 2255/2447 Fail: 0/2447 Skip: 192/2447 diff --git a/nimbus/vm/computation.nim b/nimbus/vm/computation.nim index cdbbc7b78..a219206ab 100644 --- a/nimbus/vm/computation.nim +++ b/nimbus/vm/computation.nim @@ -12,7 +12,7 @@ import ./interpreter/[opcode_values, gas_meter, gas_costs, vm_forks], ./code_stream, ./memory, ./message, ./stack, ../db/[state_db, db_chain], ../utils/header, byteutils, ranges, precompiles, - transaction_tracer + transaction_tracer, eth/trie/trie_defs logScope: topics = "vm computation" @@ -199,7 +199,10 @@ proc applyMessage*(computation: BaseComputation, opCode: static[Op]) = when opCode == Create: if computation.getFork >= FkSpurious: computation.vmState.mutateStateDb: - db.incNonce(computation.msg.storageAddress) + db.incNonce(computation.msg.storageAddress) + if computation.getFork >= FkByzantium: + # RevertInCreateInInit.json + db.setStorageRoot(computation.msg.storageAddress, emptyRlpHash) when opCode in {CallCode, Call, Create}: computation.transferBalance(opCode) diff --git a/tests/test_generalstate_failing.nim b/tests/test_generalstate_failing.nim index d8a1936b9..1fd432e9a 100644 --- a/tests/test_generalstate_failing.nim +++ b/tests/test_generalstate_failing.nim @@ -14,7 +14,6 @@ func allowedFailingGeneralStateTest*(folder, name: string): bool = let allowedFailingGeneralStateTests = @[ "CreateOOGafterInitCodeReturndataSize.json", - "RevertInCreateInInit.json", "modexp.json", # all these tests below actually pass