From cbce070d5c7bcc75601b6ced0fb81c0c0c7768c8 Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Wed, 12 Sep 2018 19:52:33 +0300 Subject: [PATCH 1/5] SHL, SHR, SAR and related tests --- .../vmBitwiseLogicOperation/sar0.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar1.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar10.json | 44 +++++++++++++ .../vmBitwiseLogicOperation/sar11.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar12.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar13.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar14.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar15.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar2.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar3.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar4.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar5.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar6.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar7.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar8.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/sar9.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl0.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl1.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl10.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl2.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl3.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl4.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl5.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl6.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl7.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl8.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shl9.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr0.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr1.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr10.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr2.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr3.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr4.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr5.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr6.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr7.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr8.json | 43 +++++++++++++ .../vmBitwiseLogicOperation/shr9.json | 43 +++++++++++++ jsontests/tests/sputnikvm.rs | 16 +++++ src/eval/check.rs | 8 +++ src/eval/cost.rs | 3 +- src/eval/run/bitwise.rs | 62 ++++++++++++++++++- src/eval/run/mod.rs | 4 ++ src/patch/mod.rs | 4 ++ src/pc.rs | 24 ++++++- src/util/opcode.rs | 10 +++ 46 files changed, 1763 insertions(+), 3 deletions(-) create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar0.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar1.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar11.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar12.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar13.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar14.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar15.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar2.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar3.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar4.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar5.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar6.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar7.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar8.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar9.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl0.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl1.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl10.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl2.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl3.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl4.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl5.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl6.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl7.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl8.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl9.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr0.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr1.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr10.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr2.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr3.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr4.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr5.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr6.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr7.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr8.json create mode 100644 jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr9.json create mode 100644 jsontests/tests/sputnikvm.rs diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar0.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar0.json new file mode 100644 index 00000000..4631a3b1 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar0.json @@ -0,0 +1,43 @@ +{ + "sar0": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160001d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar1.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar1.json new file mode 100644 index 00000000..4dba9ceb --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar1.json @@ -0,0 +1,43 @@ +{ + "sar1": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160011d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json new file mode 100644 index 00000000..e8afe479 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json @@ -0,0 +1,44 @@ + +{ + "sar10": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600060011d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c, + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar11.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar11.json new file mode 100644 index 00000000..669d1159 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar11.json @@ -0,0 +1,43 @@ +{ + "sar11": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f400000000000000000000000000000000000000000000000000000000000000060fe1d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f400000000000000000000000000000000000000000000000000000000000000060fe1d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f400000000000000000000000000000000000000000000000000000000000000060fe1d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar12.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar12.json new file mode 100644 index 00000000..3046d209 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar12.json @@ -0,0 +1,43 @@ +{ + "sar12": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f81d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f81d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x000000000000000000000000000000000000000000000000000000000000007f" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f81d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar13.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar13.json new file mode 100644 index 00000000..c2b0b61d --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar13.json @@ -0,0 +1,43 @@ +{ + "sar13": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60fe1d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60fe1d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60fe1d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar14.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar14.json new file mode 100644 index 00000000..6dc499e7 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar14.json @@ -0,0 +1,43 @@ +{ + "sar14": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar15.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar15.json new file mode 100644 index 00000000..d407674c --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar15.json @@ -0,0 +1,43 @@ +{ + "sar15": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar2.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar2.json new file mode 100644 index 00000000..861e41e8 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar2.json @@ -0,0 +1,43 @@ +{ + "sar2": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xc000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar3.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar3.json new file mode 100644 index 00000000..11210679 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar3.json @@ -0,0 +1,43 @@ +{ + "sar3": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar4.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar4.json new file mode 100644 index 00000000..795d3906 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar4.json @@ -0,0 +1,43 @@ +{ + "sar4": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar5.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar5.json new file mode 100644 index 00000000..b44ecabb --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar5.json @@ -0,0 +1,43 @@ +{ + "sar5": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar6.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar6.json new file mode 100644 index 00000000..0a7a1f84 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar6.json @@ -0,0 +1,43 @@ +{ + "sar6": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar7.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar7.json new file mode 100644 index 00000000..0df944b7 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar7.json @@ -0,0 +1,43 @@ +{ + "sar7": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar8.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar8.json new file mode 100644 index 00000000..66070563 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar8.json @@ -0,0 +1,43 @@ +{ + "sar8": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar9.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar9.json new file mode 100644 index 00000000..094da2ef --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar9.json @@ -0,0 +1,43 @@ +{ + "sar9": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001d600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl0.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl0.json new file mode 100644 index 00000000..0d049d7f --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl0.json @@ -0,0 +1,43 @@ +{ + "shl0": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160001b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl1.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl1.json new file mode 100644 index 00000000..1729e0f5 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl1.json @@ -0,0 +1,43 @@ +{ + "shl1": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160011b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000002" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl10.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl10.json new file mode 100644 index 00000000..c567b053 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl10.json @@ -0,0 +1,43 @@ +{ + "shl10": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "nonce": "0x00", + "storage": { + "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl2.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl2.json new file mode 100644 index 00000000..4ab8e3b3 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl2.json @@ -0,0 +1,43 @@ +{ + "shl2": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160ff1b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160ff1b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x8000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160ff1b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl3.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl3.json new file mode 100644 index 00000000..bd7ebab8 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl3.json @@ -0,0 +1,43 @@ +{ + "shl3": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x60016101001b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x60016101001b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x60016101001b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl4.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl4.json new file mode 100644 index 00000000..e4e71370 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl4.json @@ -0,0 +1,43 @@ +{ + "shl4": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x60016101011b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x60016101011b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x60016101011b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl5.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl5.json new file mode 100644 index 00000000..07f13b3e --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl5.json @@ -0,0 +1,43 @@ +{ + "shl5": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl6.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl6.json new file mode 100644 index 00000000..84af7b41 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl6.json @@ -0,0 +1,43 @@ +{ + "shl6": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "nonce": "0x00", + "storage": { + "0x00": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl7.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl7.json new file mode 100644 index 00000000..21f9fe25 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl7.json @@ -0,0 +1,43 @@ +{ + "shl7": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x8000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl8.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl8.json new file mode 100644 index 00000000..64778a88 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl8.json @@ -0,0 +1,43 @@ +{ + "shl8": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl9.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl9.json new file mode 100644 index 00000000..9350995a --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shl9.json @@ -0,0 +1,43 @@ +{ + "shl9": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600060011b600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011b600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011b600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr0.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr0.json new file mode 100644 index 00000000..f6cbf10f --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr0.json @@ -0,0 +1,43 @@ +{ + "shr0": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160001c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160001c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr1.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr1.json new file mode 100644 index 00000000..f6d98abf --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr1.json @@ -0,0 +1,43 @@ +{ + "shr1": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600160011c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600160011c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr10.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr10.json new file mode 100644 index 00000000..98501775 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr10.json @@ -0,0 +1,43 @@ +{ + "shr10": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x600060011c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x600060011c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr2.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr2.json new file mode 100644 index 00000000..9b2f1b82 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr2.json @@ -0,0 +1,43 @@ +{ + "shr2": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x4000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060011c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr3.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr3.json new file mode 100644 index 00000000..aae87066 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr3.json @@ -0,0 +1,43 @@ +{ + "shr3": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f800000000000000000000000000000000000000000000000000000000000000060ff1c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr4.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr4.json new file mode 100644 index 00000000..5c96fab7 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr4.json @@ -0,0 +1,43 @@ +{ + "shr4": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101001c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr5.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr5.json new file mode 100644 index 00000000..f57da55d --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr5.json @@ -0,0 +1,43 @@ +{ + "shr5": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7f80000000000000000000000000000000000000000000000000000000000000006101011c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr6.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr6.json new file mode 100644 index 00000000..6cf9db34 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr6.json @@ -0,0 +1,43 @@ +{ + "shr6": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001c600055", + "nonce": "0x00", + "storage": { + "0x00": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr7.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr7.json new file mode 100644 index 00000000..565c3bdb --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr7.json @@ -0,0 +1,43 @@ +{ + "shr7": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60011c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr8.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr8.json new file mode 100644 index 00000000..e9f828c2 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr8.json @@ -0,0 +1,43 @@ +{ + "shr8": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x013874", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff1c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr9.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr9.json new file mode 100644 index 00000000..45a7e9c1 --- /dev/null +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/shr9.json @@ -0,0 +1,43 @@ +{ + "shr9": { + "callcreates": [], + "env": { + "currentCoinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "currentDifficulty": "0x0100", + "currentGasLimit": "0x0f4240", + "currentNumber": "0x00", + "currentTimestamp": "0x01" + }, + "exec": { + "address": "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6", + "caller": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001c600055", + "data": "0x", + "gas": "0x0186a0", + "gasPrice": "0x5af3107a4000", + "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", + "value": "0x0de0b6b3a7640000" + }, + "gas": "0x01730c", + "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "out": "0x", + "post": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001c600055", + "nonce": "0x00", + "storage": { + "0x00": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "pre": { + "0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6": { + "balance": "0xd3c21bcecceda1000000", + "code": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101001c600055", + "nonce": "0x00", + "storage": {} + } + } + } +} diff --git a/jsontests/tests/sputnikvm.rs b/jsontests/tests/sputnikvm.rs new file mode 100644 index 00000000..1792b8a8 --- /dev/null +++ b/jsontests/tests/sputnikvm.rs @@ -0,0 +1,16 @@ +#![cfg_attr(feature = "bench", feature(test))] +#![allow(non_snake_case)] +#![allow(unused)] + +#[macro_use] +extern crate jsontests_derive; +extern crate jsontests; + +#[cfg(feature = "bench")] +extern crate test; + +#[derive(JsonTests)] +#[directory = "jsontests/res/files/SputnikVM/vmBitwiseLogicOperation"] +#[test_with = "jsontests::util::run_test"] +#[cfg_attr(feature = "bench", bench_with = "jsontests::util::run_bench")] +struct BitwiseLogicOperation; diff --git a/src/eval/check.rs b/src/eval/check.rs index d674bfc0..a3967eca 100644 --- a/src/eval/check.rs +++ b/src/eval/check.rs @@ -95,6 +95,10 @@ pub fn check_static(instruction: Instruction, sta Instruction::NOT | Instruction::BYTE => Ok(()), + Instruction::SHL | + Instruction::SHR | + Instruction::SAR => Ok(()), + Instruction::SHA3 => Ok(()), Instruction::ADDRESS | @@ -188,6 +192,10 @@ pub fn check_opcode(instruction: Instruction, sta Instruction::NOT => { state.stack.check_pop_push(1, 1)?; Ok(None) }, Instruction::BYTE => { state.stack.check_pop_push(2, 1)?; Ok(None) }, + Instruction::SHL => { state.stack.check_pop_push(2, 1)?; Ok(None) }, + Instruction::SHR => { state.stack.check_pop_push(2, 1)?; Ok(None) }, + Instruction::SAR => { state.stack.check_pop_push(2, 1)?; Ok(None) }, + Instruction::SHA3 => { state.stack.check_pop_push(2, 1)?; check_range(state.stack.peek(0).unwrap().into(), state.stack.peek(1).unwrap().into())?; diff --git a/src/eval/cost.rs b/src/eval/cost.rs index f424c019..ee635a26 100644 --- a/src/eval/cost.rs +++ b/src/eval/cost.rs @@ -222,7 +222,8 @@ pub fn gas_cost(instruction: Instruction, state: Instruction::ISZERO | Instruction::AND | Instruction::OR | Instruction::XOR | Instruction::BYTE | Instruction::CALLDATALOAD | Instruction::MLOAD | Instruction::MSTORE | Instruction::MSTORE8 | Instruction::PUSH(_) | - Instruction::DUP(_) | Instruction::SWAP(_) + Instruction::DUP(_) | Instruction::SWAP(_) | + Instruction::SHL | Instruction::SHR | Instruction::SAR => G_VERYLOW.into(), // W_low diff --git a/src/eval/run/bitwise.rs b/src/eval/run/bitwise.rs index 532039cf..fe351f3f 100644 --- a/src/eval/run/bitwise.rs +++ b/src/eval/run/bitwise.rs @@ -1,6 +1,6 @@ //! Bitwise instructions -use bigint::M256; +use bigint::{M256, MI256, Sign}; use ::Memory; use super::State; @@ -38,3 +38,63 @@ pub fn byte(state: &mut State) { push!(state, ret); } + +pub fn shl(state: &mut State) { + pop!(state, shift, value); + + let result = if value == M256::zero() || shift >= M256::from(256) { + M256::zero() + } else { + let shift: u64 = shift.into(); + value << shift as usize + }; + + push!(state, result); +} + +pub fn shr(state: &mut State) { + pop!(state, shift, value); + + let result = if value == M256::zero() || shift >= M256::from(256) { + M256::zero() + } else { + let shift: u64 = shift.into(); + value >> shift as usize + }; + + push!(state, result); +} + +pub fn sar(state: &mut State) { + pop!(state, shift, value); + let value = MI256::from(value); + + let result = if value == MI256::zero() || shift >= M256::from(256) { + let MI256(sign, _) = value; + match sign { + // value is 0 or >=1, pushing 0 + Sign::Plus | Sign::NoSign => { + M256::zero() + }, + // value is <0, pushing -1 + Sign::Minus => { + MI256(Sign::Minus, M256::one()).into() + } + } + } else { + let shift: u64 = shift.into(); + + match value.0 { + Sign::Plus | Sign::NoSign => { + let shifted = value.1 >> shift as usize; + shifted + }, + Sign::Minus => { + let shifted = ((value.1 - M256::one()) >> shift as usize) + M256::one(); + MI256(Sign::Minus, shifted).into() + } + } + }; + + push!(state, result); +} diff --git a/src/eval/run/mod.rs b/src/eval/run/mod.rs index a8012b07..4912940b 100644 --- a/src/eval/run/mod.rs +++ b/src/eval/run/mod.rs @@ -88,6 +88,10 @@ pub fn run_opcode(pc: (Instruction, usize), state Instruction::NOT => { bitwise::not(state); None }, Instruction::BYTE => { bitwise::byte(state); None }, + Instruction::SHL => { bitwise::shl(state); None }, + Instruction::SHR => { bitwise::shr(state); None }, + Instruction::SAR => { bitwise::sar(state); None }, + Instruction::SHA3 => { system::sha3(state); None }, Instruction::ADDRESS => { push!(state, state.context.address.into()); None }, diff --git a/src/patch/mod.rs b/src/patch/mod.rs index 64d13015..fcdb532d 100644 --- a/src/patch/mod.rs +++ b/src/patch/mod.rs @@ -73,6 +73,8 @@ pub trait Patch { fn has_revert() -> bool; /// Whether the EVM has RETURNDATASIZE and RETURNDATACOPY opcode. fn has_return_data() -> bool; + /// Whether the EVM has SHL, SHR and SAR + fn has_bitwise_shift() -> bool; /// Whether to throw out of gas error when /// CALL/CALLCODE/DELEGATECALL requires more than maximum amount /// of gas. @@ -123,6 +125,7 @@ impl Patch for VMTestPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { true } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -150,6 +153,7 @@ impl Patch for EmbeddedPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/src/pc.rs b/src/pc.rs index b047581c..4ef7d610 100644 --- a/src/pc.rs +++ b/src/pc.rs @@ -20,7 +20,7 @@ use super::errors::OnChainError; pub enum Instruction { STOP, ADD, MUL, SUB, DIV, SDIV, MOD, SMOD, ADDMOD, MULMOD, EXP, SIGNEXTEND, LT, GT, SLT, SGT, EQ, ISZERO, AND, OR, XOR, NOT, BYTE, - SHA3, ADDRESS, BALANCE, ORIGIN, CALLER, CALLVALUE, CALLDATALOAD, + SHL, SHR, SAR, SHA3, ADDRESS, BALANCE, ORIGIN, CALLER, CALLVALUE, CALLDATALOAD, CALLDATASIZE, CALLDATACOPY, CODESIZE, CODECOPY, GASPRICE, EXTCODESIZE, EXTCODECOPY, BLOCKHASH, COINBASE, TIMESTAMP, NUMBER, DIFFICULTY, GASLIMIT, POP, MLOAD, MSTORE, MSTORE8, SLOAD, SSTORE, @@ -194,6 +194,28 @@ macro_rules! impl_pc { Opcode::NOT => Instruction::NOT, Opcode::BYTE => Instruction::BYTE, + Opcode::SHL => { + if P::has_bitwise_shift() { + Instruction::SHL + } else { + return Err(OnChainError::InvalidOpcode); + } + }, + Opcode::SHR => { + if P::has_bitwise_shift() { + Instruction::SHR + } else { + return Err(OnChainError::InvalidOpcode); + } + }, + Opcode::SAR => { + if P::has_bitwise_shift() { + Instruction::SAR + } else { + return Err(OnChainError::InvalidOpcode); + } + }, + Opcode::SHA3 => Instruction::SHA3, Opcode::ADDRESS => Instruction::ADDRESS, diff --git a/src/util/opcode.rs b/src/util/opcode.rs index 86eeef6a..dda81798 100644 --- a/src/util/opcode.rs +++ b/src/util/opcode.rs @@ -9,6 +9,8 @@ pub enum Opcode { LT, GT, SLT, SGT, EQ, ISZERO, AND, OR, XOR, NOT, BYTE, + SHL, SHR, SAR, + SHA3, ADDRESS, BALANCE, ORIGIN, CALLER, CALLVALUE, CALLDATALOAD, @@ -58,6 +60,10 @@ impl From for Opcode { 0x19 => Opcode::NOT, 0x1a => Opcode::BYTE, + 0x1b => Opcode::SHL, + 0x1c => Opcode::SHR, + 0x1d => Opcode::SAR, + 0x20 => Opcode::SHA3, 0x30 => Opcode::ADDRESS, @@ -211,6 +217,10 @@ impl Into for Opcode { Opcode::NOT => 0x19, Opcode::BYTE => 0x1a, + Opcode::SHL => 0x1b, + Opcode::SHR => 0x1c, + Opcode::SAR => 0x1d, + Opcode::SHA3 => 0x20, Opcode::ADDRESS => 0x30, From f8c910fb5f753a04f77304b514ce5dc44f552dcc Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Fri, 14 Sep 2018 15:51:37 +0300 Subject: [PATCH 2/5] Constantinople patch in network crates --- network/classic/src/lib.rs | 33 +++++++++++++++++++++++++++++++++ network/ellaism/src/lib.rs | 1 + network/expanse/src/lib.rs | 4 ++++ network/foundation/src/lib.rs | 5 +++++ network/musicoin/src/lib.rs | 1 + network/ubiq/src/lib.rs | 1 + src/patch/mod.rs | 30 ++++++++++++++++++++++++++++++ 7 files changed, 75 insertions(+) diff --git a/network/classic/src/lib.rs b/network/classic/src/lib.rs index 710984d6..1f8403eb 100644 --- a/network/classic/src/lib.rs +++ b/network/classic/src/lib.rs @@ -89,6 +89,7 @@ impl Patch for FrontierPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -205,6 +206,38 @@ impl Patch for ByzantiumPatch { fn has_static_call() -> bool { true } fn has_revert() -> bool { true } fn has_return_data() -> bool { true } + fn has_bitwise_shift() -> bool { false } + fn err_on_call_with_more_gas() -> bool { false } + fn call_create_l64_after_gas() -> bool { true } + fn memory_limit() -> usize { usize::max_value() } + fn precompileds() -> &'static [(Address, Option<&'static [u8]>, &'static Precompiled)] { + &BYZANTIUM_PRECOMPILEDS } +} + + +/// Constantinople patch (includes Byzantium changes) +pub struct ConstantinoplePatch(PhantomData); +pub type MainnetConstantinoplePatch = ConstantinoplePatch; +pub type MordenConstantinoplePatch = ConstantinoplePatch; +impl Patch for ConstantinoplePatch { + type Account = A; + + fn code_deposit_limit() -> Option { None } + fn callstack_limit() -> usize { 1024 } + fn gas_extcode() -> Gas { Gas::from(700usize) } + fn gas_balance() -> Gas { Gas::from(400usize) } + fn gas_sload() -> Gas { Gas::from(200usize) } + fn gas_suicide() -> Gas { Gas::from(5000usize) } + fn gas_suicide_new_account() -> Gas { Gas::from(25000usize) } + fn gas_call() -> Gas { Gas::from(700usize) } + fn gas_expbyte() -> Gas { Gas::from(50usize) } + fn gas_transaction_create() -> Gas { Gas::from(32000usize) } + fn force_code_deposit() -> bool { false } + fn has_delegate_call() -> bool { true } + fn has_static_call() -> bool { true } + fn has_revert() -> bool { true } + fn has_return_data() -> bool { true } + fn has_bitwise_shift() -> bool { true } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/network/ellaism/src/lib.rs b/network/ellaism/src/lib.rs index bbe81407..ef17b393 100644 --- a/network/ellaism/src/lib.rs +++ b/network/ellaism/src/lib.rs @@ -50,6 +50,7 @@ impl Patch for EIP160Patch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/network/expanse/src/lib.rs b/network/expanse/src/lib.rs index a6a73639..94da38f7 100644 --- a/network/expanse/src/lib.rs +++ b/network/expanse/src/lib.rs @@ -85,6 +85,7 @@ impl Patch for FrontierPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -112,6 +113,7 @@ impl Patch for HomesteadPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -139,6 +141,7 @@ impl Patch for SpuriousDragonPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } @@ -166,6 +169,7 @@ impl Patch for ByzantiumPatch { fn has_static_call() -> bool { true } fn has_revert() -> bool { true } fn has_return_data() -> bool { true } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/network/foundation/src/lib.rs b/network/foundation/src/lib.rs index c7fe75a5..b9f685ce 100644 --- a/network/foundation/src/lib.rs +++ b/network/foundation/src/lib.rs @@ -85,6 +85,7 @@ impl Patch for FrontierPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -112,6 +113,7 @@ impl Patch for HomesteadPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -139,6 +141,7 @@ impl Patch for EIP150Patch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } @@ -166,6 +169,7 @@ impl Patch for SpuriousDragonPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } @@ -193,6 +197,7 @@ impl Patch for ByzantiumPatch { fn has_static_call() -> bool { true } fn has_revert() -> bool { true } fn has_return_data() -> bool { true } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/network/musicoin/src/lib.rs b/network/musicoin/src/lib.rs index 605d540c..0d1c28af 100644 --- a/network/musicoin/src/lib.rs +++ b/network/musicoin/src/lib.rs @@ -78,6 +78,7 @@ impl Patch for HomesteadPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } diff --git a/network/ubiq/src/lib.rs b/network/ubiq/src/lib.rs index 5ea79fdf..0955ab0e 100644 --- a/network/ubiq/src/lib.rs +++ b/network/ubiq/src/lib.rs @@ -47,6 +47,7 @@ impl Patch for SpuriousDragonPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } diff --git a/src/patch/mod.rs b/src/patch/mod.rs index fcdb532d..3836c36f 100644 --- a/src/patch/mod.rs +++ b/src/patch/mod.rs @@ -160,3 +160,33 @@ impl Patch for EmbeddedPatch { fn precompileds() -> &'static [(Address, Option<&'static [u8]>, &'static Precompiled)] { &EMBEDDED_PRECOMPILEDS } } + + +/// Constantinople patch (includes Byzantium changes) +pub struct EmbeddedConstantinoplePatch(PhantomData); +impl Patch for EmbeddedConstantinoplePatch { + type Account = A; + + fn code_deposit_limit() -> Option { None } + fn callstack_limit() -> usize { 1024 } + fn gas_extcode() -> Gas { Gas::from(700usize) } + fn gas_balance() -> Gas { Gas::from(400usize) } + fn gas_sload() -> Gas { Gas::from(200usize) } + fn gas_suicide() -> Gas { Gas::from(5000usize) } + fn gas_suicide_new_account() -> Gas { Gas::from(25000usize) } + fn gas_call() -> Gas { Gas::from(700usize) } + fn gas_expbyte() -> Gas { Gas::from(50usize) } + fn gas_transaction_create() -> Gas { Gas::from(32000usize) } + fn force_code_deposit() -> bool { false } + fn has_delegate_call() -> bool { true } + fn has_static_call() -> bool { true } + fn has_revert() -> bool { true } + fn has_return_data() -> bool { true } + fn has_bitwise_shift() -> bool { true } + fn err_on_call_with_more_gas() -> bool { true } + fn call_create_l64_after_gas() -> bool { false } + fn memory_limit() -> usize { usize::max_value() } + fn precompileds() -> &'static [(Address, Option<&'static [u8]>, &'static Precompiled)] { + &EMBEDDED_PRECOMPILEDS } +} + From dc5a4b8cb5e14f1dfe9d00cdd7c48641fa256440 Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Fri, 14 Sep 2018 17:23:03 +0300 Subject: [PATCH 3/5] revert adding the embedded constantinople patch --- src/patch/mod.rs | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/src/patch/mod.rs b/src/patch/mod.rs index 3836c36f..c1c0ab20 100644 --- a/src/patch/mod.rs +++ b/src/patch/mod.rs @@ -158,35 +158,7 @@ impl Patch for EmbeddedPatch { fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } fn precompileds() -> &'static [(Address, Option<&'static [u8]>, &'static Precompiled)] { - &EMBEDDED_PRECOMPILEDS } -} - - -/// Constantinople patch (includes Byzantium changes) -pub struct EmbeddedConstantinoplePatch(PhantomData); -impl Patch for EmbeddedConstantinoplePatch { - type Account = A; - - fn code_deposit_limit() -> Option { None } - fn callstack_limit() -> usize { 1024 } - fn gas_extcode() -> Gas { Gas::from(700usize) } - fn gas_balance() -> Gas { Gas::from(400usize) } - fn gas_sload() -> Gas { Gas::from(200usize) } - fn gas_suicide() -> Gas { Gas::from(5000usize) } - fn gas_suicide_new_account() -> Gas { Gas::from(25000usize) } - fn gas_call() -> Gas { Gas::from(700usize) } - fn gas_expbyte() -> Gas { Gas::from(50usize) } - fn gas_transaction_create() -> Gas { Gas::from(32000usize) } - fn force_code_deposit() -> bool { false } - fn has_delegate_call() -> bool { true } - fn has_static_call() -> bool { true } - fn has_revert() -> bool { true } - fn has_return_data() -> bool { true } - fn has_bitwise_shift() -> bool { true } - fn err_on_call_with_more_gas() -> bool { true } - fn call_create_l64_after_gas() -> bool { false } - fn memory_limit() -> usize { usize::max_value() } - fn precompileds() -> &'static [(Address, Option<&'static [u8]>, &'static Precompiled)] { - &EMBEDDED_PRECOMPILEDS } + &EMBEDDED_PRECOMPILEDS + } } From 5678af5ae6c2716e2da86c1962700da454af69f3 Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Fri, 14 Sep 2018 17:57:41 +0300 Subject: [PATCH 4/5] add missing methods on patches --- network/classic/src/lib.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/network/classic/src/lib.rs b/network/classic/src/lib.rs index 1f8403eb..ab0d723f 100644 --- a/network/classic/src/lib.rs +++ b/network/classic/src/lib.rs @@ -119,6 +119,7 @@ impl Patch for HomesteadPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() } @@ -148,6 +149,7 @@ impl Patch for EIP150Patch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } @@ -177,6 +179,7 @@ impl Patch for EIP160Patch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { false } fn call_create_l64_after_gas() -> bool { true } fn memory_limit() -> usize { usize::max_value() } From 03956322cc1f80a7223b28e753ac40fd9066dca0 Mon Sep 17 00:00:00 2001 From: Mike Lubinets Date: Fri, 14 Sep 2018 18:09:36 +0300 Subject: [PATCH 5/5] fix json test --- .../res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json | 2 +- network/musicoin/src/lib.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json index e8afe479..b452da00 100644 --- a/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json +++ b/jsontests/res/files/SputnikVM/vmBitwiseLogicOperation/sar10.json @@ -19,7 +19,7 @@ "origin": "0xcd1722f3947def4cf144679da39c4c32bdc35681", "value": "0x0de0b6b3a7640000" }, - "gas": "0x01730c, + "gas": "0x01730c", "logs": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "out": "0x", "post": { diff --git a/network/musicoin/src/lib.rs b/network/musicoin/src/lib.rs index 0d1c28af..163fb9be 100644 --- a/network/musicoin/src/lib.rs +++ b/network/musicoin/src/lib.rs @@ -50,6 +50,7 @@ impl Patch for FrontierPatch { fn has_static_call() -> bool { false } fn has_revert() -> bool { false } fn has_return_data() -> bool { false } + fn has_bitwise_shift() -> bool { false } fn err_on_call_with_more_gas() -> bool { true } fn call_create_l64_after_gas() -> bool { false } fn memory_limit() -> usize { usize::max_value() }