From bf18396454fde0b752b8ce236e533ee9c2b52b16 Mon Sep 17 00:00:00 2001 From: Andrei Maiboroda Date: Mon, 6 Dec 2021 12:34:53 +0100 Subject: [PATCH] EIP-3855: Test for gas cost of PUSH0 --- .../VMTests/vmTests/push0Gas.json | 226 ++++++++++++++++++ .../VMTests/vmTests/push0Gas.json | 79 ++++++ .../VMTests/vmTests/push0GasFiller.yml | 56 +++++ 3 files changed, 361 insertions(+) create mode 100644 BlockchainTests/GeneralStateTests/VMTests/vmTests/push0Gas.json create mode 100644 GeneralStateTests/VMTests/vmTests/push0Gas.json create mode 100644 src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml diff --git a/BlockchainTests/GeneralStateTests/VMTests/vmTests/push0Gas.json b/BlockchainTests/GeneralStateTests/VMTests/vmTests/push0Gas.json new file mode 100644 index 00000000000..6260991436f --- /dev/null +++ b/BlockchainTests/GeneralStateTests/VMTests/vmTests/push0Gas.json @@ -0,0 +1,226 @@ +{ + "push0Gas_d0g0v0_London" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.14-unstable-62252fa0-20211203", + "filling-tool-version" : "retesteth-0.2.0-memory+commit.0cb69687.Linux.g++", + "generatedTestHash" : "1fa71b8ac24bd4a731a5861e78aa2079cb84df41313e5d42a76b0d42647faecf", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "source" : "src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml", + "sourceHash" : "1c1e1713f8a8ad4938ef7acafcb05d7e2b980db26c1222e687183804f744ec81" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x05500000", + "gasUsed" : "0x0186a0", + "hash" : "0x5f2e1cfd0080aa524c138def7818fb8655aeb8eae59935e361911755dce80a9e", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0xecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1", + "receiptTrie" : "0x777f1c1c378807634128348e4f0eeca6a0e7f516ea411690ca04266323f671a4", + "stateRoot" : "0x55481d020efe1d7f9848f13bdee101940cfba55ab2e19e277452bf7fb1bc534b", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd10b95f7e7ff07b46282ae946d81c9f0d825ae9e056ecd7f10333b0daeb30e03", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90262f901faa0ecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa055481d020efe1d7f9848f13bdee101940cfba55ab2e19e277452bf7fb1bc534ba0d10b95f7e7ff07b46282ae946d81c9f0d825ae9e056ecd7f10333b0daeb30e03a0777f1c1c378807634128348e4f0eeca6a0e7f516ea411690ca04266323f671a4b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000018405500000830186a08203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af862f860800a830186a094000000000000000000000000000000000000010080801ca0753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4a028cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210ac0", + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x0186a0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0x753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4", + "s" : "0x28cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210a", + "to" : "0x0000000000000000000000000000000000000100", + "v" : "0x1c", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x05500000", + "gasUsed" : "0x00", + "hash" : "0xecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x7edd5df87551fefd4b1f3debc6f904d8a8f4794656b8efc53663338e5c430179", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa07edd5df87551fefd4b1f3debc6f904d8a8f4794656b8efc53663338e5c430179a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405500000808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0x5f2e1cfd0080aa524c138def7818fb8655aeb8eae59935e361911755dce80a9e", + "network" : "London", + "postState" : { + "0x0000000000000000000000000000000000000100" : { + "balance" : "0x00", + "code" : "0x5f", + "nonce" : "0x00", + "storage" : { + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x895440", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "pre" : { + "0x0000000000000000000000000000000000000100" : { + "balance" : "0x00", + "code" : "0x5f", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x989680", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + }, + "push0Gas_d0g0v0_London+3855" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.14-unstable-62252fa0-20211203", + "filling-tool-version" : "retesteth-0.2.0-memory+commit.0cb69687.Linux.g++", + "generatedTestHash" : "4ccb761d8e8a2776731b6e7cf57f06dd1586e5e999052604485d7ce7a64c934c", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "source" : "src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml", + "sourceHash" : "1c1e1713f8a8ad4938ef7acafcb05d7e2b980db26c1222e687183804f744ec81" + }, + "blocks" : [ + { + "blockHeader" : { + "baseFeePerGas" : "0x0a", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x05500000", + "gasUsed" : "0x520a", + "hash" : "0x6280de2646117f433ce35c0a3e2e5df73125e50034b6645375b579b2368e7a0d", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x01", + "parentHash" : "0xecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1", + "receiptTrie" : "0xec94a9347e4e2f31750ad438f0f08614eedc150f6b5aff0dced861bb9f52f8ab", + "stateRoot" : "0xf5b540144c322adf15f06c316e596ebe0d4575c17c6898079287819f8da69e50", + "timestamp" : "0x03e8", + "transactionsTrie" : "0xd10b95f7e7ff07b46282ae946d81c9f0d825ae9e056ecd7f10333b0daeb30e03", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "rlp" : "0xf90261f901f9a0ecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa0f5b540144c322adf15f06c316e596ebe0d4575c17c6898079287819f8da69e50a0d10b95f7e7ff07b46282ae946d81c9f0d825ae9e056ecd7f10333b0daeb30e03a0ec94a9347e4e2f31750ad438f0f08614eedc150f6b5aff0dced861bb9f52f8abb90100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008302000001840550000082520a8203e800a000000000000000000000000000000000000000000000000000000000000000008800000000000000000af862f860800a830186a094000000000000000000000000000000000000010080801ca0753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4a028cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210ac0", + "transactions" : [ + { + "data" : "0x", + "gasLimit" : "0x0186a0", + "gasPrice" : "0x0a", + "nonce" : "0x00", + "r" : "0x753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4", + "s" : "0x28cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210a", + "to" : "0x0000000000000000000000000000000000000100", + "v" : "0x1c", + "value" : "0x00" + } + ], + "uncleHeaders" : [ + ] + } + ], + "genesisBlockHeader" : { + "baseFeePerGas" : "0x0b", + "bloom" : "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "coinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "difficulty" : "0x020000", + "extraData" : "0x00", + "gasLimit" : "0x05500000", + "gasUsed" : "0x00", + "hash" : "0xecc5ab9b464f30346cace105f61b25b7a1af969fc36f470ee0ae598a834fe5e1", + "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce" : "0x0000000000000000", + "number" : "0x00", + "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "receiptTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "stateRoot" : "0x7edd5df87551fefd4b1f3debc6f904d8a8f4794656b8efc53663338e5c430179", + "timestamp" : "0x00", + "transactionsTrie" : "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "uncleHash" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347" + }, + "genesisRLP" : "0xf901faf901f5a00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa07edd5df87551fefd4b1f3debc6f904d8a8f4794656b8efc53663338e5c430179a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b901000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083020000808405500000808000a000000000000000000000000000000000000000000000000000000000000000008800000000000000000bc0c0", + "lastblockhash" : "0x6280de2646117f433ce35c0a3e2e5df73125e50034b6645375b579b2368e7a0d", + "network" : "London+3855", + "postState" : { + "0x0000000000000000000000000000000000000100" : { + "balance" : "0x00", + "code" : "0x5f", + "nonce" : "0x00", + "storage" : { + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba" : { + "balance" : "0x1bc16d674ec80000", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x95621c", + "code" : "0x", + "nonce" : "0x01", + "storage" : { + } + } + }, + "pre" : { + "0x0000000000000000000000000000000000000100" : { + "balance" : "0x00", + "code" : "0x5f", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x989680", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + } + }, + "sealEngine" : "NoProof" + } +} \ No newline at end of file diff --git a/GeneralStateTests/VMTests/vmTests/push0Gas.json b/GeneralStateTests/VMTests/vmTests/push0Gas.json new file mode 100644 index 00000000000..ed7f9cf37ee --- /dev/null +++ b/GeneralStateTests/VMTests/vmTests/push0Gas.json @@ -0,0 +1,79 @@ +{ + "push0Gas" : { + "_info" : { + "comment" : "", + "filling-rpc-server" : "evm version 1.10.14-unstable-62252fa0-20211203", + "filling-tool-version" : "retesteth-0.2.0-memory+commit.0cb69687.Linux.g++", + "generatedTestHash" : "5b1730ade7f3c0940a16b0d500eb48858fc3d6e22531753dd3ced8e5d7aaac84", + "lllcversion" : "Version: 0.5.14-develop.2021.4.29+commit.14c9d5de.Linux.clang", + "source" : "src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml", + "sourceHash" : "1c1e1713f8a8ad4938ef7acafcb05d7e2b980db26c1222e687183804f744ec81" + }, + "env" : { + "currentBaseFee" : "0x0a", + "currentCoinbase" : "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty" : "0x020000", + "currentGasLimit" : "0x05500000", + "currentNumber" : "0x01", + "currentTimestamp" : "0x03e8", + "previousHash" : "0x5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6" + }, + "post" : { + "London" : [ + { + "hash" : "0x25cea017a8450518cc1a570910c986d3b4f85d353a4056e76efd5cefdd52a49c", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf860800a830186a094000000000000000000000000000000000000010080801ca0753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4a028cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210a" + } + ], + "London+3855" : [ + { + "hash" : "0x4932165d01b117f122159e38364903f2ef81b375e9581dc567c743640d56a685", + "indexes" : { + "data" : 0, + "gas" : 0, + "value" : 0 + }, + "logs" : "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "txbytes" : "0xf860800a830186a094000000000000000000000000000000000000010080801ca0753590b1e64336e51b421406117bb41e0276af5c97af6cb5b4fae36ef8a06ff4a028cacd94912f457a7154683fc73136dc930f2834483e6c655904e2e32a82210a" + } + ] + }, + "pre" : { + "0x0000000000000000000000000000000000000100" : { + "balance" : "0x00", + "code" : "0x5f", + "nonce" : "0x00", + "storage" : { + } + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" : { + "balance" : "0x989680", + "code" : "0x", + "nonce" : "0x00", + "storage" : { + } + } + }, + "transaction" : { + "data" : [ + "0x" + ], + "gasLimit" : [ + "0x0186a0" + ], + "gasPrice" : "0x0a", + "nonce" : "0x00", + "secretKey" : "0x45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8", + "to" : "0x0000000000000000000000000000000000000100", + "value" : [ + "0x00" + ] + } + } +} \ No newline at end of file diff --git a/src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml b/src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml new file mode 100644 index 00000000000..017fa234f76 --- /dev/null +++ b/src/GeneralStateTestsFiller/VMTests/vmTests/push0GasFiller.yml @@ -0,0 +1,56 @@ +# EIP-3855: PUSH0 instruction - test for gas price +push0Gas: + env: + currentCoinbase: 2adc25665018aa1fe0e6bc666dac8fc2697ff9ba + currentDifficulty: '0x020000' + currentGasLimit: '89128960' + currentBaseFee: '10' + currentNumber: '1' + currentTimestamp: '1000' + previousHash: 5e20a0453cecd065ea59c37ac63e079ee08998b6045136a8ce6635c7912ec0b6 + + pre: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: 10000000 + code: '' + nonce: '0' + storage: {} + + 0000000000000000000000000000000000000100: + balance: 0 + code: ':raw 0x5f' + nonce: '0' + storage: {} + + transaction: + data: + - '' + gasLimit: + - 100000 + gasPrice: 10 + nonce: 0 + secretKey: 45a915e4d060149eb4365960e6a7a45f334393093061116b197e3240065ff2d8 + to: '0000000000000000000000000000000000000100' + value: + - 0 + + expect: + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - 'London' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + balance: 9000000 + - indexes: + data: !!int -1 + gas: !!int -1 + value: !!int -1 + network: + - 'London+3855' + result: + a94f5374fce5edbc8e2a8697c15331677e6ebf0b: + # cost is (21000 instrinsic gas + 2 gas for PUSH0) * 10 gasPrice = 210020 + balance: 9789980