From 2f08a6bc0ede751f9ef79979142e2ed9b50137fb Mon Sep 17 00:00:00 2001 From: andri lim Date: Thu, 2 May 2019 13:39:55 +0700 Subject: [PATCH] fix byzantium contract creation OOG --- GeneralStateTests.md | 6 +++--- nimbus/vm/computation.nim | 4 ++-- tests/test_generalstate_failing.nim | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/GeneralStateTests.md b/GeneralStateTests.md index b1a57da77..1373397f0 100644 --- a/GeneralStateTests.md +++ b/GeneralStateTests.md @@ -440,14 +440,14 @@ OK: 11/44 Fail: 0/44 Skip: 33/44 + CreateOOGafterInitCodeReturndata.json OK + CreateOOGafterInitCodeReturndata2.json OK + CreateOOGafterInitCodeReturndata3.json OK - CreateOOGafterInitCodeReturndataSize.json Skip ++ CreateOOGafterInitCodeReturndataSize.json OK + CreateOOGafterInitCodeRevert.json OK + CreateOOGafterInitCodeRevert2.json OK + TransactionCollisionToEmpty.json OK + TransactionCollisionToEmptyButCode.json OK + TransactionCollisionToEmptyButNonce.json OK ``` -OK: 29/30 Fail: 0/30 Skip: 1/30 +OK: 30/30 Fail: 0/30 Skip: 0/30 ## stDelegatecallTestHomestead ```diff Call1024BalanceTooLow.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: 2255/2447 Fail: 0/2447 Skip: 192/2447 +OK: 2256/2447 Fail: 0/2447 Skip: 191/2447 diff --git a/nimbus/vm/computation.nim b/nimbus/vm/computation.nim index a219206ab..71df6e2d8 100644 --- a/nimbus/vm/computation.nim +++ b/nimbus/vm/computation.nim @@ -146,7 +146,7 @@ proc writeContract*(computation: BaseComputation, fork: Fork): bool {.gcsafe.} = db.setCode(storageAddr, contractCode.toRange) result = true else: - if fork < FkHomestead: computation.output = @[] + if fork < FkHomestead or fork >= FkByzantium: computation.output = @[] result = false proc transferBalance(computation: BaseComputation, opCode: static[Op]) = @@ -199,7 +199,7 @@ 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) diff --git a/tests/test_generalstate_failing.nim b/tests/test_generalstate_failing.nim index 1fd432e9a..2d62263f4 100644 --- a/tests/test_generalstate_failing.nim +++ b/tests/test_generalstate_failing.nim @@ -13,7 +13,6 @@ # being mostly used for short-term regression prevention. func allowedFailingGeneralStateTest*(folder, name: string): bool = let allowedFailingGeneralStateTests = @[ - "CreateOOGafterInitCodeReturndataSize.json", "modexp.json", # all these tests below actually pass