From 9a19e31ef2cd40411c02ab0da6503daf296334ae Mon Sep 17 00:00:00 2001 From: Andrei Maiboroda Date: Wed, 9 Feb 2022 12:27:17 +0100 Subject: [PATCH] Tests for initcode size limit with CREATE2 opcode --- .../create2InitCodeSizeLimit.json | 486 ++++++++++++++++++ .../create2InitCodeSizeLimit.json | 106 ++++ .../create2InitCodeSizeLimitFiller.yml | 120 +++++ 3 files changed, 712 insertions(+) create mode 100644 BlockchainTests/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json create mode 100644 GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json create mode 100644 src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml diff --git a/BlockchainTests/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json b/BlockchainTests/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json new file mode 100644 index 0000000000..7d08fbada7 --- /dev/null +++ b/BlockchainTests/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json @@ -0,0 +1,486 @@ +{ + "create2InitCodeSizeLimit_d0g0v0_London" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.16-unstable-3fa0c160-20220209", + "filling-tool-version" : "retesteth-0.2.2-testinfo+commit.1b89e144.Linux.g++", + "generatedTestHash" : "52903e672926c1630d3244aba3f417d9c3064850c7805826a7ebb3a497d52d26", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "solidity" : "Version: 0.8.4-develop.2021.4.29+commit.c7e474f2.Linux.clang", + "source" : "src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml", + "sourceHash" : "f84b38b1e1d735e41ced2c5f0a3b1818f21214a13705251707d7a44b6dd9d802" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x01c52e", + "hash" : "0x49fce282eb3a1bde68ccc37f038954b898174e28acd0d654a165e11bf319ae29", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "receiptTrie" : "0xc526566b7c1bd6a8b6d0e5ac3d415b8a0cf9e9c87c43b7bc2c8e7c03f3dd486c", + "stateRoot" : "0x45cff930dc707a8dd3788a8584334557f4db966a0f8c839bedcec312976f3ce9", + "timestamp" : "0x03e8", + "transactionsTrie" : "0x21ad49fa2d0d4f38142a55aad84a1be74e1f5f96dcbd5c2d2f7fa813b687bdd4", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90282f901faa07fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa045cff930dc707a8dd3788a8584334557f4db966a0f8c839bedcec312976f3ce9a021ad49fa2d0d4f38142a55aad84a1be74e1f5f96dcbd5c2d2f7fa813b687bdd4a0c526566b7c1bd6a8b6d0e5ac3d415b8a0cf9e9c87c43b7bc2c8e7c03f3dd486cb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018401312d008301c52e8203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af882f880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0001ba0110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0a0774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6fc0", + "transactions" : [ + { + "data" : "0x000000000000000000000000000000000000000000000000000000000000c000", + "gasLimit" : "0xe4e1c0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0x110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0", + "s" : "0x774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6f", + "sender" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "to" : "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "v" : "0x1b", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x00", + "hash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x89ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9b", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa089ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808401312d00808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0x49fce282eb3a1bde68ccc37f038954b898174e28acd0d654a165e11bf319ae29", + "network" : "London", + "postState" : { + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0x79e8cb660bb105489e8f55f3807edb723e0a375d" : { + "balance" : "0x00", + "code" : "0x00", + "nonce" : "0x01", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bda0e34", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x01", + "storage" : { + "0x00" : "0x79e8cb660bb105489e8f55f3807edb723e0a375d", + "0x01" : "0x01" + } + } + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bebc200", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + }, + "create2InitCodeSizeLimit_d0g0v0_London+3860" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.16-unstable-3fa0c160-20220209", + "filling-tool-version" : "retesteth-0.2.2-testinfo+commit.1b89e144.Linux.g++", + "generatedTestHash" : "f54d8a5a1f7dc72b4b2c858606cda08bb1f2b5356342c2525358e6f3ff23eaeb", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "solidity" : "Version: 0.8.4-develop.2021.4.29+commit.c7e474f2.Linux.clang", + "source" : "src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml", + "sourceHash" : "f84b38b1e1d735e41ced2c5f0a3b1818f21214a13705251707d7a44b6dd9d802" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x01d12e", + "hash" : "0xbfbd043495ac98f0a3a03edcce1cafab3a3d2c752cdff090465f772f549fd102", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "receiptTrie" : "0xf85f1cb10f8fa1d70ae74a975f0cc06b74a1199248fe75d81cbe87e07689f24e", + "stateRoot" : "0xd4ff54e9e0c4754519c49d70a57cf3046cf429f3a35d13173d3f572cbe60dea6", + "timestamp" : "0x03e8", + "transactionsTrie" : "0x21ad49fa2d0d4f38142a55aad84a1be74e1f5f96dcbd5c2d2f7fa813b687bdd4", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90282f901faa07fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0d4ff54e9e0c4754519c49d70a57cf3046cf429f3a35d13173d3f572cbe60dea6a021ad49fa2d0d4f38142a55aad84a1be74e1f5f96dcbd5c2d2f7fa813b687bdd4a0f85f1cb10f8fa1d70ae74a975f0cc06b74a1199248fe75d81cbe87e07689f24eb901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018401312d008301d12e8203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af882f880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0001ba0110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0a0774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6fc0", + "transactions" : [ + { + "data" : "0x000000000000000000000000000000000000000000000000000000000000c000", + "gasLimit" : "0xe4e1c0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0x110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0", + "s" : "0x774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6f", + "sender" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "to" : "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "v" : "0x1b", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x00", + "hash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x89ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9b", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa089ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808401312d00808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0xbfbd043495ac98f0a3a03edcce1cafab3a3d2c752cdff090465f772f549fd102", + "network" : "London+3860", + "postState" : { + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0x79e8cb660bb105489e8f55f3807edb723e0a375d" : { + "balance" : "0x00", + "code" : "0x00", + "nonce" : "0x01", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bd99634", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x01", + "storage" : { + "0x00" : "0x79e8cb660bb105489e8f55f3807edb723e0a375d", + "0x01" : "0x01" + } + } + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bebc200", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + }, + "create2InitCodeSizeLimit_d1g0v0_London" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.16-unstable-3fa0c160-20220209", + "filling-tool-version" : "retesteth-0.2.2-testinfo+commit.1b89e144.Linux.g++", + "generatedTestHash" : "15fac5d18e3191b1b4ce6810f4e0661c50348c1e38cec02cf0cbd457f1056daf", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "solidity" : "Version: 0.8.4-develop.2021.4.29+commit.c7e474f2.Linux.clang", + "source" : "src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml", + "sourceHash" : "f84b38b1e1d735e41ced2c5f0a3b1818f21214a13705251707d7a44b6dd9d802" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x01c549", + "hash" : "0x261eacae075c7ada27e918695506f186a19dfba44f05869df1c98e8474cb89a6", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "receiptTrie" : "0x0a500a7386adee40ffb9eceac4b4685c527e9b4816f7da3383ff9037e08fb519", + "stateRoot" : "0xdf34f41d3c8d75a4a4a0b54ebc5902f7bd2592d4b8edf9876a58ad206229c9da", + "timestamp" : "0x03e8", + "transactionsTrie" : "0x56be989ed075134aa66853f96e2880be22e77028f88e3df8cd67d7a01a8d286d", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90282f901faa07fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0df34f41d3c8d75a4a4a0b54ebc5902f7bd2592d4b8edf9876a58ad206229c9daa056be989ed075134aa66853f96e2880be22e77028f88e3df8cd67d7a01a8d286da00a500a7386adee40ffb9eceac4b4685c527e9b4816f7da3383ff9037e08fb519b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018401312d008301c5498203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af882f880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0011ca0fa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67a056382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37cc0", + "transactions" : [ + { + "data" : "0x000000000000000000000000000000000000000000000000000000000000c001", + "gasLimit" : "0xe4e1c0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0xfa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67", + "s" : "0x56382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37c", + "sender" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "to" : "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "v" : "0x1c", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x00", + "hash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x89ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9b", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa089ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808401312d00808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0x261eacae075c7ada27e918695506f186a19dfba44f05869df1c98e8474cb89a6", + "network" : "London", + "postState" : { + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bda0d26", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x01", + "storage" : { + "0x00" : "0xdb389606d3ea4ca84f8d886953107c62c36e53f7", + "0x01" : "0x01" + } + }, + "0xdb389606d3ea4ca84f8d886953107c62c36e53f7" : { + "balance" : "0x00", + "code" : "0x00", + "nonce" : "0x01", + "storage" : { + } + } + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bebc200", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + }, + "create2InitCodeSizeLimit_d1g0v0_London+3860" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.16-unstable-3fa0c160-20220209", + "filling-tool-version" : "retesteth-0.2.2-testinfo+commit.1b89e144.Linux.g++", + "generatedTestHash" : "2abfe459bbcb5361383e39a80a0a443b562d3722fb6a2bb3feda7edec48a89e4", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "solidity" : "Version: 0.8.4-develop.2021.4.29+commit.c7e474f2.Linux.clang", + "source" : "src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml", + "sourceHash" : "f84b38b1e1d735e41ced2c5f0a3b1818f21214a13705251707d7a44b6dd9d802" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x0182be", + "hash" : "0x2fa2e951fa964cf2845eb01212040e6d9e628a9b0f61b1a5573cf7fecc12b6ab", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "receiptTrie" : "0x1887242c8779fb0e6760d8598b533ffdec800415e4bd9812e92e49f1239d937d", + "stateRoot" : "0x291e390778316ae62a6e323b02aec94227aa971b9efa5b494a53eeaa32b484f7", + "timestamp" : "0x03e8", + "transactionsTrie" : "0x56be989ed075134aa66853f96e2880be22e77028f88e3df8cd67d7a01a8d286d", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90282f901faa07fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0291e390778316ae62a6e323b02aec94227aa971b9efa5b494a53eeaa32b484f7a056be989ed075134aa66853f96e2880be22e77028f88e3df8cd67d7a01a8d286da01887242c8779fb0e6760d8598b533ffdec800415e4bd9812e92e49f1239d937db901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018401312d00830182be8203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af882f880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0011ca0fa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67a056382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37cc0", + "transactions" : [ + { + "data" : "0x000000000000000000000000000000000000000000000000000000000000c001", + "gasLimit" : "0xe4e1c0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0xfa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67", + "s" : "0x56382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37c", + "sender" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "to" : "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "v" : "0x1c", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x01312d00", + "gasUsed" : "0x00", + "hash" : "0x7fa2dba8db401625296e4ef755a869f45d3dc45bd4d02685ec192f373999a7f4", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x89ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9b", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa089ac6759a2f952ddf7ac68f1d0db4816053c72f094c8f31d0f083fe62c8b7e9ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808401312d00808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0x2fa2e951fa964cf2845eb01212040e6d9e628a9b0f61b1a5573cf7fecc12b6ab", + "network" : "London+3860", + "postState" : { + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bdca694", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x01", + "storage" : { + "0x01" : "0x01" + } + } + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bebc200", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +} \ No newline at end of file diff --git a/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json b/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json new file mode 100644 index 0000000000..6604f5d9dd --- /dev/null +++ b/GeneralStateTests/stCodeSizeLimit/create2InitCodeSizeLimit.json @@ -0,0 +1,106 @@ +{ + "create2InitCodeSizeLimit" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.16-unstable-3fa0c160-20220209", + "filling-tool-version" : "retesteth-0.2.2-testinfo+commit.1b89e144.Linux.g++", + "generatedTestHash" : "3fd3d70c61453883b4d2f1b27473033e6f71277a9705f72eec107b599f416433", + "labels" : { + "0" : "valid", + "1" : "invalid" + }, + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "solidity" : "Version: 0.8.4-develop.2021.4.29+commit.c7e474f2.Linux.clang", + "source" : "src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml", + "sourceHash" : "f84b38b1e1d735e41ced2c5f0a3b1818f21214a13705251707d7a44b6dd9d802" + }, + "env" : { + "currentBaseFee" : "0x0a", + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x01312d00", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "London" : [ + { + "hash" : "0xb7566e1fbf7ba363e86fb2e70ab05f1dc6b9f719f4ad70c99cbe0e2181ceaec3", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0001ba0110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0a0774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6f" + }, + { + "hash" : "0x14e66dc1f4f7a058877e7def823060c966e8c1959aafe9ca7a5eee90b617832c", + "indexes" : { + "data" : 1, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0011ca0fa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67a056382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37c" + } + ], + "London+3860" : [ + { + "hash" : "0xd658d499e2f4646cd18f32d0529b4c149452eb4b4dfc67f44f97d3ef1d0648de", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0001ba0110f52aeb16c3e91943160d2e89c416b06dc47c7484a882324c6d0d362a26cd0a0774c7a35a3503be3867e7bb56885a9056ab1b7e5bfad19b1b0a3550d49a89d6f" + }, + { + "hash" : "0xe5d4e5a24a663ffd3f7770e9d262acbf0fcc6c5808669f98b128c143dc9ddf9f", + "indexes" : { + "data" : 1, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf880800a83e4e1c094b94f5374fce5edbc8e2a8697c15331677e6ebf0b80a0000000000000000000000000000000000000000000000000000000000000c0011ca0fa5e0f7c53cba5169bd5b239b479ba8668cf69d8c06d24b00a585b995a1c2c67a056382ddd27880d6393b3f905dc75db8a0c30eeb1c9a8443ac53723ca4feba37c" + } + ] + }, + "pre" : { + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x0bebc200", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x00", + "code" : "0x7f60016000f3000000000000000000000000000000000000000000000000000000600052600060003560006000f56000556001600155", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x000000000000000000000000000000000000000000000000000000000000c000", + "0x000000000000000000000000000000000000000000000000000000000000c001" + ], + "gasLimit" : [ + "0xe4e1c0" + ], + "gasPrice" : "0x0a", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "sender" : "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "to" : "0xb94f5374fce5edbc8e2a8697c15331677e6ebf0b", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml b/src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml new file mode 100644 index 0000000000..619ac363d9 --- /dev/null +++ b/src/GeneralStateTestsFiller/stCodeSizeLimit/create2InitCodeSizeLimitFiller.yml @@ -0,0 +1,120 @@ +# CREATE2 with max allowed init code size +create2InitCodeSizeLimit: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '20000000' + currentBaseFee: '10' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + + pre: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: 200000000 + code: '' + nonce: 0 + storage: {} + b94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: 0 + code: | + :yul + { + // :yul { return(0, 1) } + mstore(0, 0x60016000f3000000000000000000000000000000000000000000000000000000) + // get initcode size from calldata + sstore(0, create2(0, 0, calldataload(0), 0)) + sstore(1, 1) + } + nonce: 0 + storage: {} + + transaction: + data: + - ':label valid :raw 0x000000000000000000000000000000000000000000000000000000000000c000' + - ':label invalid :raw 0x000000000000000000000000000000000000000000000000000000000000c001' + gasLimit: + - 15000000 + gasPrice: 10 + nonce: 0 + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: 'b94f5374fce5edbc8e2a8697c15331677e6ebf0b' + value: + - 0 + + expect: + - indexes: + data: ':label valid' + gas: !!int -1 + value: !!int -1 + network: + - 'London' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + nonce: 1 + balance: 198839860 + b94f5374fce5edbc8e2a8697c15331677e6ebf0b: + storage: + '0': '79e8cb660bb105489e8f55f3807edb723e0a375d' + '1': 1 + 79e8cb660bb105489e8f55f3807edb723e0a375d: + balance: 0 + code: '0x00' + nonce: 1 + storage: {} + + - indexes: + data: ':label invalid' + gas: !!int -1 + value: !!int -1 + network: + - 'London' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + nonce: 1 + b94f5374fce5edbc8e2a8697c15331677e6ebf0b: + storage: + '0': 'db389606d3ea4ca84f8d886953107c62c36e53f7' + '1': 1 + db389606d3ea4ca84f8d886953107c62c36e53f7: + balance: 0 + code: '0x00' + nonce: 1 + storage: {} + + - indexes: + data: ':label valid' + gas: !!int -1 + value: !!int -1 + network: + - 'London+3860' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + nonce: 1 + # Difference with London is the charge for initcode 49152 // 32 * 2 = 3072 gas + balance: 198809140 + b94f5374fce5edbc8e2a8697c15331677e6ebf0b: + storage: + '0': '79e8cb660bb105489e8f55f3807edb723e0a375d' + '1': 1 + 79e8cb660bb105489e8f55f3807edb723e0a375d: + balance: 0 + code: '0x00' + nonce: 1 + storage: {} + + - indexes: + data: ':label invalid' + gas: !!int -1 + value: !!int -1 + network: + - 'London+3860' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + nonce: 1 + b94f5374fce5edbc8e2a8697c15331677e6ebf0b: + storage: + '0': 0 + '1': 1 + db389606d3ea4ca84f8d886953107c62c36e53f7: + shouldnotexist: 1