aboutsummaryrefslogtreecommitdiffstats
path: root/src/GeneralStateTestsFiller
diff options
context:
space:
mode:
authorYoichi Hirai <i@yoichihirai.com>2017-09-29 16:11:24 +0800
committerGitHub <noreply@github.com>2017-09-29 16:11:24 +0800
commit883d2de442781548d178824db7cfbe0b3fbc0b9a (patch)
treeaaf919aeae4fa4ecfe50e8d8d5ab81fc66967e62 /src/GeneralStateTestsFiller
parentb394c6b97c05a15d19d84c7aa9d50629ab0b1171 (diff)
parentd6dd9704757b1f27c2fe7aad72f6c04bcb80d8f9 (diff)
downloaddexon-tests-883d2de442781548d178824db7cfbe0b3fbc0b9a.tar.gz
dexon-tests-883d2de442781548d178824db7cfbe0b3fbc0b9a.tar.zst
dexon-tests-883d2de442781548d178824db7cfbe0b3fbc0b9a.zip
Merge pull request #338 from ethereum/revert_should_reset_returndata
Add tests that set up a nonempty returndata buffer and then call something that reverts
Diffstat (limited to 'src/GeneralStateTestsFiller')
-rw-r--r--src/GeneralStateTestsFiller/stRevertTest/RevertOpcodeInCallsOnNonEmptyReturnDataFiller.json304
1 files changed, 304 insertions, 0 deletions
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"
+ ]
+ }
+ }
+}