diff --git a/BlockchainTests.md b/BlockchainTests.md index 46f104efc..e0380cf16 100644 --- a/BlockchainTests.md +++ b/BlockchainTests.md @@ -228,7 +228,7 @@ OK: 86/96 Fail: 0/96 Skip: 10/96 + OverflowGasRequire.json OK + RefundOverflow.json OK + RefundOverflow2.json OK - SuicidesMixingCoinbase.json Skip ++ SuicidesMixingCoinbase.json OK TransactionFromCoinbaseHittingBlockGasLimit1.json Skip + TransactionFromCoinbaseNotEnoughFounds.json OK + TransactionNonceCheck.json OK @@ -259,13 +259,13 @@ OK: 86/96 Fail: 0/96 Skip: 10/96 + extCodeHashOfDeletedAccountDynamic.json OK + multimpleBalanceInstruction.json OK randomStatetest123.json Skip - randomStatetest136.json Skip ++ randomStatetest136.json OK randomStatetest160.json Skip randomStatetest170.json Skip randomStatetest223.json Skip randomStatetest229.json Skip randomStatetest241.json Skip - randomStatetest324.json Skip ++ randomStatetest324.json OK randomStatetest328.json Skip randomStatetest375.json Skip randomStatetest377.json Skip @@ -277,8 +277,8 @@ OK: 86/96 Fail: 0/96 Skip: 10/96 randomStatetest619.json Skip randomStatetest94.json Skip + simpleSuicide.json OK - suicideCoinbase.json Skip - suicideCoinbaseState.json Skip ++ suicideCoinbase.json OK ++ suicideCoinbaseState.json OK + suicideStorageCheck.json OK + suicideStorageCheckVCreate.json OK + suicideStorageCheckVCreate2.json OK @@ -286,7 +286,7 @@ OK: 86/96 Fail: 0/96 Skip: 10/96 + transactionFromNotExistingAccount.json OK + txCost-sec73.json OK ``` -OK: 45/67 Fail: 0/67 Skip: 22/67 +OK: 50/67 Fail: 0/67 Skip: 17/67 ## bcTotalDifficultyTest ```diff + lotsOfBranchesOverrideAtTheEnd.json OK @@ -404,4 +404,4 @@ OK: 20/20 Fail: 0/20 Skip: 0/20 OK: 5/5 Fail: 0/5 Skip: 0/5 ---TOTAL--- -OK: 285/318 Fail: 0/318 Skip: 33/318 +OK: 290/318 Fail: 0/318 Skip: 28/318 diff --git a/GeneralStateTests.md b/GeneralStateTests.md index caa48fcf1..2e6b14b50 100644 --- a/GeneralStateTests.md +++ b/GeneralStateTests.md @@ -1068,7 +1068,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest120.json OK + randomStatetest121.json OK + randomStatetest122.json OK -+ randomStatetest123.json OK + randomStatetest123.json Skip + randomStatetest124.json OK + randomStatetest125.json OK + randomStatetest126.json OK @@ -1079,7 +1079,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest133.json OK + randomStatetest134.json OK + randomStatetest135.json OK -+ randomStatetest136.json OK + randomStatetest136.json Skip + randomStatetest137.json OK + randomStatetest138.json OK + randomStatetest139.json OK @@ -1103,7 +1103,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest158.json OK + randomStatetest159.json OK + randomStatetest16.json OK -+ randomStatetest160.json OK + randomStatetest160.json Skip + randomStatetest161.json OK + randomStatetest162.json OK + randomStatetest163.json OK @@ -1112,7 +1112,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest167.json OK + randomStatetest169.json OK + randomStatetest17.json OK -+ randomStatetest170.json OK + randomStatetest170.json Skip + randomStatetest171.json OK + randomStatetest172.json OK + randomStatetest173.json OK @@ -1163,12 +1163,12 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest220.json OK + randomStatetest221.json OK + randomStatetest222.json OK -+ randomStatetest223.json OK + randomStatetest223.json Skip + randomStatetest225.json OK + randomStatetest226.json OK + randomStatetest227.json OK + randomStatetest228.json OK -+ randomStatetest229.json OK + randomStatetest229.json Skip + randomStatetest23.json OK + randomStatetest230.json OK + randomStatetest231.json OK @@ -1178,7 +1178,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest237.json OK + randomStatetest238.json OK + randomStatetest24.json OK -+ randomStatetest241.json OK + randomStatetest241.json Skip + randomStatetest242.json OK + randomStatetest243.json OK + randomStatetest244.json OK @@ -1258,11 +1258,11 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest321.json OK + randomStatetest322.json OK + randomStatetest323.json OK -+ randomStatetest324.json OK + randomStatetest324.json Skip + randomStatetest325.json OK + randomStatetest326.json OK + randomStatetest327.json OK -+ randomStatetest328.json OK + randomStatetest328.json Skip + randomStatetest329.json OK + randomStatetest33.json OK + randomStatetest332.json OK @@ -1307,12 +1307,12 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest370.json OK + randomStatetest371.json OK + randomStatetest372.json OK -+ randomStatetest375.json OK + randomStatetest375.json Skip + randomStatetest376.json OK -+ randomStatetest377.json OK + randomStatetest377.json Skip + randomStatetest378.json OK + randomStatetest379.json OK -+ randomStatetest38.json OK + randomStatetest38.json Skip + randomStatetest380.json OK + randomStatetest381.json OK + randomStatetest382.json OK @@ -1323,7 +1323,7 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest42.json OK + randomStatetest43.json OK + randomStatetest45.json OK -+ randomStatetest46.json OK + randomStatetest46.json Skip + randomStatetest47.json OK + randomStatetest48.json OK + randomStatetest49.json OK @@ -1364,13 +1364,13 @@ OK: 0/16 Fail: 0/16 Skip: 16/16 + randomStatetest9.json OK + randomStatetest90.json OK + randomStatetest92.json OK -+ randomStatetest94.json OK + randomStatetest94.json Skip + randomStatetest95.json OK + randomStatetest96.json OK + randomStatetest97.json OK + randomStatetest98.json OK ``` -OK: 323/327 Fail: 0/327 Skip: 4/327 +OK: 309/327 Fail: 0/327 Skip: 18/327 ## stRandom2 ```diff + 201503110226PYTHON_DUP6.json OK @@ -1423,7 +1423,7 @@ OK: 323/327 Fail: 0/327 Skip: 4/327 + randomStatetest438.json OK + randomStatetest439.json OK + randomStatetest440.json OK -+ randomStatetest441.json OK + randomStatetest441.json Skip + randomStatetest442.json OK + randomStatetest443.json OK + randomStatetest444.json OK @@ -1519,7 +1519,7 @@ OK: 323/327 Fail: 0/327 Skip: 4/327 + randomStatetest546.json OK + randomStatetest547.json OK + randomStatetest548.json OK -+ randomStatetest549.json OK + randomStatetest549.json Skip + randomStatetest550.json OK + randomStatetest552.json OK + randomStatetest553.json OK @@ -1556,7 +1556,7 @@ OK: 323/327 Fail: 0/327 Skip: 4/327 + randomStatetest588.json OK + randomStatetest589.json OK + randomStatetest592.json OK -+ randomStatetest594.json OK + randomStatetest594.json Skip + randomStatetest596.json OK + randomStatetest597.json OK + randomStatetest599.json OK @@ -1575,7 +1575,7 @@ OK: 323/327 Fail: 0/327 Skip: 4/327 + randomStatetest615.json OK + randomStatetest616.json OK + randomStatetest618.json OK -+ randomStatetest619.json OK + randomStatetest619.json Skip + randomStatetest620.json OK + randomStatetest621.json OK + randomStatetest624.json OK @@ -1601,7 +1601,7 @@ OK: 323/327 Fail: 0/327 Skip: 4/327 + randomStatetest646.json OK + randomStatetest647.json OK ``` -OK: 225/227 Fail: 0/227 Skip: 2/227 +OK: 221/227 Fail: 0/227 Skip: 6/227 ## stRecursiveCreate ```diff + recursiveCreate.json OK @@ -2201,14 +2201,14 @@ OK: 271/284 Fail: 0/284 Skip: 13/284 + suicideCaller.json OK + suicideCallerAddresTooBigLeft.json OK + suicideCallerAddresTooBigRight.json OK -+ suicideCoinbase.json OK + suicideCoinbase.json Skip + suicideNotExistingAccount.json OK + suicideOrigin.json OK + suicideSendEtherPostDeath.json OK + suicideSendEtherToMe.json OK + testRandomTest.json OK ``` -OK: 57/67 Fail: 0/67 Skip: 10/67 +OK: 56/67 Fail: 0/67 Skip: 11/67 ## stTransactionTest ```diff + ContractStoreClearsOOG.json OK @@ -2239,11 +2239,11 @@ OK: 57/67 Fail: 0/67 Skip: 10/67 + SuicidesAndInternlCallSuicidesOOG.json OK + SuicidesAndInternlCallSuicidesSuccess.json OK + SuicidesAndSendMoneyToItselfEtherDestroyed.json OK -+ SuicidesMixingCoinbase.json OK + SuicidesMixingCoinbase.json Skip + SuicidesStopAfterSuicide.json OK + TransactionDataCosts652.json OK + TransactionFromCoinbaseHittingBlockGasLimit.json OK -+ TransactionFromCoinbaseHittingBlockGasLimit1.json OK + TransactionFromCoinbaseHittingBlockGasLimit1.json Skip + TransactionFromCoinbaseNotEnoughFounds.json OK + TransactionNonceCheck.json OK + TransactionNonceCheck2.json OK @@ -2256,7 +2256,7 @@ OK: 57/67 Fail: 0/67 Skip: 10/67 + UserTransactionZeroCost.json OK + UserTransactionZeroCostWithData.json OK ``` -OK: 44/44 Fail: 0/44 Skip: 0/44 +OK: 42/44 Fail: 0/44 Skip: 2/44 ## stTransitionTest ```diff + createNameRegistratorPerTxsAfter.json OK @@ -2645,4 +2645,4 @@ OK: 133/133 Fail: 0/133 Skip: 0/133 OK: 130/130 Fail: 0/130 Skip: 0/130 ---TOTAL--- -OK: 2343/2447 Fail: 0/2447 Skip: 104/2447 +OK: 2322/2447 Fail: 0/2447 Skip: 125/2447 diff --git a/nimbus/p2p/executor.nim b/nimbus/p2p/executor.nim index c769d66d1..f4a91d690 100644 --- a/nimbus/p2p/executor.nim +++ b/nimbus/p2p/executor.nim @@ -17,6 +17,7 @@ proc processTransaction*(tx: Transaction, sender: EthAddress, vmState: BaseVMSta vmState.touchedAccounts.incl(vmState.blockHeader.coinbase) var gasUsed = tx.gasLimit + var coinBaseSuicide = false block: if vmState.cumulativeGasUsed + gasUsed > vmState.blockHeader.gasLimit: @@ -48,15 +49,15 @@ proc processTransaction*(tx: Transaction, sender: EthAddress, vmState: BaseVMSta if not computation.shouldBurnGas: gasUsed = computation.refundGas(tx, sender) - if computation.isSuicided(vmState.blockHeader.coinbase): - gasUsed = 0 + coinBaseSuicide = computation.isSuicided(vmState.blockHeader.coinbase) vmState.cumulativeGasUsed += gasUsed # miner fee - let txFee = gasUsed.u256 * tx.gasPrice.u256 vmState.mutateStateDB: - db.addBalance(vmState.blockHeader.coinbase, txFee) + if not coinBaseSuicide: + let txFee = gasUsed.u256 * tx.gasPrice.u256 + db.addBalance(vmState.blockHeader.coinbase, txFee) # EIP158 state clearing for account in vmState.touchedAccounts: diff --git a/tests/test_blockchain_json.nim b/tests/test_blockchain_json.nim index 06189d51b..383ca1381 100644 --- a/tests/test_blockchain_json.nim +++ b/tests/test_blockchain_json.nim @@ -549,9 +549,13 @@ proc runTester(tester: var Tester, chainDB: BaseChainDB, testStatusIMPL: var Tes let shouldBeGoodBlock = testerBlock.blockHeader.isSome if shouldBeGoodBlock: - let (preminedBlock, minedBlock, blockRlp) = tester.applyFixtureBlockToChain( - testerBlock, chainDB, checkSeal, validation = false) # we manually validate below - check validateBlock(chainDB, preminedBlock, checkSeal) == true + try: + let (preminedBlock, minedBlock, blockRlp) = tester.applyFixtureBlockToChain( + testerBlock, chainDB, checkSeal, validation = false) # we manually validate below + check validateBlock(chainDB, preminedBlock, checkSeal) == true + except: + debugEcho "FATAL ERROR(WE HAVE BUG): ", getCurrentExceptionMsg() + else: var noError = true try: @@ -639,9 +643,10 @@ proc testFixture(node: JsonNode, testStatusIMPL: var TestStatus, debugMode = fal except ValidationError as E: echo "ERROR: ", E.msg success = false - finally: - if tester.debugMode: - tester.dumpDebugData(fixture, fixtureName, fixtureIndex, success) + + if tester.debugMode: + tester.dumpDebugData(fixture, fixtureName, fixtureIndex, success) + fixtureTested = true check success == true diff --git a/tests/test_generalstate_failing.nim b/tests/test_generalstate_failing.nim index 4031970b3..92218fb25 100644 --- a/tests/test_generalstate_failing.nim +++ b/tests/test_generalstate_failing.nim @@ -23,16 +23,13 @@ func allowedFailingGeneralStateTest*(folder, name: string): bool = "create2noCash.json", # bcStateTests - "SuicidesMixingCoinbase.json", "TransactionFromCoinbaseHittingBlockGasLimit1.json", "randomStatetest123.json", - "randomStatetest136.json", "randomStatetest160.json", "randomStatetest170.json", "randomStatetest223.json", "randomStatetest229.json", "randomStatetest241.json", - "randomStatetest324.json", "randomStatetest328.json", "randomStatetest375.json", "randomStatetest377.json", @@ -43,8 +40,6 @@ func allowedFailingGeneralStateTest*(folder, name: string): bool = "randomStatetest594.json", "randomStatetest619.json", "randomStatetest94.json", - "suicideCoinbase.json", - "suicideCoinbaseState.json", # bcRandomBlockhashTest "randomStatetest127BC.json",