diff options
Diffstat (limited to 'src/GeneralStateTestsFiller')
2 files changed, 374 insertions, 0 deletions
diff --git a/src/GeneralStateTestsFiller/stReturnDataTest/returndatacopy_following_too_big_transferFiller.json b/src/GeneralStateTestsFiller/stReturnDataTest/returndatacopy_following_too_big_transferFiller.json new file mode 100644 index 000000000..27bba6316 --- /dev/null +++ b/src/GeneralStateTestsFiller/stReturnDataTest/returndatacopy_following_too_big_transferFiller.json @@ -0,0 +1,70 @@ +{ + "returndatacopy_following_too_big_transfer" : { + "_info" : { + "comment" : "This test tries RETURNDATACOPY with a non-zero size after a CALL that fails because of insufficient balance." + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x20000", + "currentGasLimit" : "0x0a00000000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : [ + { "indexes" : { + "data" : -1, + "gas" : -1, + "value" : -1 + }, + "network" : ["EIP150", "EIP158", "Frontier", "Homestead", "Byzantium"], + "result" : { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { + "storage" : { + "0x00" : "0x01" + } + } + } + } + ], + "pre" : { + "0x0aabbccdd5c57f15886f9b263e2f6d2d6c7b5ec6" : { + "balance" : "0x00", + "code" : "{ (seq (MSTORE 0 0x0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffff) (RETURN 0 32)) }", + "nonce" : "0x00", + "storage" : { + } + }, + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6" : { + "balance" : "0x00", + "code" : "{ (seq (CALL 0x0900000000 0x0aabbccdd5c57f15886f9b263e2f6d2d6c7b5ec6 10000000 0 0 0 0) (RETURNDATACOPY 0 0 32) (SSTORE 0 200) )}", + "nonce" : "0x00", + "storage" : { + "0x00" : "0x01" + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x6400000000", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "" + ], + "gasLimit" : [ + "0x0a00000000" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "value" : [ + "0x00" + ] + } + } +} diff --git a/src/GeneralStateTestsFiller/stRevertTest/RevertOpcodeInCallsOnNonEmptyReturnDataFiller.json b/src/GeneralStateTestsFiller/stRevertTest/RevertOpcodeInCallsOnNonEmptyReturnDataFiller.json new file mode 100644 index 000000000..65c403041 --- /dev/null +++ b/src/GeneralStateTestsFiller/stRevertTest/RevertOpcodeInCallsOnNonEmptyReturnDataFiller.json @@ -0,0 +1,304 @@ +{ + "RevertOpcodeInCallsOnNonEmptyReturnData" : { + "_info" : { + "comment" : "This test checks that the returndata buffer is changed when a subcall REVERTs. In each test case, a non-empty returndata buffer is set up, and then calls into a contract that REVERTs." + }, + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "10000000", + "currentNumber" : "1", + "currentTimestamp" : "1000", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : [ + { + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : -1 + }, + "network" : ["Frontier", "Homestead", "EIP150", "EIP158"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "b0005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + } + } + }, + { + "indexes" : { + "data" : 0, + "gas" : 1, + "value" : -1 + }, + "network" : ["Frontier", "Homestead", "EIP150", "EIP158"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "b0005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + } + } + }, + { + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x0a" : "0x01" + } + }, + "b0005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "nonce" : "0", + "storage" : { + "0x02" : "0x01" + } + } + } + }, + { + "indexes" : { + "data" : 0, + "gas" : 1, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "b0005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + } + } + }, + { + "indexes" : { + "data" : 1, + "gas" : 0, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x0a" : "0x01" + } + }, + "b1005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "nonce" : "0", + "storage" : { + "0x02" : "0x01" + } + } + } + }, + { + "indexes" : { + "data" : 1, + "gas" : 1, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "b1005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + } + } + }, + { + "indexes" : { + "data" : 2, + "gas" : 0, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x0a" : "0x01" + } + }, + "b2005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "nonce" : "0", + "storage" : { + "0x02" : "0x01" + } + } + } + }, + { + "indexes" : { + "data" : 2, + "gas" : 1, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "b2005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + } + } + }, + { + "indexes" : { + "data" : 3, + "gas" : 0, + "value" : -1 + }, + "network" : ["Byzantium"], + "result" : { + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x0a" : "0x01" + } + }, + "b3005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "nonce" : "0", + "storage" : { + "0x00" : "0x01" + } + }, + "b3305374fce5edbc8e2a8697c15331677e6ebf0b" : { + "nonce" : "0", + "storage" : { + "0x05" : "0x01" + } + } + } + } + ], + "pre" : + { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000", + "code" : "", + "nonce" : "0", + "storage" : { + } + }, + "094f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[10]] (CALL 260000 (CALLDATALOAD 0) 0 0 0 0 0)}", + "nonce" : "0", + "storage" : { + "0x0a" : "0xff" + } + }, + "b0005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[0]] (CALL 50000 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[2]] (RETURNDATASIZE) }", + "nonce" : "0", + "storage" : { + } + }, + "b1005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[0]] (CALLCODE 50000 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[2]] (RETURNDATASIZE) }", + "nonce" : "0", + "storage" : { + } + }, + "b2005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[0]] (DELEGATECALL 50000 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0) [[2]] (RETURNDATASIZE) }", + "nonce" : "0", + "storage" : { + } + }, + "b3005374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[0]] (CALL 100000 0xb3305374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[2]] (RETURNDATASIZE) }", + "nonce" : "0", + "storage" : { + } + }, + "b3305374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "code" : "{ (CALL 0 0xffff5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[4]] (CALL 50000 0xc94f5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 0 0 0) [[5]] (RETURNDATASIZE) }", + "nonce" : "0", + "storage" : { + } + }, + "c94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "//comment" : "Recording it's called at [[1]], and reverting. The store into [[3]] should not be reached.", + "code" : "{ [[1]] 12 (REVERT 0 1) [[3]] 13 }", + "nonce" : "0", + "storage" : { + } + }, + "ffff5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1", + "// comment" : "This should return 12 as a return value. This sets the returndata buffer of the caller to be 64-byte long.", + "code" : "{ [1] 12 (RETURN 0 64) }", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x000000000000000000000000b0005374fce5edbc8e2a8697c15331677e6ebf0b", + "0x000000000000000000000000b1005374fce5edbc8e2a8697c15331677e6ebf0b", + "0x000000000000000000000000b2005374fce5edbc8e2a8697c15331677e6ebf0b", + "0x000000000000000000000000b3005374fce5edbc8e2a8697c15331677e6ebf0b" + ], + "gasLimit" : [ + "860000", "28000" + ], + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "094f5374fce5edbc8e2a8697c15331677e6ebf0b", + "value" : [ + "0" + ] + } + } +} |