diff --git a/GeneralStateTests.md b/GeneralStateTests.md index c47eb01de..5c4de8e5d 100644 --- a/GeneralStateTests.md +++ b/GeneralStateTests.md @@ -86,7 +86,7 @@ OK: 2/3 Fail: 0/3 Skip: 1/3 callcallcallcode_001.json Skip callcallcallcode_001_OOGE.json Skip callcallcallcode_001_OOGMAfter.json Skip -+ callcallcallcode_001_OOGMBefore.json OK + callcallcallcode_001_OOGMBefore.json Skip callcallcallcode_001_SuicideEnd.json Skip + callcallcallcode_001_SuicideMiddle.json OK callcallcallcode_ABCB_RECURSIVE.json Skip @@ -94,16 +94,16 @@ OK: 2/3 Fail: 0/3 Skip: 1/3 callcallcode_01_OOGE.json Skip callcallcode_01_SuicideEnd.json Skip callcallcodecall_010.json Skip - callcallcodecall_010_OOGE.json Skip -+ callcallcodecall_010_OOGMAfter.json OK ++ callcallcodecall_010_OOGE.json OK + callcallcodecall_010_OOGMAfter.json Skip callcallcodecall_010_OOGMBefore.json Skip callcallcodecall_010_SuicideEnd.json Skip callcallcodecall_010_SuicideMiddle.json Skip callcallcodecall_ABCB_RECURSIVE.json Skip callcallcodecallcode_011.json Skip - callcallcodecallcode_011_OOGE.json Skip -+ callcallcodecallcode_011_OOGMAfter.json OK - callcallcodecallcode_011_OOGMBefore.json Skip ++ callcallcodecallcode_011_OOGE.json OK + callcallcodecallcode_011_OOGMAfter.json Skip ++ callcallcodecallcode_011_OOGMBefore.json OK callcallcodecallcode_011_SuicideEnd.json Skip callcallcodecallcode_011_SuicideMiddle.json Skip callcallcodecallcode_ABCB_RECURSIVE.json Skip @@ -115,42 +115,42 @@ OK: 2/3 Fail: 0/3 Skip: 1/3 + callcodeInInitcodeToExistingContract.json OK + callcodeInInitcodeToExistingContractWithValueTransfer.json OK + callcode_checkPC.json OK - callcodecall_10.json Skip - callcodecall_10_OOGE.json Skip - callcodecall_10_SuicideEnd.json Skip ++ callcodecall_10.json OK ++ callcodecall_10_OOGE.json OK ++ callcodecall_10_SuicideEnd.json OK callcodecallcall_100.json Skip - callcodecallcall_100_OOGE.json Skip ++ callcodecallcall_100_OOGE.json OK + callcodecallcall_100_OOGMAfter.json OK - callcodecallcall_100_OOGMBefore.json Skip - callcodecallcall_100_SuicideEnd.json Skip - callcodecallcall_100_SuicideMiddle.json Skip ++ callcodecallcall_100_OOGMBefore.json OK ++ callcodecallcall_100_SuicideEnd.json OK ++ callcodecallcall_100_SuicideMiddle.json OK callcodecallcall_ABCB_RECURSIVE.json Skip callcodecallcallcode_101.json Skip - callcodecallcallcode_101_OOGE.json Skip - callcodecallcallcode_101_OOGMAfter.json Skip - callcodecallcallcode_101_OOGMBefore.json Skip - callcodecallcallcode_101_SuicideEnd.json Skip - callcodecallcallcode_101_SuicideMiddle.json Skip ++ callcodecallcallcode_101_OOGE.json OK ++ callcodecallcallcode_101_OOGMAfter.json OK ++ callcodecallcallcode_101_OOGMBefore.json OK ++ callcodecallcallcode_101_SuicideEnd.json OK ++ callcodecallcallcode_101_SuicideMiddle.json OK callcodecallcallcode_ABCB_RECURSIVE.json Skip callcodecallcode_11.json Skip - callcodecallcode_11_OOGE.json Skip - callcodecallcode_11_SuicideEnd.json Skip ++ callcodecallcode_11_OOGE.json OK ++ callcodecallcode_11_SuicideEnd.json OK callcodecallcodecall_110.json Skip - callcodecallcodecall_110_OOGE.json Skip - callcodecallcodecall_110_OOGMAfter.json Skip - callcodecallcodecall_110_OOGMBefore.json Skip - callcodecallcodecall_110_SuicideEnd.json Skip - callcodecallcodecall_110_SuicideMiddle.json Skip ++ callcodecallcodecall_110_OOGE.json OK ++ callcodecallcodecall_110_OOGMAfter.json OK ++ callcodecallcodecall_110_OOGMBefore.json OK ++ callcodecallcodecall_110_SuicideEnd.json OK ++ callcodecallcodecall_110_SuicideMiddle.json OK callcodecallcodecall_ABCB_RECURSIVE.json Skip callcodecallcodecallcode_111.json Skip - callcodecallcodecallcode_111_OOGE.json Skip ++ callcodecallcodecallcode_111_OOGE.json OK + callcodecallcodecallcode_111_OOGMAfter.json OK - callcodecallcodecallcode_111_OOGMBefore.json Skip - callcodecallcodecallcode_111_SuicideEnd.json Skip - callcodecallcodecallcode_111_SuicideMiddle.json Skip ++ callcodecallcodecallcode_111_OOGMBefore.json OK ++ callcodecallcodecallcode_111_SuicideEnd.json OK ++ callcodecallcodecallcode_111_SuicideMiddle.json OK callcodecallcodecallcode_ABCB_RECURSIVE.json Skip ``` -OK: 27/79 Fail: 0/79 Skip: 52/79 +OK: 50/79 Fail: 0/79 Skip: 29/79 ## stCallCreateCallCodeTest ```diff Call1024BalanceTooLow.json Skip @@ -183,7 +183,7 @@ OK: 27/79 Fail: 0/79 Skip: 52/79 + createInitFailBadJumpDestination.json OK + createInitFailStackSizeLargerThan1024.json OK + createInitFailStackUnderflow.json OK -+ createInitFailUndefinedInstruction.json OK + createInitFailUndefinedInstruction.json Skip + createInitFail_OOGduringInit.json OK + createInitOOGforCREATE.json OK createJS_ExampleContract.json Skip @@ -193,13 +193,13 @@ OK: 27/79 Fail: 0/79 Skip: 52/79 + createNameRegistratorPreStore1NotEnoughGas.json OK + createNameRegistratorendowmentTooHigh.json OK ``` -OK: 19/39 Fail: 0/39 Skip: 20/39 +OK: 18/39 Fail: 0/39 Skip: 21/39 ## stCallDelegateCodesCallCodeHomestead ```diff callcallcallcode_001.json Skip callcallcallcode_001_OOGE.json Skip callcallcallcode_001_OOGMAfter.json Skip -+ callcallcallcode_001_OOGMBefore.json OK + callcallcallcode_001_OOGMBefore.json Skip callcallcallcode_001_SuicideEnd.json Skip + callcallcallcode_001_SuicideMiddle.json OK callcallcallcode_ABCB_RECURSIVE.json Skip @@ -207,61 +207,61 @@ OK: 19/39 Fail: 0/39 Skip: 20/39 callcallcode_01_OOGE.json Skip callcallcode_01_SuicideEnd.json Skip callcallcodecall_010.json Skip - callcallcodecall_010_OOGE.json Skip -+ callcallcodecall_010_OOGMAfter.json OK ++ callcallcodecall_010_OOGE.json OK + callcallcodecall_010_OOGMAfter.json Skip callcallcodecall_010_OOGMBefore.json Skip callcallcodecall_010_SuicideEnd.json Skip callcallcodecall_010_SuicideMiddle.json Skip callcallcodecall_ABCB_RECURSIVE.json Skip callcallcodecallcode_011.json Skip - callcallcodecallcode_011_OOGE.json Skip -+ callcallcodecallcode_011_OOGMAfter.json OK - callcallcodecallcode_011_OOGMBefore.json Skip ++ callcallcodecallcode_011_OOGE.json OK + callcallcodecallcode_011_OOGMAfter.json Skip ++ callcallcodecallcode_011_OOGMBefore.json OK callcallcodecallcode_011_SuicideEnd.json Skip callcallcodecallcode_011_SuicideMiddle.json Skip callcallcodecallcode_ABCB_RECURSIVE.json Skip - callcodecall_10.json Skip - callcodecall_10_OOGE.json Skip - callcodecall_10_SuicideEnd.json Skip ++ callcodecall_10.json OK ++ callcodecall_10_OOGE.json OK ++ callcodecall_10_SuicideEnd.json OK callcodecallcall_100.json Skip - callcodecallcall_100_OOGE.json Skip ++ callcodecallcall_100_OOGE.json OK + callcodecallcall_100_OOGMAfter.json OK - callcodecallcall_100_OOGMBefore.json Skip - callcodecallcall_100_SuicideEnd.json Skip - callcodecallcall_100_SuicideMiddle.json Skip ++ callcodecallcall_100_OOGMBefore.json OK ++ callcodecallcall_100_SuicideEnd.json OK ++ callcodecallcall_100_SuicideMiddle.json OK callcodecallcall_ABCB_RECURSIVE.json Skip callcodecallcallcode_101.json Skip - callcodecallcallcode_101_OOGE.json Skip - callcodecallcallcode_101_OOGMAfter.json Skip - callcodecallcallcode_101_OOGMBefore.json Skip - callcodecallcallcode_101_SuicideEnd.json Skip - callcodecallcallcode_101_SuicideMiddle.json Skip ++ callcodecallcallcode_101_OOGE.json OK ++ callcodecallcallcode_101_OOGMAfter.json OK ++ callcodecallcallcode_101_OOGMBefore.json OK ++ callcodecallcallcode_101_SuicideEnd.json OK ++ callcodecallcallcode_101_SuicideMiddle.json OK callcodecallcallcode_ABCB_RECURSIVE.json Skip callcodecallcode_11.json Skip - callcodecallcode_11_OOGE.json Skip - callcodecallcode_11_SuicideEnd.json Skip ++ callcodecallcode_11_OOGE.json OK ++ callcodecallcode_11_SuicideEnd.json OK callcodecallcodecall_110.json Skip - callcodecallcodecall_110_OOGE.json Skip - callcodecallcodecall_110_OOGMAfter.json Skip - callcodecallcodecall_110_OOGMBefore.json Skip - callcodecallcodecall_110_SuicideEnd.json Skip - callcodecallcodecall_110_SuicideMiddle.json Skip ++ callcodecallcodecall_110_OOGE.json OK ++ callcodecallcodecall_110_OOGMAfter.json OK ++ callcodecallcodecall_110_OOGMBefore.json OK ++ callcodecallcodecall_110_SuicideEnd.json OK ++ callcodecallcodecall_110_SuicideMiddle.json OK callcodecallcodecall_ABCB_RECURSIVE.json Skip callcodecallcodecallcode_111.json Skip - callcodecallcodecallcode_111_OOGE.json Skip ++ callcodecallcodecallcode_111_OOGE.json OK + callcodecallcodecallcode_111_OOGMAfter.json OK - callcodecallcodecallcode_111_OOGMBefore.json Skip - callcodecallcodecallcode_111_SuicideEnd.json Skip - callcodecallcodecallcode_111_SuicideMiddle.json Skip ++ callcodecallcodecallcode_111_OOGMBefore.json OK ++ callcodecallcodecallcode_111_SuicideEnd.json OK ++ callcodecallcodecallcode_111_SuicideMiddle.json OK callcodecallcodecallcode_ABCB_RECURSIVE.json Skip ``` -OK: 6/58 Fail: 0/58 Skip: 52/58 +OK: 29/58 Fail: 0/58 Skip: 29/58 ## stCallDelegateCodesHomestead ```diff callcallcallcode_001.json Skip callcallcallcode_001_OOGE.json Skip callcallcallcode_001_OOGMAfter.json Skip -+ callcallcallcode_001_OOGMBefore.json OK + callcallcallcode_001_OOGMBefore.json Skip callcallcallcode_001_SuicideEnd.json Skip + callcallcallcode_001_SuicideMiddle.json OK callcallcallcode_ABCB_RECURSIVE.json Skip @@ -269,55 +269,55 @@ OK: 6/58 Fail: 0/58 Skip: 52/58 callcallcode_01_OOGE.json Skip callcallcode_01_SuicideEnd.json Skip callcallcodecall_010.json Skip - callcallcodecall_010_OOGE.json Skip -+ callcallcodecall_010_OOGMAfter.json OK ++ callcallcodecall_010_OOGE.json OK + callcallcodecall_010_OOGMAfter.json Skip callcallcodecall_010_OOGMBefore.json Skip callcallcodecall_010_SuicideEnd.json Skip callcallcodecall_010_SuicideMiddle.json Skip callcallcodecall_ABCB_RECURSIVE.json Skip callcallcodecallcode_011.json Skip - callcallcodecallcode_011_OOGE.json Skip -+ callcallcodecallcode_011_OOGMAfter.json OK - callcallcodecallcode_011_OOGMBefore.json Skip ++ callcallcodecallcode_011_OOGE.json OK + callcallcodecallcode_011_OOGMAfter.json Skip ++ callcallcodecallcode_011_OOGMBefore.json OK callcallcodecallcode_011_SuicideEnd.json Skip callcallcodecallcode_011_SuicideMiddle.json Skip callcallcodecallcode_ABCB_RECURSIVE.json Skip - callcodecall_10.json Skip - callcodecall_10_OOGE.json Skip - callcodecall_10_SuicideEnd.json Skip ++ callcodecall_10.json OK ++ callcodecall_10_OOGE.json OK ++ callcodecall_10_SuicideEnd.json OK callcodecallcall_100.json Skip - callcodecallcall_100_OOGE.json Skip ++ callcodecallcall_100_OOGE.json OK + callcodecallcall_100_OOGMAfter.json OK - callcodecallcall_100_OOGMBefore.json Skip - callcodecallcall_100_SuicideEnd.json Skip - callcodecallcall_100_SuicideMiddle.json Skip ++ callcodecallcall_100_OOGMBefore.json OK ++ callcodecallcall_100_SuicideEnd.json OK ++ callcodecallcall_100_SuicideMiddle.json OK callcodecallcall_ABCB_RECURSIVE.json Skip callcodecallcallcode_101.json Skip - callcodecallcallcode_101_OOGE.json Skip - callcodecallcallcode_101_OOGMAfter.json Skip - callcodecallcallcode_101_OOGMBefore.json Skip - callcodecallcallcode_101_SuicideEnd.json Skip - callcodecallcallcode_101_SuicideMiddle.json Skip ++ callcodecallcallcode_101_OOGE.json OK ++ callcodecallcallcode_101_OOGMAfter.json OK ++ callcodecallcallcode_101_OOGMBefore.json OK ++ callcodecallcallcode_101_SuicideEnd.json OK ++ callcodecallcallcode_101_SuicideMiddle.json OK callcodecallcallcode_ABCB_RECURSIVE.json Skip callcodecallcode_11.json Skip - callcodecallcode_11_OOGE.json Skip - callcodecallcode_11_SuicideEnd.json Skip ++ callcodecallcode_11_OOGE.json OK ++ callcodecallcode_11_SuicideEnd.json OK callcodecallcodecall_110.json Skip - callcodecallcodecall_110_OOGE.json Skip - callcodecallcodecall_110_OOGMAfter.json Skip - callcodecallcodecall_110_OOGMBefore.json Skip - callcodecallcodecall_110_SuicideEnd.json Skip - callcodecallcodecall_110_SuicideMiddle.json Skip ++ callcodecallcodecall_110_OOGE.json OK ++ callcodecallcodecall_110_OOGMAfter.json OK ++ callcodecallcodecall_110_OOGMBefore.json OK ++ callcodecallcodecall_110_SuicideEnd.json OK ++ callcodecallcodecall_110_SuicideMiddle.json OK callcodecallcodecall_ABCB_RECURSIVE.json Skip callcodecallcodecallcode_111.json Skip - callcodecallcodecallcode_111_OOGE.json Skip ++ callcodecallcodecallcode_111_OOGE.json OK + callcodecallcodecallcode_111_OOGMAfter.json OK - callcodecallcodecallcode_111_OOGMBefore.json Skip - callcodecallcodecallcode_111_SuicideEnd.json Skip - callcodecallcodecallcode_111_SuicideMiddle.json Skip ++ callcodecallcodecallcode_111_OOGMBefore.json OK ++ callcodecallcodecallcode_111_SuicideEnd.json OK ++ callcodecallcodecallcode_111_SuicideMiddle.json OK callcodecallcodecallcode_ABCB_RECURSIVE.json Skip ``` -OK: 6/58 Fail: 0/58 Skip: 52/58 +OK: 29/58 Fail: 0/58 Skip: 29/58 ## stChangedEIP150 ```diff Call1024BalanceTooLow.json Skip @@ -335,7 +335,7 @@ OK: 6/58 Fail: 0/58 Skip: 52/58 + callcallcodecall_010_OOGMAfter_3.json OK + callcallcodecallcode_011_OOGMAfter_1.json OK + callcallcodecallcode_011_OOGMAfter_2.json OK - callcodecallcall_100_OOGMAfter_1.json Skip ++ callcodecallcall_100_OOGMAfter_1.json OK + callcodecallcall_100_OOGMAfter_2.json OK + callcodecallcall_100_OOGMAfter_3.json OK + callcodecallcallcode_101_OOGMAfter_1.json OK @@ -351,7 +351,7 @@ OK: 6/58 Fail: 0/58 Skip: 52/58 + contractCreationMakeCallThatAskMoreGasThenTransactionProvided.jsonOK + createInitFail_OOGduringInit.json OK ``` -OK: 25/30 Fail: 0/30 Skip: 5/30 +OK: 26/30 Fail: 0/30 Skip: 4/30 ## stCodeCopyTest ```diff + ExtCodeCopyTests.json OK @@ -592,9 +592,9 @@ OK: 46/46 Fail: 0/46 Skip: 0/46 + CreateAndGasInsideCreateWithMemExpandingCalls.json OK + DelegateCallOnEIPWithMemExpandingCalls.json OK + ExecuteCallThatAskMoreGasThenTransactionHasWithMemExpandingCalls.jsonOK - NewGasPriceForCodesWithMemExpandingCalls.json Skip ++ NewGasPriceForCodesWithMemExpandingCalls.json OK ``` -OK: 7/8 Fail: 0/8 Skip: 1/8 +OK: 8/8 Fail: 0/8 Skip: 0/8 ## stMemoryStressTest ```diff CALLCODE_Bounds.json Skip @@ -718,10 +718,10 @@ OK: 67/67 Fail: 0/67 Skip: 0/67 + NonZeroValue_CALL_ToEmpty.json OK + NonZeroValue_CALL_ToNonNonZeroBalance.json OK + NonZeroValue_CALL_ToOneStorageKey.json OK - NonZeroValue_DELEGATECALL.json Skip - NonZeroValue_DELEGATECALL_ToEmpty.json Skip - NonZeroValue_DELEGATECALL_ToNonNonZeroBalance.json Skip - NonZeroValue_DELEGATECALL_ToOneStorageKey.json Skip ++ NonZeroValue_DELEGATECALL.json OK ++ NonZeroValue_DELEGATECALL_ToEmpty.json OK ++ NonZeroValue_DELEGATECALL_ToNonNonZeroBalance.json OK ++ NonZeroValue_DELEGATECALL_ToOneStorageKey.json OK + NonZeroValue_SUICIDE.json OK + NonZeroValue_SUICIDE_ToEmpty.json OK + NonZeroValue_SUICIDE_ToNonNonZeroBalance.json OK @@ -735,7 +735,7 @@ OK: 67/67 Fail: 0/67 Skip: 0/67 + NonZeroValue_TransactionCALLwithData_ToNonNonZeroBalance.json OK + NonZeroValue_TransactionCALLwithData_ToOneStorageKey.json OK ``` -OK: 20/24 Fail: 0/24 Skip: 4/24 +OK: 24/24 Fail: 0/24 Skip: 0/24 ## stPreCompiledContracts ```diff identity_to_bigger.json Skip @@ -2229,10 +2229,10 @@ OK: 0/24 Fail: 0/24 Skip: 24/24 + ZeroValue_CALL_ToEmpty.json OK + ZeroValue_CALL_ToNonZeroBalance.json OK + ZeroValue_CALL_ToOneStorageKey.json OK - ZeroValue_DELEGATECALL.json Skip - ZeroValue_DELEGATECALL_ToEmpty.json Skip - ZeroValue_DELEGATECALL_ToNonZeroBalance.json Skip - ZeroValue_DELEGATECALL_ToOneStorageKey.json Skip ++ ZeroValue_DELEGATECALL.json OK ++ ZeroValue_DELEGATECALL_ToEmpty.json OK ++ ZeroValue_DELEGATECALL_ToNonZeroBalance.json OK ++ ZeroValue_DELEGATECALL_ToOneStorageKey.json OK + ZeroValue_SUICIDE.json OK + ZeroValue_SUICIDE_ToEmpty.json OK + ZeroValue_SUICIDE_ToNonZeroBalance.json OK @@ -2246,7 +2246,7 @@ OK: 0/24 Fail: 0/24 Skip: 24/24 + ZeroValue_TransactionCALLwithData_ToNonZeroBalance.json OK + ZeroValue_TransactionCALLwithData_ToOneStorageKey.json OK ``` -OK: 20/24 Fail: 0/24 Skip: 4/24 +OK: 24/24 Fail: 0/24 Skip: 0/24 ## stZeroKnowledge ```diff ecmul_1-2_2_28000_128.json Skip @@ -2520,4 +2520,4 @@ OK: 0/133 Fail: 0/133 Skip: 133/133 OK: 0/130 Fail: 0/130 Skip: 130/130 ---TOTAL--- -OK: 1231/2334 Fail: 0/2334 Skip: 1103/2334 +OK: 1309/2334 Fail: 0/2334 Skip: 1025/2334 diff --git a/nimbus/vm/interpreter_dispatch.nim b/nimbus/vm/interpreter_dispatch.nim index ae2eb1d0b..390e0bb3d 100644 --- a/nimbus/vm/interpreter_dispatch.nim +++ b/nimbus/vm/interpreter_dispatch.nim @@ -172,13 +172,18 @@ let FrontierOpDispatch {.compileTime.}: array[Op, NimNode] = block: Call: newIdentNode "call", CallCode: newIdentNode "callCode", Return: newIdentNode "returnOp", - DelegateCall: newIdentNode "delegateCall", # StaticCall: introduced in Byzantium # Revert: introduced in Byzantium # Invalid: newIdentNode "invalid", SelfDestruct: newIdentNode "selfDestruct" ] +proc genHomesteadJumpTable(ops: array[Op, NimNode]): array[Op, NimNode] {.compileTime.} = + result = ops + result[DelegateCall] = newIdentNode "delegateCall" + +let HomesteadOpDispatch {.compileTime.}: array[Op, NimNode] = genHomesteadJumpTable(FrontierOpDispatch) + proc opTableToCaseStmt(opTable: array[Op, NimNode], computation: NimNode): NimNode = let instr = genSym(nskVar) @@ -240,15 +245,25 @@ proc opTableToCaseStmt(opTable: array[Op, NimNode], computation: NimNode): NimNo macro genFrontierDispatch(computation: BaseComputation): untyped = result = opTableToCaseStmt(FrontierOpDispatch, computation) +macro genHomesteadDispatch(computation: BaseComputation): untyped = + result = opTableToCaseStmt(HomesteadOpDispatch, computation) + proc frontierVM(computation: var BaseComputation) = if not computation.execPrecompiles: genFrontierDispatch(computation) +proc homesteadVM(computation: var BaseComputation) = + if not computation.execPrecompiles: + genHomesteadDispatch(computation) + proc updateOpcodeExec*(computation: var BaseComputation, fork: Fork) = case fork - of FkFrontier..FkSpurious: + of FkFrontier: computation.opCodeExec = frontierVM computation.frontierVM() + of FkHomestead..FkSpurious: + computation.opCodeExec = homesteadVM + computation.homesteadVM() else: raise newException(VMError, "Unknown or not implemented fork: " & $fork) diff --git a/tests/test_generalstate_failing.nim b/tests/test_generalstate_failing.nim index bdd1851e5..08f49d7fc 100644 --- a/tests/test_generalstate_failing.nim +++ b/tests/test_generalstate_failing.nim @@ -13,32 +13,8 @@ # being mostly used for short-term regression prevention. func allowedFailingGeneralStateTest*(folder, name: string): bool = let allowedFailingGeneralStateTests = @[ - "callcallcallcode_001.json", - "callcallcallcode_001.json", - "callcallcode_01.json", - "callcallcodecall_010.json", - "callcallcodecallcode_011.json", - "callcodecallcall_100.json", - "callcodecallcallcode_101.json", - "callcodecallcode_11.json", - "callcodecallcodecall_110.json", - "callcodecallcodecallcode_111.json", "TransactionCollisionToEmptyButCode.json", "TransactionCollisionToEmptyButNonce.json", - "CallLoseGasOOG.json", - "CallcodeLoseGasOOG.json", - "callOutput1.json", - "callOutput2.json", - "callOutput3.json", - "callOutput3Fail.json", - "callOutput3partial.json", - "callOutput3partialFail.json", - "callcodeOutput1.json", - "callcodeOutput2.json", - "callcodeOutput3.json", - "callcodeOutput3Fail.json", - "callcodeOutput3partial.json", - "callcodeOutput3partialFail.json", "deleagateCallAfterValueTransfer.json", "delegatecallInInitcodeToEmptyContract.json", "delegatecallInInitcodeToExistingContract.json", @@ -104,54 +80,52 @@ func allowedFailingGeneralStateTest*(folder, name: string): bool = "callcodecallcodecallcode_ABCB_RECURSIVE.json", # Frontier failed test cases "createJS_ExampleContract.json", + "callcallcallcode_001_OOGMAfter_1.json", + "callcallcallcode_001_OOGMAfter_2.json", + "createInitFailUndefinedInstruction.json", + "callcallcodecall_010_OOGMAfter.json", + + # Failed in homestead but OK in Frontier + "callcallcallcode_001.json", "callcallcallcode_001_OOGE.json", "callcallcallcode_001_OOGMAfter.json", + "callcallcallcode_001_OOGMBefore.json", "callcallcallcode_001_SuicideEnd.json", "callcallcallcode_ABCB_RECURSIVE.json", + "callcallcode_01.json", "callcallcode_01_OOGE.json", "callcallcode_01_SuicideEnd.json", - "callcallcodecall_010_OOGE.json", + "callcallcodecall_010.json", "callcallcodecall_010_OOGMBefore.json", "callcallcodecall_010_SuicideEnd.json", "callcallcodecall_010_SuicideMiddle.json", - "callcallcodecallcode_011_OOGE.json", - "callcallcodecallcode_011_OOGMBefore.json", + "callcallcodecallcode_011.json", + "callcallcodecallcode_011_OOGMAfter.json", "callcallcodecallcode_011_SuicideEnd.json", "callcallcodecallcode_011_SuicideMiddle.json", - "callcodecall_10.json", - "callcodecall_10_OOGE.json", - "callcodecall_10_SuicideEnd.json", - "callcodecallcall_100_OOGE.json", - "callcodecallcall_100_OOGMBefore.json", - "callcodecallcall_100_SuicideEnd.json", - "callcodecallcall_100_SuicideMiddle.json", - "callcodecallcallcode_101_OOGE.json", - "callcodecallcallcode_101_OOGMAfter.json", - "callcodecallcallcode_101_OOGMBefore.json", - "callcodecallcallcode_101_SuicideEnd.json", - "callcodecallcallcode_101_SuicideMiddle.json", - "callcodecallcode_11_OOGE.json", - "callcodecallcode_11_SuicideEnd.json", - "callcodecallcodecall_110_OOGE.json", - "callcodecallcodecall_110_OOGMAfter.json", - "callcodecallcodecall_110_OOGMBefore.json", - "callcodecallcodecall_110_SuicideEnd.json", - "callcodecallcodecall_110_SuicideMiddle.json", - "callcodecallcodecallcode_111_OOGE.json", - "callcodecallcodecallcode_111_OOGMBefore.json", - "callcodecallcodecallcode_111_SuicideEnd.json", - "callcodecallcodecallcode_111_SuicideMiddle.json", - "callcallcallcode_001_OOGMAfter_1.json", - "callcallcallcode_001_OOGMAfter_2.json", - "callcodecallcall_100_OOGMAfter_1.json", - "NewGasPriceForCodesWithMemExpandingCalls.json", - "NonZeroValue_DELEGATECALL.json", - "NonZeroValue_DELEGATECALL_ToEmpty.json", - "NonZeroValue_DELEGATECALL_ToNonNonZeroBalance.json", - "NonZeroValue_DELEGATECALL_ToOneStorageKey.json", - "ZeroValue_DELEGATECALL.json", - "ZeroValue_DELEGATECALL_ToEmpty.json", - "ZeroValue_DELEGATECALL_ToNonZeroBalance.json", - "ZeroValue_DELEGATECALL_ToOneStorageKey.json" + "callcallcallcode_001.json", + "callcallcallcode_001_OOGMAfter.json", + "callcallcode_01.json", + "callcallcodecall_010.json", + "callcallcodecallcode_011.json", + "callcodecallcall_100.json", + "callcodecallcallcode_101.json", + "callcodecallcode_11.json", + "callcodecallcodecall_110.json", + "callcodecallcodecallcode_111.json", + "CallLoseGasOOG.json", + "CallcodeLoseGasOOG.json", + "callOutput1.json", + "callOutput2.json", + "callOutput3.json", + "callOutput3Fail.json", + "callOutput3partial.json", + "callOutput3partialFail.json", + "callcodeOutput1.json", + "callcodeOutput2.json", + "callcodeOutput3.json", + "callcodeOutput3Fail.json", + "callcodeOutput3partial.json", + "callcodeOutput3partialFail.json" ] result = name in allowedFailingGeneralStateTests diff --git a/tests/test_helpers.nim b/tests/test_helpers.nim index 73c825ccc..764b85249 100644 --- a/tests/test_helpers.nim +++ b/tests/test_helpers.nim @@ -290,7 +290,6 @@ proc getFixtureTransaction*(j: JsonNode, dataIndex, gasIndex, valueIndex: int): result.R = fromBytesBE(Uint256, raw[0..31]) result.S = fromBytesBE(Uint256, raw[32..63]) result.V = raw[64] + 27.byte - + proc hashLogEntries*(logs: seq[Log]): string = toLowerAscii("0x" & $keccakHash(rlp.encode(logs))) - \ No newline at end of file