diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStart.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStart.json new file mode 100644 index 00000000000..877529b2f08 --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStart.json @@ -0,0 +1,63 @@ +{ + "initMalformedBytecodeHasStart" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFiller.yml", + "sourceHash" : "f0387d272d2bca92b72928765acbdf844e4d83a6e7725e73fc2bc93ee6892700" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0xa8398e170adc0d080f94b737c11aaabac17f09354f9ebf0b84b92d2bff060638", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd" : { + "balance" : "0x174876e800", + "code" : "0x0061736d0100000001110360047f7f7f7f017f60027f7f00600000022b0208657468657265756d06637265617465000008657468657265756d0c73746f7261676553746f72650001030201020503010001071102066d656d6f72790200046d61696e00020a42014001077f410021004120210141c000210241e00021034180012104418002210541d30021062003200420052006200110003602002000200110012002200310010b0ba501030041000b2000000000000000000000000000000000000000000000000000000000000000000041c0000b200000000000000000000000000000000000000000000000000000000000000001004180020b530061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001071102066d656d6f72790200046d61696e00010801010a0a0108004100410010000b", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStartFromTx.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStartFromTx.json new file mode 100644 index 00000000000..6115238ab94 --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeHasStartFromTx.json @@ -0,0 +1,56 @@ +{ + "initMalformedBytecodeHasStartFromTx" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFromTxFiller.yml", + "sourceHash" : "689ee2ed2ad8dd57727eca547e9917a0c97387875f5011a7e9af020d13f14153" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0x60f7870ae7c1fb1176a96382cbfe1c1dfc83cb08081728a7396e901a70832a36", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x0061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001071102066d656d6f72790200046d61696e00010801010a0a0108004100410010000b" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExport.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExport.json new file mode 100644 index 00000000000..b78cf370f48 --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExport.json @@ -0,0 +1,63 @@ +{ + "initMalformedBytecodeMissingMemoryExport" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFiller.yml", + "sourceHash" : "e4b5346e9e71459943c9d54712567e406db3b7d24237b59bbba5e446999edde9" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0xe166d49badd8b4cbe1c937fab6fdd6a698133124e00d4af5c49bff5588f82448", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd" : { + "balance" : "0x174876e800", + "code" : "0x0061736d0100000001110360047f7f7f7f017f60027f7f00600000022b0208657468657265756d06637265617465000008657468657265756d0c73746f7261676553746f72650001030201020503010001071102066d656d6f72790200046d61696e00020a42014001077f410021004120210141c000210241e00021034180012104418002210541c70021062003200420052006200110003602002000200110012002200310010b0b9901030041000b2000000000000000000000000000000000000000000000000000000000000000000041c0000b200000000000000000000000000000000000000000000000000000000000000001004180020b470061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001070801046d61696e00010a0a0108004100410010000b", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTx.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTx.json new file mode 100644 index 00000000000..24a1e6abe9b --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTx.json @@ -0,0 +1,56 @@ +{ + "initMalformedBytecodeMissingMemoryExportFromTx" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTxFiller.yml", + "sourceHash" : "3f50d279d60b59b0cf59ed433e3e5a9f2ef8fbc614955ae6e9341abce6d772e2" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0x60f7870ae7c1fb1176a96382cbfe1c1dfc83cb08081728a7396e901a70832a36", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x0061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001070801046d61696e00010a0a0108004100410010000b" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMain.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMain.json new file mode 100644 index 00000000000..8c1d01a970d --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMain.json @@ -0,0 +1,63 @@ +{ + "initMalformedBytecodeNoMain" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFiller.yml", + "sourceHash" : "b5e88f6c8d7a65aaa61081b2e34d3d1b87e1f0b8781fefe3e8a6d505d2e39a99" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0x88aaafa2fad9b006db7154abe2144acc7f38ccf64a29acaba5b8b8b2f270fe62", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd" : { + "balance" : "0x174876e800", + "code" : "0x0061736d0100000001110360047f7f7f7f017f60027f7f00600000022b0208657468657265756d06637265617465000008657468657265756d0c73746f7261676553746f72650001030201020503010001071102066d656d6f72790200046d61696e00020a41013f01077f410021004120210141c000210241e000210341800121044180022105413621062003200420052006200110003602002000200110012002200310010b0b8801030041000b2000000000000000000000000000000000000000000000000000000000000000000041c0000b200000000000000000000000000000000000000000000000000000000000000001004180020b360061736d0100000001060160027f7f0002130108657468657265756d0666696e69736800000503010001070a01066d656d6f72790200", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMainFromTx.json b/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMainFromTx.json new file mode 100644 index 00000000000..a9c936febb1 --- /dev/null +++ b/GeneralStateTests/stEWASMTests/initMalformedBytecodeNoMainFromTx.json @@ -0,0 +1,56 @@ +{ + "initMalformedBytecodeNoMainFromTx" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFromTxFiller.yml", + "sourceHash" : "3cb846ae3332bdfac23f669b38830ac5c868757a2b64f4fd0fb7efcd9f7c2280" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0x60f7870ae7c1fb1176a96382cbfe1c1dfc83cb08081728a7396e901a70832a36", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x0061736d0100000001060160027f7f0002130108657468657265756d0666696e69736800000503010001070a01066d656d6f72790200" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStart.json b/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStart.json new file mode 100644 index 00000000000..339e0e31074 --- /dev/null +++ b/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStart.json @@ -0,0 +1,63 @@ +{ + "storedMalformedBytecodeHasStart" : { + "_info" : { + "comment" : "", + "filledwith" : "testeth 1.4.0", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", + "source" : "src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFiller.yml", + "sourceHash" : "4943bb5c4affb591e7f745649a7fce52890608273e2a81baa0c3e2f004f9e532" + }, + "env" : { + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "Byzantium" : [ + { + "hash" : "0x783ef872ba879c8a4a3c60abd90a65839d50913a44c2780f8c0e5df94b7b4f2f", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x174876e800", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd" : { + "balance" : "0x174876e800", + "code" : "0x0061736d0100000001110360047f7f7f7f017f60027f7f00600000022b0208657468657265756d06637265617465000008657468657265756d0c73746f7261676553746f72650001030201020503010001071102066d656d6f72790200046d61696e00020a42014001077f410021004120210141c000210241e00021034180012104418002210541ac0121062003200420052006200110003602002000200110012002200310010b0bff01030041000b2000000000000000000000000000000000000000000000000000000000000000000041c0000b200000000000000000000000000000000000000000000000000000000000000001004180020bac010061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001071102066d656d6f72790200046d61696e00010a0b010900410041d30010000b0b59010041000b530061736d0100000001090260027f7f0060000002130108657468657265756d0666696e6973680000030201010503010001071102066d656d6f72790200046d61696e00010801010a0a0108004100410010000b", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x" + ], + "gasLimit" : [ + "0x5000001" + ], + "gasPrice" : "0x01", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStartFromTx.json b/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStartFromTx.json index 57d1d77b363..2d265243654 100644 --- a/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStartFromTx.json +++ b/GeneralStateTests/stEWASMTests/storedMalformedBytecodeHasStartFromTx.json @@ -3,9 +3,9 @@ "_info" : { "comment" : "", "filledwith" : "testeth 1.4.0", - "lllcversion" : "Version: 0.4.20-develop.2017.12.3+commit.4cad0b22.Linux.g++", + "lllcversion" : "Version: 0.4.20-develop.2018.1.14+commit.0c20b6da.Darwin.appleclang", "source" : "src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFromTxFiller.yml", - "sourceHash" : "13c2545e9978c4c65333994041d9ee2dffd40a719a50018b9c71f020caebebe0" + "sourceHash" : "2993bd8bd3dc94475c65a193fd7372aa3d8412de641b19aaad3a0d87d1076a63" }, "env" : { "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFiller.yml new file mode 100644 index 00000000000..549ad58d32b --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFiller.yml @@ -0,0 +1,130 @@ +# Test malformed bytecode (has start) in init on create +initMalformedBytecodeHasStart: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + # WASM source for compiled code, below: + # a000000000000000000000000000000000000001: + # balance: '0' + # nonce: '' + # storage: {} + # code: | + # (module + # (import "ethereum" "finish" (func $finish (param i32 i32))) + # (memory 1) + # (export "memory" (memory 0)) + # (export "main" (func $main)) + + # ;; this start section leads to malformed bytecode + # (start $main) + + # (func $main + # (call $finish + # (i32.const 0) + # (i32.const 0) + # ) + # ) + # ) + # main contract, tx receiver + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + balance: '100000000000' + code: | + (module + (import "ethereum" "create" (func $create (param i32 i32 i32 i32) (result i32))) + (import "ethereum" "storageStore" (func $storageStore (param i32 i32))) + + (memory 1) + ;; the inner contract to create + ;; see WASM source for compiled code, above + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; key1 + (data (i32.const 64) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01") ;; key2 + (data (i32.const 256) "\00\61\73\6d\01\00\00\00\01\09\02\60\02\7f\7f\00\60\00\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\03\02\01\01\05\03\01\00\01\07\11\02\06\6d\65\6d\6f\72\79\02\00\04\6d\61\69\6e\00\01\08\01\01\0a\0a\01\08\00\41\00\41\00\10\00\0b") ;; init code + (export "memory" (memory 0)) + (export "main" (func $main)) + + (func $main + ;; memory layout + (local $memStoragekey1 i32) + (local $memStorageval1 i32) + (local $memStoragekey2 i32) + (local $memStorageval2 i32) + (local $memValue i32) + (local $memCode i32) + (local $codeLen i32) + + (set_local $memStoragekey1 (i32.const 0)) + (set_local $memStorageval1 (i32.const 32)) + (set_local $memStoragekey2 (i32.const 64)) + (set_local $memStorageval2 (i32.const 96)) + (set_local $memValue (i32.const 128)) + (set_local $memCode (i32.const 256)) + (set_local $codeLen (i32.const 83)) + + ;; we expect this to fail + (i32.store + (get_local $memStorageval2) + (call $create + ;; value offset + (get_local $memValue) + ;; data offset + (get_local $memCode) + ;; data length + (get_local $codeLen) + ;; result offset (new contract address) + (get_local $memStorageval1) + ) + ) + + ;; store the result (new contract address) + (call $storageStore + (get_local $memStoragekey1) + (get_local $memStorageval1) + ) + + ;; store the result of the CREATE + (call $storageStore + (get_local $memStoragekey2) + (get_local $memStorageval2) + ) + ) + ) + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99917398810' + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + # expect CREATE to return 1 (failure), and no created contract address + storage: { + 0: '', + 1: '0x0100000000000000000000000000000000000000000000000000000000000000', + } + transaction: + data: + - '' + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFromTxFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFromTxFiller.yml new file mode 100644 index 00000000000..00aad2b5fbb --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeHasStartFromTxFiller.yml @@ -0,0 +1,57 @@ +# Test malformed bytecode (has start) in init on create from tx +initMalformedBytecodeHasStartFromTx: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99916113919' + # newly-created contract + # expect code to be empty since create should fail + 6295ee1b4f6dd65047762f924ecd367c17eabf8f: + shouldnotexist: 1 + transaction: + data: + - | + (module + (import "ethereum" "finish" (func $finish (param i32 i32))) + (memory 1) + (export "memory" (memory 0)) + (export "main" (func $main)) + + ;; this start section leads to malformed bytecode + (start $main) + + (func $main + (call $finish + (i32.const 0) + (i32.const 0) + ) + ) + ) + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: '' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFiller.yml new file mode 100644 index 00000000000..1843e337fda --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFiller.yml @@ -0,0 +1,126 @@ +# Test malformed bytecode (has start) in init on create +initMalformedBytecodeMissingMemoryExport: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + # WASM source for compiled code, below: + # a000000000000000000000000000000000000001: + # balance: '0' + # nonce: '' + # storage: {} + # code: | + # (module + # (import "ethereum" "finish" (func $finish (param i32 i32))) + # (memory 1) + # ;; memory export missing + # (export "main" (func $main)) + # (func $main + # (call $finish + # (i32.const 0) + # (i32.const 0) + # ) + # ) + # ) + # main contract, tx receiver + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + balance: '100000000000' + code: | + (module + (import "ethereum" "create" (func $create (param i32 i32 i32 i32) (result i32))) + (import "ethereum" "storageStore" (func $storageStore (param i32 i32))) + + (memory 1) + ;; the inner contract to create + ;; see WASM source for compiled code, above + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; key1 + (data (i32.const 64) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01") ;; key2 + (data (i32.const 256) "\00\61\73\6d\01\00\00\00\01\09\02\60\02\7f\7f\00\60\00\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\03\02\01\01\05\03\01\00\01\07\08\01\04\6d\61\69\6e\00\01\0a\0a\01\08\00\41\00\41\00\10\00\0b") ;; init code + (export "memory" (memory 0)) + (export "main" (func $main)) + + (func $main + ;; memory layout + (local $memStoragekey1 i32) + (local $memStorageval1 i32) + (local $memStoragekey2 i32) + (local $memStorageval2 i32) + (local $memValue i32) + (local $memCode i32) + (local $codeLen i32) + + (set_local $memStoragekey1 (i32.const 0)) + (set_local $memStorageval1 (i32.const 32)) + (set_local $memStoragekey2 (i32.const 64)) + (set_local $memStorageval2 (i32.const 96)) + (set_local $memValue (i32.const 128)) + (set_local $memCode (i32.const 256)) + (set_local $codeLen (i32.const 71)) + + ;; we expect this to fail + (i32.store + (get_local $memStorageval2) + (call $create + ;; value offset + (get_local $memValue) + ;; data offset + (get_local $memCode) + ;; data length + (get_local $codeLen) + ;; result offset (new contract address) + (get_local $memStorageval1) + ) + ) + + ;; store the result (new contract address) + (call $storageStore + (get_local $memStoragekey1) + (get_local $memStorageval1) + ) + + ;; store the result of the CREATE + (call $storageStore + (get_local $memStoragekey2) + (get_local $memStorageval2) + ) + ) + ) + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99917398810' + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + # expect CREATE to return 1 (failure), and no created contract address + storage: { + 0: '', + 1: '0x0100000000000000000000000000000000000000000000000000000000000000', + } + transaction: + data: + - '' + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTxFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTxFiller.yml new file mode 100644 index 00000000000..80888f41892 --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeMissingMemoryExportFromTxFiller.yml @@ -0,0 +1,54 @@ +# Test malformed bytecode (has start) in init on create from tx +initMalformedBytecodeMissingMemoryExportFromTx: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99916113919' + # newly-created contract + # expect code to be empty since create should fail + 6295ee1b4f6dd65047762f924ecd367c17eabf8f: + shouldnotexist: 1 + transaction: + data: + - | + (module + (import "ethereum" "finish" (func $finish (param i32 i32))) + (memory 1) + ;; missing memory export + (export "main" (func $main)) + + (func $main + (call $finish + (i32.const 0) + (i32.const 0) + ) + ) + ) + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: '' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFiller.yml new file mode 100644 index 00000000000..86473ed81bd --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFiller.yml @@ -0,0 +1,120 @@ +# Test malformed bytecode (has start) in init on create +initMalformedBytecodeNoMain: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + # WASM source for compiled code, below: + # a000000000000000000000000000000000000001: + # balance: '0' + # nonce: '' + # storage: {} + # code: | + # (module + # (import "ethereum" "finish" (func $finish (param i32 i32))) + # (memory 1) + # (export "memory" (memory 0)) + # ;; no "main" export or definition + # ) + # main contract, tx receiver + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + balance: '100000000000' + code: | + (module + (import "ethereum" "create" (func $create (param i32 i32 i32 i32) (result i32))) + (import "ethereum" "storageStore" (func $storageStore (param i32 i32))) + + (memory 1) + ;; the inner contract to create + ;; see WASM source for compiled code, above + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; key1 + (data (i32.const 64) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01") ;; key2 + (data (i32.const 256) "\00\61\73\6d\01\00\00\00\01\06\01\60\02\7f\7f\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\05\03\01\00\01\07\0a\01\06\6d\65\6d\6f\72\79\02\00") ;; init code + (export "memory" (memory 0)) + (export "main" (func $main)) + + (func $main + ;; memory layout + (local $memStoragekey1 i32) + (local $memStorageval1 i32) + (local $memStoragekey2 i32) + (local $memStorageval2 i32) + (local $memValue i32) + (local $memCode i32) + (local $codeLen i32) + + (set_local $memStoragekey1 (i32.const 0)) + (set_local $memStorageval1 (i32.const 32)) + (set_local $memStoragekey2 (i32.const 64)) + (set_local $memStorageval2 (i32.const 96)) + (set_local $memValue (i32.const 128)) + (set_local $memCode (i32.const 256)) + (set_local $codeLen (i32.const 54)) + + ;; we expect this to fail + (i32.store + (get_local $memStorageval2) + (call $create + ;; value offset + (get_local $memValue) + ;; data offset + (get_local $memCode) + ;; data length + (get_local $codeLen) + ;; result offset (new contract address) + (get_local $memStorageval1) + ) + ) + + ;; store the result (new contract address) + (call $storageStore + (get_local $memStoragekey1) + (get_local $memStorageval1) + ) + + ;; store the result of the CREATE + (call $storageStore + (get_local $memStoragekey2) + (get_local $memStorageval2) + ) + ) + ) + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99917398810' + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + # expect CREATE to return 1 (failure), and no created contract address + storage: { + 0: '', + 1: '0x0100000000000000000000000000000000000000000000000000000000000000', + } + transaction: + data: + - '' + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFromTxFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFromTxFiller.yml new file mode 100644 index 00000000000..553123ee8c5 --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/initMalformedBytecodeNoMainFromTxFiller.yml @@ -0,0 +1,47 @@ +# Test malformed bytecode (no main) in init on create from tx +initMalformedBytecodeNoMainFromTx: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99916113919' + # newly-created contract + # expect code to be empty since create should fail + 6295ee1b4f6dd65047762f924ecd367c17eabf8f: + shouldnotexist: 1 + transaction: + data: + - | + (module + (import "ethereum" "finish" (func $finish (param i32 i32))) + (memory 1) + (export "memory" (memory 0)) + ;; no "main" export + ) + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: '' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFiller.yml new file mode 100644 index 00000000000..047ecd59722 --- /dev/null +++ b/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFiller.yml @@ -0,0 +1,146 @@ +# Test malformed bytecode (has start) in init on create +storedMalformedBytecodeHasStart: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + pre: + # tx sender + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '100000000000' + code: '' + nonce: '' + storage: {} + # inner source + # a000000000000000000000000000000000000001: + # balance: '0' + # nonce: '' + # storage: {} + # code: | + # (module + # (import "ethereum" "finish" (func $finish (param i32 i32))) + # (memory 1) + # (export "memory" (memory 0)) + # (export "main" (func $main)) + + # ;; this start section leads to malformed bytecode + # (start $main) + + # (func $main + # (call $finish + # (i32.const 0) + # (i32.const 0) + # ) + # ) + # ) + # outer source + # code: | + # (module + # (import "ethereum" "finish" (func $finish (param i32 i32))) + # (memory 1) + # (data (i32.const 0) "\00\61\73\6d\01\00\00\00\01\09\02\60\02\7f\7f\00\60\00\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\03\02\01\01\05\03\01\00\01\07\11\02\06\6d\65\6d\6f\72\79\02\00\04\6d\61\69\6e\00\01\08\01\01\0a\0a\01\08\00\41\00\41\00\10\00\0b") + # (export "memory" (memory 0)) + # (export "main" (func $main)) + # (start $main) + # (func $main + # (call $finish + # (i32.const 0) + # (i32.const 83) + # ) + # ) + # ) + # main contract, tx receiver + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + balance: '100000000000' + code: | + (module + (import "ethereum" "create" (func $create (param i32 i32 i32 i32) (result i32))) + (import "ethereum" "storageStore" (func $storageStore (param i32 i32))) + + (memory 1) + ;; the inner contract to create + ;; see WASM source for compiled code, above + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; key1 + (data (i32.const 64) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01") ;; key2 + (data (i32.const 256) "\00\61\73\6d\01\00\00\00\01\09\02\60\02\7f\7f\00\60\00\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\03\02\01\01\05\03\01\00\01\07\11\02\06\6d\65\6d\6f\72\79\02\00\04\6d\61\69\6e\00\01\0a\0b\01\09\00\41\00\41\d3\00\10\00\0b\0b\59\01\00\41\00\0b\53\00\61\73\6d\01\00\00\00\01\09\02\60\02\7f\7f\00\60\00\00\02\13\01\08\65\74\68\65\72\65\75\6d\06\66\69\6e\69\73\68\00\00\03\02\01\01\05\03\01\00\01\07\11\02\06\6d\65\6d\6f\72\79\02\00\04\6d\61\69\6e\00\01\08\01\01\0a\0a\01\08\00\41\00\41\00\10\00\0b") ;; init code + (export "memory" (memory 0)) + (export "main" (func $main)) + + (func $main + ;; memory layout + (local $memStoragekey1 i32) + (local $memStorageval1 i32) + (local $memStoragekey2 i32) + (local $memStorageval2 i32) + (local $memValue i32) + (local $memCode i32) + (local $codeLen i32) + + (set_local $memStoragekey1 (i32.const 0)) + (set_local $memStorageval1 (i32.const 32)) + (set_local $memStoragekey2 (i32.const 64)) + (set_local $memStorageval2 (i32.const 96)) + (set_local $memValue (i32.const 128)) + (set_local $memCode (i32.const 256)) + (set_local $codeLen (i32.const 172)) + + ;; we expect this to fail + (i32.store + (get_local $memStorageval2) + (call $create + ;; value offset + (get_local $memValue) + ;; data offset + (get_local $memCode) + ;; data length + (get_local $codeLen) + ;; result offset (new contract address) + (get_local $memStorageval1) + ) + ) + + ;; store the result (new contract address) + (call $storageStore + (get_local $memStoragekey1) + (get_local $memStorageval1) + ) + + ;; store the result of the CREATE + (call $storageStore + (get_local $memStoragekey2) + (get_local $memStorageval2) + ) + ) + ) + nonce: '' + storage: {} + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - ALL + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: '99917398810' + abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd: + # expect CREATE to return 1 (failure), and no created contract address + storage: { + 0: '', + 1: '0x0100000000000000000000000000000000000000000000000000000000000000', + } + transaction: + data: + - '' + gasLimit: + - '0x5000001' + gasPrice: '0x01' + nonce: '0x00' + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: 'abcdabcdabcdabcdabcdabcdabcdabcdabcdabcd' + value: + - '0' diff --git a/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFromTxFiller.yml b/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFromTxFiller.yml index de50a15341f..efebfc4542d 100644 --- a/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFromTxFiller.yml +++ b/src/GeneralStateTestsFiller/stEWASMTests/storedMalformedBytecodeHasStartFromTxFiller.yml @@ -1,3 +1,4 @@ +# Test malformed bytecode (has start) in init on create from tx storedMalformedBytecodeHasStartFromTx: env: currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba @@ -7,6 +8,7 @@ storedMalformedBytecodeHasStartFromTx: currentTimestamp: '1000' previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 pre: + # tx sender a94f5374fce5edbc8e2a8697c15331677e6ebf0b: balance: '100000000000' code: '' @@ -15,13 +17,15 @@ storedMalformedBytecodeHasStartFromTx: expect: - indexes: data: !!int -1 - gas: !!int -1 + gas: !!int -1 value: !!int -1 network: - ALL result: a94f5374fce5edbc8e2a8697c15331677e6ebf0b: balance: '99916113919' + # newly-created contract + # expect code to be empty since create should fail 6295ee1b4f6dd65047762f924ecd367c17eabf8f: shouldnotexist: "1" transaction: