diff options
author | winsvega <winsvega@mail.ru> | 2018-11-09 21:01:41 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-09 21:01:41 +0800 |
commit | 6f9575214a707d6b38b473aba0b271c95c560478 (patch) | |
tree | 57984b67a090e4f458d49d9efd24b388fca0322e /src | |
parent | 080c4193798e771c13b95d0dadca616cd8298a49 (diff) | |
parent | c5d58d235b632c87e386352d4fab4857283b874f (diff) | |
download | dexon-tests-6f9575214a707d6b38b473aba0b271c95c560478.tar.gz dexon-tests-6f9575214a707d6b38b473aba0b271c95c560478.tar.zst dexon-tests-6f9575214a707d6b38b473aba0b271c95c560478.zip |
Merge pull request #538 from ajsutton/memory-write-tests
Tests where data is copied to a memory range longer than the data itself
Diffstat (limited to 'src')
8 files changed, 783 insertions, 0 deletions
diff --git a/src/BlockchainTestsFiller/GeneralStateTests/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTests_d0g0v0Filler.json b/src/BlockchainTestsFiller/GeneralStateTests/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTests_d0g0v0Filler.json new file mode 100644 index 000000000..e0bc8b3e9 --- /dev/null +++ b/src/BlockchainTestsFiller/GeneralStateTests/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTests_d0g0v0Filler.json @@ -0,0 +1,135 @@ +{ + "ExtCodeCopyTargetRangeLongerThanCodeTests_d0g0v0" : { + "_info" : { + "comment" : "Uses EXTCODECOPY to copy 32 bytes of code into a 64 byte range of memory and ensures that the last 32 bytes of the memory range are zeroed out" + }, + "blocks" : [ + { + "blockHeaderPremine" : { + "difficulty" : "0x020000", + "gasLimit" : "0x7fffffffffffffff", + "timestamp" : "0x03e8", + "updatePoW" : "1" + }, + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x061a80", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x04c67190aa6e36769187121480435a41efa7d46cfe676e416ca5b3a1dc0ab29b", + "s" : "0x583105dc4153b04086ba000b9dc25af01145974222931ab105301d8c455176e9", + "to" : "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b", + "v" : "0x1b", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "expect" : [ + { + "network" : "Frontier", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Homestead", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP150", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP158", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Byzantium", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Constantinople", + "result" : { + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + } + ], + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "0x7fffffffffffffff", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0xffffffffffffffffffffffffffffffff", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + }, + "0xaaaf5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x1b58", + "code" : "0x61123460205260406000600073eeef5374fce5edbc8e2a8697c15331677e6ebf0b3c60005160005560205160015561567860605260406000604073a94f5374fce5edbc8e2a8697c15331677e6ebf0b3c604051600255606051600355", + "nonce" : "0x00", + "storage" : { + } + }, + "0xeeef5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x1122334455667788991011121314151617181920212223242526272829303132", + "nonce" : "0x01", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +}
\ No newline at end of file diff --git a/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverInvalidSignature_d0g0v0Filler.json b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverInvalidSignature_d0g0v0Filler.json new file mode 100644 index 000000000..af2ed300e --- /dev/null +++ b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverInvalidSignature_d0g0v0Filler.json @@ -0,0 +1,128 @@ +{ + "CallEcrecoverInvalidSignature_d0g0v0" : { + "_info" : { + "comment" : "CALL to ECREC precompile with input which is a completely invalid signature and a 32 byte output range in memory. ECREC should return an empty response and the 32 byte output range should be left unchanged." + }, + "blocks" : [ + { + "blockHeaderPremine" : { + "difficulty" : "0x020000", + "gasLimit" : "0x989680", + "timestamp" : "0x03e8", + "updatePoW" : "1" + }, + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x37ba90", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x3fcfff9e4085fc94af03ad71daa986e585e5b354c2b414a134e0624796a30d8e", + "s" : "0x72000b0edcceb7d4c1c5b6fed5bd5fcb74789702f3f171f1cd75c617bbb379cd", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1b", + "value" : "0x0186a0" + } + ], + "uncleHeaders" : [ + ] + } + ], + "expect" : [ + { + "network" : "Frontier", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Homestead", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP150", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP158", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Byzantium", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Constantinople", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + } + ], + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "0x989680", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01312d00", + "code" : "0x7f1122334455667788991011121314151617181920212223242526272829303132608052602060806080600060006001620493e0f150608051600055", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +}
\ No newline at end of file diff --git a/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverUnrecoverableKey_d0g0v0Filler.json b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverUnrecoverableKey_d0g0v0Filler.json new file mode 100644 index 000000000..42d642af5 --- /dev/null +++ b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallEcrecoverUnrecoverableKey_d0g0v0Filler.json @@ -0,0 +1,128 @@ +{ + "CallEcrecoverUnrecoverableKey_d0g0v0" : { + "_info" : { + "comment" : "CALL to ECREC precompile with input that has a valid signature structure but that does not recover a valid key. Specifies a 32 byte output range in memory. ECREC should return an empty response and the 32 byte output range should be left unchanged." + }, + "blocks" : [ + { + "blockHeaderPremine" : { + "difficulty" : "0x020000", + "gasLimit" : "0x989680", + "timestamp" : "0x03e8", + "updatePoW" : "1" + }, + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x37ba90", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0x3fcfff9e4085fc94af03ad71daa986e585e5b354c2b414a134e0624796a30d8e", + "s" : "0x72000b0edcceb7d4c1c5b6fed5bd5fcb74789702f3f171f1cd75c617bbb379cd", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1b", + "value" : "0x0186a0" + } + ], + "uncleHeaders" : [ + ] + } + ], + "expect" : [ + { + "network" : "Frontier", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Homestead", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP150", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "EIP158", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Byzantium", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + }, + { + "network" : "Constantinople", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + } + ], + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "0x989680", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01312d00", + "code" : "0x7fa8b53bdf3306a35a7103ab5504a0c9b492295564b6202b1942a84ef300107281600052601b6020527f30783565316530336635336365313862373732636362303039336666373166336040527f66353366356337356237346463623331613835616138623838393262346538626060527f1122334455667788991011121314151617181920212223242526272829303132608052602060806080600060006001620493e0f150608051600055", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +}
\ No newline at end of file diff --git a/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutput_d0g0v0Filler.json b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutput_d0g0v0Filler.json new file mode 100644 index 000000000..5b318bebe --- /dev/null +++ b/src/BlockchainTestsFiller/GeneralStateTests/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutput_d0g0v0Filler.json @@ -0,0 +1,128 @@ +{ + "CallIdentity_6_inputShorterThanOutput_d0g0v0" : { + "_info" : { + "comment" : "CALL to ID precompile with 32 bytes of input and a 64 byte output range. The lower 32 bytes of the output range should be set to the input and the higher 32 bytes left unchanged." + }, + "blocks" : [ + { + "blockHeaderPremine" : { + "difficulty" : "0x020000", + "gasLimit" : "0x989680", + "timestamp" : "0x03e8", + "updatePoW" : "1" + }, + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x989680", + "gasPrice" : "0x01", + "nonce" : "0x00", + "r" : "0xc8c5469bcab2d89c9083cecdf26c9d3a9e40597d1d82744bc0e5e582f9dc48a4", + "s" : "0x433eb07127e317522d4e08b89cd3824eee8bf1c75a2871db940e0c54d0dd09d2", + "to" : "0x095e7baea6a6c7c4c2dfeb977efac326af552d87", + "v" : "0x1c", + "value" : "0x0186a0" + } + ], + "uncleHeaders" : [ + ] + } + ], + "expect" : [ + { + "network" : "Frontier", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + }, + { + "network" : "Homestead", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + }, + { + "network" : "EIP150", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + }, + { + "network" : "EIP158", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + }, + { + "network" : "Byzantium", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + }, + { + "network" : "Constantinople", + "result" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + } + ], + "genesisBlockHeader" : { + "bloom" : "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "131072", + "extraData" : "0x42", + "gasLimit" : "0x989680", + "gasUsed" : "0", + "mixHash" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "nonce" : "0x0102030405060708", + "number" : "0", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0xf99eb1626cfa6db435c0836235942d7ccaa935f1ae247d3f1c21e495685f903a", + "timestamp" : "0x03b6", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "pre" : { + "0x095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "0x01312d00", + "code" : "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600052611234602052604060006020600060006004610258f150602051600055", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0de0b6b3a7640000", + "code" : "", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +}
\ No newline at end of file diff --git a/src/GeneralStateTestsFiller/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTestsFiller.json b/src/GeneralStateTestsFiller/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTestsFiller.json new file mode 100644 index 000000000..488aede8b --- /dev/null +++ b/src/GeneralStateTestsFiller/stCodeCopyTest/ExtCodeCopyTargetRangeLongerThanCodeTestsFiller.json @@ -0,0 +1,75 @@ +{ + "ExtCodeCopyTargetRangeLongerThanCodeTests": { + "_info" : { + "comment": "Uses EXTCODECOPY to copy 32 bytes of code into a 64 byte range of memory and ensures that the last 32 bytes of the memory range are zeroed out" + }, + "env": { + "currentCoinbase": "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x020000", + "currentGasLimit": "0x7fffffffffffffff", + "currentNumber": "2675000", + "currentTimestamp": "1000", + "previousHash": "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect": [ + { + "indexes": { + "data": -1, + "gas": -1, + "value": -1 + }, + "network": [ + ">=Frontier" + ], + "result": { + "aaaf5374fce5edbc8e2a8697c15331677e6ebf0b": { + "storage": { + "0x00": "0x1122334455667788991011121314151617181920212223242526272829303132", + "0x01": "0x00", + "0x02": "0x00", + "0x03": "0x00" + } + } + } + } + ], + "pre": { + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "0xffffffffffffffffffffffffffffffff", + "code": "", + "nonce": "0", + "storage": { + } + }, + "aaaf5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "7000", + "code": "{ (MSTORE 32 0x1234) (EXTCODECOPY 0xeeef5374fce5edbc8e2a8697c15331677e6ebf0b 0 0 64) [[0]] (MLOAD 0) [[1]] (MLOAD 32) (MSTORE 96 0x5678) (EXTCODECOPY 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b 64 0 64) [[2]] (MLOAD 64) [[3]] (MLOAD 96)}", + "nonce": "0", + "storage": { + } + }, + "eeef5374fce5edbc8e2a8697c15331677e6ebf0b": { + "balance": "0", + "code": "0x1122334455667788991011121314151617181920212223242526272829303132", + "nonce": "1", + "storage": { + } + } + }, + "transaction": { + "data": [ + "" + ], + "gasLimit": [ + "400000" + ], + "gasPrice": "1", + "nonce": "0", + "secretKey": "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to": "aaaf5374fce5edbc8e2a8697c15331677e6ebf0b", + "value": [ + "0" + ] + } + } +} diff --git a/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverInvalidSignatureFiller.json b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverInvalidSignatureFiller.json new file mode 100644 index 000000000..facf092ff --- /dev/null +++ b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverInvalidSignatureFiller.json @@ -0,0 +1,63 @@ +{ + "CallEcrecoverInvalidSignature" : { + "_info" : { + "comment": "CALL to ECREC precompile with input which is a completely invalid signature and a 32 byte output range in memory. ECREC should return an empty response and the 32 byte output range should be left unchanged." + }, + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x20000", + "currentGasLimit" : "10000000", + "currentNumber" : "1", + "currentTimestamp" : "1000", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : [ + { + "indexes" : { + "data" : -1, + "gas" : -1, + "value" : -1 + }, + "network" : [">=Frontier"], + "result" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + } + ], + "pre" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "20000000", + "code" : "{ (MSTORE 128 0x1122334455667788991011121314151617181920212223242526272829303132) (CALL 300000 1 0 0 128 128 32) [[ 0 ]] (MLOAD 128) }", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "" + ], + "gasLimit" : [ + "3652240" + ], + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : [ + "100000" + ] + } + } +} diff --git a/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverUnrecoverableKeyFiller.json b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverUnrecoverableKeyFiller.json new file mode 100644 index 000000000..44f90d32e --- /dev/null +++ b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallEcrecoverUnrecoverableKeyFiller.json @@ -0,0 +1,63 @@ +{ + "CallEcrecoverUnrecoverableKey" : { + "_info" : { + "comment": "CALL to ECREC precompile with input that has a valid signature structure but that does not recover a valid key. Specifies a 32 byte output range in memory. ECREC should return an empty response and the 32 byte output range should be left unchanged." + }, + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x20000", + "currentGasLimit" : "10000000", + "currentNumber" : "1", + "currentTimestamp" : "1000", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : [ + { + "indexes" : { + "data" : -1, + "gas" : -1, + "value" : -1 + }, + "network" : [">=Frontier"], + "result" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1122334455667788991011121314151617181920212223242526272829303132" + } + } + } + } + ], + "pre" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "20000000", + "code" : "{ (MSTORE 0 0xa8b53bdf3306a35a7103ab5504a0c9b492295564b6202b1942a84ef300107281) (MSTORE 32 0x000000000000000000000000000000000000000000000000000000000000001b) (MSTORE 64 0x3078356531653033663533636531386237373263636230303933666637316633) (MSTORE 96 0x6635336635633735623734646362333161383561613862383839326234653862) (MSTORE 128 0x1122334455667788991011121314151617181920212223242526272829303132) (CALL 300000 1 0 0 128 128 32) (SSTORE 0 (MLOAD 128)) }", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "" + ], + "gasLimit" : [ + "3652240" + ], + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : [ + "100000" + ] + } + } +} diff --git a/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutputFiller.json b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutputFiller.json new file mode 100644 index 000000000..f4538623f --- /dev/null +++ b/src/GeneralStateTestsFiller/stPreCompiledContracts2/CallIdentity_6_inputShorterThanOutputFiller.json @@ -0,0 +1,63 @@ +{ + "CallIdentity_6_inputShorterThanOutput" : { + "_info" : { + "comment": "CALL to ID precompile with 32 bytes of input and a 64 byte output range. The lower 32 bytes of the output range should be set to the input and the higher 32 bytes left unchanged." + }, + "env" : { + "currentCoinbase" : "2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x20000", + "currentGasLimit" : "10000000", + "currentNumber" : "1", + "currentTimestamp" : "1000", + "previousHash" : "5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "expect" : [ + { + "indexes" : { + "data" : -1, + "gas" : -1, + "value" : -1 + }, + "network" : [">=Frontier"], + "result" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "storage" : { + "0x00" : "0x1234" + } + } + } + } + ], + "pre" : { + "095e7baea6a6c7c4c2dfeb977efac326af552d87" : { + "balance" : "20000000", + "code" : "{ (MSTORE 0 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) (MSTORE 32 0x1234) (CALL 600 4 0 0 32 0 64) [[ 0 ]] (MLOAD 32)}", + "nonce" : "0", + "storage" : { + } + }, + "a94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "1000000000000000000", + "code" : "", + "nonce" : "0", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "" + ], + "gasLimit" : [ + "10000000" + ], + "gasPrice" : "1", + "nonce" : "0", + "secretKey" : "45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "095e7baea6a6c7c4c2dfeb977efac326af552d87", + "value" : [ + "100000" + ] + } + } +} |