From 249123dc1e6247c2119f552918fd18c12e89e81f Mon Sep 17 00:00:00 2001 From: Stefan Pingel <16143240+pinges@users.noreply.github.com> Date: Mon, 7 Mar 2022 18:23:07 +1000 Subject: [PATCH] Feature/trace callmany (#3468) * unit test + working code + test spec files Signed-off-by: Frank Li Signed-off-by: Stefan Pingel Co-authored-by: Frank Li --- .../besu/ethereum/api/jsonrpc/RpcMethod.java | 1 + .../methods/AbstractBlockParameterMethod.java | 11 +- .../internal/methods/EthGetBlockByNumber.java | 12 +- .../jsonrpc/internal/methods/TraceCall.java | 23 +- .../internal/methods/TraceCallMany.java | 180 + .../jsonrpc/internal/methods/TraceFilter.java | 4 +- .../internal/methods/TraceRawTransaction.java | 4 +- .../parameters/TraceCallManyParameter.java | 61 + .../parameters/TraceCallParameterTuple.java | 34 + .../jsonrpc/methods/TraceJsonRpcMethods.java | 9 + .../AbstractJsonRpcHttpBySpecTest.java | 107 +- .../bonsai/TraceJsonRpcHttpBySpecTest.java | 1 + .../forest/TraceJsonRpcHttpBySpecTest.java | 1 + .../TraceCallManyParameterTest.java | 94 + .../trace_callMany_01_stateDiff.json | 15 + .../trace_callMany_01_trace.json | 15 + .../trace_callMany_01_vmTrace.json | 15 + .../trace_callMany_02_stateDiff.json | 65 + .../trace_callMany_02_trace.json | 42 + .../trace_callMany_02_vmTrace.json | 29 + .../trace_callMany_03_stateDiff.json | 66 + .../trace_callMany_03_trace.json | 41 + .../trace_callMany_03_vmTrace.json | 102 + .../trace_callMany_04_stateDiff.json | 186 + .../trace_callMany_04_trace.json | 99 + .../trace_callMany_04_vmTrace.json | 378 + .../trace_callMany_05_stateDiff.json | 55 + .../trace_callMany_05_trace.json | 43 + .../trace_callMany_05_vmTrace.json | 136 + .../trace_callMany_06_stateDiff.json | 55 + .../trace_callMany_06_trace.json | 43 + .../trace_callMany_06_vmTrace.json | 30 + .../trace_callMany_07_stateDiff.json | 55 + .../trace_callMany_07_trace.json | 43 + .../trace_callMany_07_vmTrace.json | 123 + .../trace_callMany_08_stateDiff.json | 55 + .../trace_callMany_08_trace.json | 59 + .../trace_callMany_08_vmTrace.json | 312 + .../trace_callMany_09_stateDiff.json | 55 + .../trace_callMany_09_trace.json | 91 + .../trace_callMany_09_vmTrace.json | 690 ++ .../trace_callMany_0a_stateDiff.json | 55 + .../trace_callMany_0a_trace.json | 59 + .../trace_callMany_0a_vmTrace.json | 312 + .../trace_callMany_0b_stateDiff.json | 55 + .../trace_callMany_0b_trace.json | 59 + .../trace_callMany_0b_vmTrace.json | 302 + .../trace_callMany_0c_stateDiff.json | 54 + .../trace_callMany_0c_trace.json | 42 + .../trace_callMany_0c_vmTrace.json | 128 + .../trace_callMany_0d_stateDiff.json | 54 + .../trace_callMany_0d_trace.json | 42 + .../trace_callMany_0d_vmTrace.json | 62 + .../trace_callMany_0e_stateDiff.json | 171 + .../trace_callMany_0e_trace.json | 96 + .../trace_callMany_0e_vmTrace.json | 435 + .../trace_callMany_0f_stateDiff.json | 93 + .../trace_callMany_0f_trace.json | 69 + .../trace_callMany_0f_vmTrace.json | 199 + .../trace_callMany_10_stateDiff.json | 132 + .../trace_callMany_10_trace.json | 87 + .../trace_callMany_10_vmTrace.json | 97 + .../trace_callMany_11_stateDiff.json | 54 + .../trace_callMany_11_trace.json | 42 + .../trace_callMany_11_vmTrace.json | 79 + .../trace_callMany_12_stateDiff.json | 93 + .../trace_callMany_12_trace.json | 66 + .../trace_callMany_12_vmTrace.json | 228 + .../trace_callMany_13_stateDiff.json | 297 + .../trace_callMany_13_trace.json | 287 + .../trace_callMany_13_vmTrace.json | 1075 +++ .../trace_callMany_14_stateDiff.json | 148 + .../trace_callMany_14_trace.json | 95 + .../trace_callMany_14_vmTrace.json | 410 + .../trace_callMany_15_stateDiff.json | 239 + .../trace_callMany_15_trace.json | 191 + .../trace_callMany_15_vmTrace.json | 1255 +++ .../trace_callMany_16_stateDiff.json | 239 + .../trace_callMany_16_trace.json | 191 + .../trace_callMany_16_vmTrace.json | 1215 +++ .../trace_callMany_17_stateDiff.json | 55 + .../trace_callMany_17_trace.json | 59 + .../trace_callMany_17_vmTrace.json | 216 + .../trace_callMany_18_stateDiff.json | 55 + .../trace_callMany_18_trace.json | 91 + .../trace_callMany_18_vmTrace.json | 594 ++ .../trace_callMany_19_stateDiff.json | 144 + .../trace_callMany_19_trace.json | 69 + .../trace_callMany_19_vmTrace.json | 7463 +++++++++++++++++ .../trace_callMany_1a_stateDiff.json | 55 + .../trace_callMany_1a_trace.json | 59 + .../trace_callMany_1a_vmTrace.json | 325 + .../trace_callMany_1b_stateDiff.json | 55 + .../trace_callMany_1b_trace.json | 43 + .../trace_callMany_1b_vmTrace.json | 30 + .../trace_callMany_1c_stateDiff.json | 54 + .../trace_callMany_1c_trace.json | 51 + .../trace_callMany_1c_vmTrace.json | 102 + .../trace_callMany_1d_stateDiff.json | 54 + .../trace_callMany_1d_trace.json | 37 + .../trace_callMany_1d_vmTrace.json | 39 + .../trace_callMany_1e_stateDiff.json | 66 + .../trace_callMany_1e_trace.json | 69 + .../trace_callMany_1e_vmTrace.json | 279 + .../trace_callMany_1f_stateDiff.json | 54 + .../trace_callMany_1f_trace.json | 42 + .../trace_callMany_1f_vmTrace.json | 29 + .../trace_callMany_20_stateDiff.json | 66 + .../trace_callMany_20_trace.json | 54 + .../trace_callMany_20_vmTrace.json | 184 + .../trace_callMany_21_stateDiff.json | 54 + .../trace_callMany_21_trace.json | 37 + .../trace_callMany_21_vmTrace.json | 39 + .../mainnet/MainnetTransactionProcessor.java | 12 +- .../transaction/TransactionSimulator.java | 170 +- .../TransactionSimulatorResult.java | 4 + .../transaction/TransactionSimulatorTest.java | 10 +- 117 files changed, 22972 insertions(+), 94 deletions(-) create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCallMany.java create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallManyParameter.java create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallParameterTuple.java create mode 100644 ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/parameters/TraceCallManyParameterTest.java create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_vmTrace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_stateDiff.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_trace.json create mode 100644 ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_vmTrace.json diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java index 3979fee315..04fc92dad1 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcMethod.java @@ -157,6 +157,7 @@ public enum RpcMethod { RPC_MODULES("rpc_modules"), TRACE_BLOCK("trace_block"), TRACE_CALL("trace_call"), + TRACE_CALL_MANY("trace_callMany"), TRACE_GET("trace_get"), TRACE_FILTER("trace_filter"), TRACE_RAW_TRANSACTION("trace_rawTransaction"), diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractBlockParameterMethod.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractBlockParameterMethod.java index 59bdab7cf7..81a8dfbafb 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractBlockParameterMethod.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractBlockParameterMethod.java @@ -28,14 +28,15 @@ import com.google.common.base.Suppliers; public abstract class AbstractBlockParameterMethod implements JsonRpcMethod { - protected final Supplier blockchainQueries; + protected final Supplier blockchainQueriesSupplier; protected AbstractBlockParameterMethod(final BlockchainQueries blockchainQueries) { this(Suppliers.ofInstance(blockchainQueries)); } - protected AbstractBlockParameterMethod(final Supplier blockchainQueries) { - this.blockchainQueries = blockchainQueries; + protected AbstractBlockParameterMethod( + final Supplier blockchainQueriesSupplier) { + this.blockchainQueriesSupplier = blockchainQueriesSupplier; } protected abstract BlockParameter blockParameter(JsonRpcRequestContext request); @@ -43,7 +44,7 @@ public abstract class AbstractBlockParameterMethod implements JsonRpcMethod { protected abstract Object resultByBlockNumber(JsonRpcRequestContext request, long blockNumber); protected BlockchainQueries getBlockchainQueries() { - return blockchainQueries.get(); + return blockchainQueriesSupplier.get(); } protected Object pendingResult(final JsonRpcRequestContext request) { @@ -53,7 +54,7 @@ public abstract class AbstractBlockParameterMethod implements JsonRpcMethod { } protected Object latestResult(final JsonRpcRequestContext request) { - return resultByBlockNumber(request, blockchainQueries.get().headBlockNumber()); + return resultByBlockNumber(request, blockchainQueriesSupplier.get().headBlockNumber()); } protected Object findResultByParamType(final JsonRpcRequestContext request) { diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetBlockByNumber.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetBlockByNumber.java index 8ae7431f92..12e9c84766 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetBlockByNumber.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthGetBlockByNumber.java @@ -79,14 +79,17 @@ public class EthGetBlockByNumber extends AbstractBlockParameterMethod { @Override protected Object latestResult(final JsonRpcRequestContext request) { - final long headBlockNumber = blockchainQueries.get().headBlockNumber(); - Blockchain chain = blockchainQueries.get().getBlockchain(); + final long headBlockNumber = blockchainQueriesSupplier.get().headBlockNumber(); + Blockchain chain = blockchainQueriesSupplier.get().getBlockchain(); BlockHeader headHeader = chain.getBlockHeader(headBlockNumber).orElse(null); Hash block = headHeader.getHash(); Hash stateRoot = headHeader.getStateRoot(); - if (blockchainQueries.get().getWorldStateArchive().isWorldStateAvailable(stateRoot, block)) { + if (blockchainQueriesSupplier + .get() + .getWorldStateArchive() + .isWorldStateAvailable(stateRoot, block)) { if (this.synchronizer.getSyncStatus().isEmpty()) { // we are already in sync return resultByBlockNumber(request, headBlockNumber); } else { // out of sync, return highest pulled block @@ -97,7 +100,8 @@ public class EthGetBlockByNumber extends AbstractBlockParameterMethod { LOGGER.trace("no world state available for block {} returning genesis", headBlockNumber); return resultByBlockNumber( - request, blockchainQueries.get().getBlockchain().getGenesisBlock().getHeader().getNumber()); + request, + blockchainQueriesSupplier.get().getBlockchain().getGenesisBlock().getHeader().getNumber()); } private BlockResult transactionComplete(final long blockNumber) { diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCall.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCall.java index a3bb87e3ad..fcc2c67c33 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCall.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCall.java @@ -35,7 +35,12 @@ import org.hyperledger.besu.ethereum.vm.DebugOperationTracer; import java.util.Optional; import java.util.Set; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class TraceCall extends AbstractTraceByBlock implements JsonRpcMethod { + private static final Logger LOG = LoggerFactory.getLogger(TraceCall.class); + public TraceCall( final BlockchainQueries blockchainQueries, final ProtocolSchedule protocolSchedule, @@ -57,7 +62,7 @@ public class TraceCall extends AbstractTraceByBlock implements JsonRpcMethod { requestContext.getRequiredParameter(1, TraceTypeParameter.class); final Optional maybeBlockHeader = - blockchainQueries.get().getBlockHeaderByNumber(blockNumber); + blockchainQueriesSupplier.get().getBlockHeaderByNumber(blockNumber); if (maybeBlockHeader.isEmpty()) { return new JsonRpcErrorResponse(requestContext.getRequest().getId(), BLOCK_NOT_FOUND); @@ -73,16 +78,24 @@ public class TraceCall extends AbstractTraceByBlock implements JsonRpcMethod { maybeBlockHeader.get()); if (maybeSimulatorResult.isEmpty()) { + LOG.error( + "Empty simulator result, call params: {}, blockHeader: {} ", + JsonCallParameterUtil.validateAndGetCallParams(requestContext), + maybeBlockHeader.get()); + return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); + } + final TransactionSimulatorResult simulatorResult = maybeSimulatorResult.get(); + + if (simulatorResult.isInvalid()) { + LOG.error(String.format("Invalid simulator result %s", maybeSimulatorResult)); return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); } final TransactionTrace transactionTrace = new TransactionTrace( - maybeSimulatorResult.get().getTransaction(), - maybeSimulatorResult.get().getResult(), - tracer.getTraceFrames()); + simulatorResult.getTransaction(), simulatorResult.getResult(), tracer.getTraceFrames()); - final Block block = blockchainQueries.get().getBlockchain().getChainHeadBlock(); + final Block block = blockchainQueriesSupplier.get().getBlockchain().getChainHeadBlock(); return getTraceCallResult( protocolSchedule, traceTypes, maybeSimulatorResult, transactionTrace, block); diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCallMany.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCallMany.java new file mode 100644 index 0000000000..4a3f0d4c07 --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceCallMany.java @@ -0,0 +1,180 @@ +/* + * Copyright Hyperledger Besu Contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods; + +import static org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError.BLOCK_NOT_FOUND; +import static org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError.INTERNAL_ERROR; + +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.BlockParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.JsonCallParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.TraceCallManyParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.TraceTypeParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionTrace; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcError; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorResponse; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.tracing.flat.FlatTrace; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.tracing.flat.MixInIgnoreRevertReason; +import org.hyperledger.besu.ethereum.api.query.BlockchainQueries; +import org.hyperledger.besu.ethereum.core.Block; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.transaction.TransactionSimulatorResult; +import org.hyperledger.besu.ethereum.vm.DebugOperationTracer; +import org.hyperledger.besu.evm.worldstate.WorldUpdater; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TraceCallMany extends TraceCall implements JsonRpcMethod { + + private static final Logger LOG = LoggerFactory.getLogger(TraceCallMany.class); + private static final ObjectMapper MAPPER_IGNORE_REVERT_REASON = new ObjectMapper(); + + public TraceCallMany( + final BlockchainQueries blockchainQueries, + final ProtocolSchedule protocolSchedule, + final TransactionSimulator transactionSimulator) { + super(blockchainQueries, protocolSchedule, transactionSimulator); + + MAPPER_IGNORE_REVERT_REASON.addMixIn(FlatTrace.class, MixInIgnoreRevertReason.class); + } + + @Override + public String getName() { + return transactionSimulator != null ? RpcMethod.TRACE_CALL_MANY.getMethodName() : null; + } + + @Override + protected BlockParameter blockParameter(final JsonRpcRequestContext request) { + final Optional maybeBlockParameter = + request.getOptionalParameter(2, BlockParameter.class); + + if (maybeBlockParameter.isPresent()) { + return maybeBlockParameter.get(); + } + + return BlockParameter.LATEST; + } + + @Override + protected Object resultByBlockNumber( + final JsonRpcRequestContext requestContext, final long blockNumber) { + + if (requestContext.getRequest().getParamLength() != 2) { + return new JsonRpcErrorResponse( + requestContext.getRequest().getId(), JsonRpcError.INVALID_PARAMS); + } + + final TraceCallManyParameter[] transactionsAndTraceTypeParameters; + try { + transactionsAndTraceTypeParameters = + requestContext.getRequiredParameter(0, TraceCallManyParameter[].class); + } catch (final Exception e) { + LOG.error("Error parsing trace call many parameter: {}", e.getLocalizedMessage()); + return new JsonRpcErrorResponse( + requestContext.getRequest().getId(), JsonRpcError.INVALID_PARAMS); + } + + final Optional maybeBlockHeader = + blockchainQueriesSupplier.get().getBlockHeaderByNumber(blockNumber); + + if (maybeBlockHeader.isEmpty()) { + return new JsonRpcErrorResponse(requestContext.getRequest().getId(), BLOCK_NOT_FOUND); + } + final BlockHeader blockHeader = maybeBlockHeader.get(); + + final List traceCallResults = new ArrayList<>(); + final WorldUpdater updater = transactionSimulator.getWorldUpdater(blockHeader); + try { + Arrays.stream(transactionsAndTraceTypeParameters) + .forEachOrdered( + param -> { + final WorldUpdater localUpdater = updater.updater(); + traceCallResults.add( + getSingleCallResult( + param.getTuple().getJsonCallParameter(), + param.getTuple().getTraceTypeParameter(), + blockHeader, + localUpdater)); + localUpdater.commit(); + }); + } catch (final TransactionInvalidException e) { + LOG.error("Invalid transaction simulator result"); + return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); + } catch (final EmptySimulatorResultException e) { + LOG.error( + "Empty simulator result, call params: {}, blockHeader: {} ", + JsonCallParameterUtil.validateAndGetCallParams(requestContext), + blockHeader); + return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); + } catch (final Exception e) { + return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); + } + return traceCallResults; + } + + private JsonNode getSingleCallResult( + final JsonCallParameter callParameter, + final TraceTypeParameter traceTypeParameter, + final BlockHeader header, + final WorldUpdater worldUpdater) { + final Set traceTypes = traceTypeParameter.getTraceTypes(); + final DebugOperationTracer tracer = new DebugOperationTracer(buildTraceOptions(traceTypes)); + final Optional maybeSimulatorResult = + transactionSimulator.processWithWorldUpdater( + callParameter, buildTransactionValidationParams(), tracer, header, worldUpdater); + + LOG.trace("Executing {} call for transaction {}", traceTypeParameter, callParameter); + if (maybeSimulatorResult.isEmpty()) { + throw new EmptySimulatorResultException(); + } + final TransactionSimulatorResult simulatorResult = maybeSimulatorResult.get(); + if (simulatorResult.isInvalid()) { + throw new TransactionInvalidException(); + } + + final TransactionTrace transactionTrace = + new TransactionTrace( + simulatorResult.getTransaction(), simulatorResult.getResult(), tracer.getTraceFrames()); + + final Block block = blockchainQueriesSupplier.get().getBlockchain().getChainHeadBlock(); + + return getTraceCallResult( + protocolSchedule, traceTypes, maybeSimulatorResult, transactionTrace, block); + } + + private static class TransactionInvalidException extends RuntimeException { + TransactionInvalidException() { + super(); + } + } + + private static class EmptySimulatorResultException extends RuntimeException { + EmptySimulatorResultException() { + super(); + } + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilter.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilter.java index 90083a44c0..45be7a2ca5 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilter.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilter.java @@ -71,7 +71,7 @@ public class TraceFilter extends TraceBlock { long currentBlockNumber = fromBlock; while (currentBlockNumber <= toBlock && !resultArrayNode.isFull()) { Optional blockByNumber = - blockchainQueries.get().getBlockchain().getBlockByNumber(currentBlockNumber); + blockchainQueriesSupplier.get().getBlockchain().getBlockByNumber(currentBlockNumber); blockByNumber.ifPresent( block -> resultArrayNode.addAll(traceBlock(block, Optional.of(filterParameter)))); currentBlockNumber++; @@ -150,7 +150,7 @@ public class TraceFilter extends TraceBlock { if (param.getNumber().isPresent()) { return param.getNumber().get(); } else if (param.isLatest()) { - return blockchainQueries.get().headBlockNumber(); + return blockchainQueriesSupplier.get().headBlockNumber(); } else { throw new IllegalStateException("Unknown block parameter type."); } diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceRawTransaction.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceRawTransaction.java index fd2270cd82..daaff3b6c8 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceRawTransaction.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceRawTransaction.java @@ -86,7 +86,7 @@ public class TraceRawTransaction extends AbstractTraceByBlock implements JsonRpc final Set traceTypes = traceTypeParameter.getTraceTypes(); final DebugOperationTracer tracer = new DebugOperationTracer(buildTraceOptions(traceTypes)); - final long headBlockNumber = blockchainQueries.get().headBlockNumber(); + final long headBlockNumber = blockchainQueriesSupplier.get().headBlockNumber(); final Optional maybeSimulatorResult = transactionSimulator.process( CallParameter.fromTransaction(transaction), @@ -104,7 +104,7 @@ public class TraceRawTransaction extends AbstractTraceByBlock implements JsonRpc maybeSimulatorResult.get().getResult(), tracer.getTraceFrames()); final Optional maybeBlock = - blockchainQueries.get().getBlockchain().getBlockByNumber(headBlockNumber); + blockchainQueriesSupplier.get().getBlockchain().getBlockByNumber(headBlockNumber); if (maybeBlock.isEmpty()) { return new JsonRpcErrorResponse(requestContext.getRequest().getId(), INTERNAL_ERROR); diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallManyParameter.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallManyParameter.java new file mode 100644 index 0000000000..4b0b618f7a --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallManyParameter.java @@ -0,0 +1,61 @@ +/* + * Copyright Hyperledger Besu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters; + +import java.io.IOException; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class TraceCallManyParameter { + TraceCallParameterTuple params; + + @JsonCreator + public TraceCallManyParameter( + @JsonDeserialize(using = TraceCallParameterDeserializer.class) + final TraceCallParameterTuple parameters) { + this.params = parameters; + } + + public TraceCallParameterTuple getTuple() { + return this.params; + } +} + +class TraceCallParameterDeserializer extends StdDeserializer { + + public TraceCallParameterDeserializer(final Class vc) { + super(vc); + } + + public TraceCallParameterDeserializer() { + this(null); + } + + @Override + public TraceCallParameterTuple deserialize(final JsonParser p, final DeserializationContext ctxt) + throws IOException { + final ObjectMapper mapper = new ObjectMapper(); + final JsonNode tupleNode = p.getCodec().readTree(p); + return new TraceCallParameterTuple( + mapper.readValue(tupleNode.get(0).toString(), JsonCallParameter.class), + mapper.readValue(tupleNode.get(1).toString(), TraceTypeParameter.class)); + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallParameterTuple.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallParameterTuple.java new file mode 100644 index 0000000000..360a554e5c --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/parameters/TraceCallParameterTuple.java @@ -0,0 +1,34 @@ +/* + * Copyright Hyperledger Besu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters; + +public class TraceCallParameterTuple { + private final JsonCallParameter jsonCallParameter; + private final TraceTypeParameter traceTypeParameter; + + public TraceCallParameterTuple( + final JsonCallParameter callParameter, final TraceTypeParameter traceTypeParameter) { + this.jsonCallParameter = callParameter; + this.traceTypeParameter = traceTypeParameter; + } + + public JsonCallParameter getJsonCallParameter() { + return jsonCallParameter; + } + + public TraceTypeParameter getTraceTypeParameter() { + return traceTypeParameter; + } +} diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/TraceJsonRpcMethods.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/TraceJsonRpcMethods.java index b845033490..3aabdee372 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/TraceJsonRpcMethods.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/TraceJsonRpcMethods.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.JsonRpcMethod; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceBlock; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceCall; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceCallMany; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceFilter; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceGet; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.TraceRawTransaction; @@ -75,6 +76,14 @@ public class TraceJsonRpcMethods extends ApiGroupJsonRpcMethods { blockchainQueries.getWorldStateArchive(), protocolSchedule, privacyParameters)), + new TraceCallMany( + blockchainQueries, + protocolSchedule, + new TransactionSimulator( + blockchainQueries.getBlockchain(), + blockchainQueries.getWorldStateArchive(), + protocolSchedule, + privacyParameters)), new TraceRawTransaction( protocolSchedule, blockchainQueries, diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/AbstractJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/AbstractJsonRpcHttpBySpecTest.java index df69ee575d..beb0151a22 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/AbstractJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/AbstractJsonRpcHttpBySpecTest.java @@ -30,6 +30,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Stream; import com.fasterxml.jackson.core.JsonProcessingException; @@ -50,6 +52,13 @@ import org.junit.runners.Parameterized; public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpServiceTest { private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final Pattern GAS_MATCH_FOR_STATE_DIFF = + Pattern.compile("\"balance\":(?!\"=\").*?},"); + private static final Pattern GAS_MATCH_FOR_VM_TRACE = + Pattern.compile(",*\"cost\":[0-9a-fA-F]+,*|,\"used\":[0-9a-fA-F]+"); + private static final Pattern GAS_MATCH_FOR_TRACE = + Pattern.compile("\"gasUsed\":\"[x0-9a-fA-F]+\","); + private final URL specURL; protected AbstractJsonRpcHttpBySpecTest(final String specName, final URL specURL) { @@ -113,6 +122,7 @@ public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpS final String json = Resources.toString(specFile, Charsets.UTF_8); final ObjectNode specNode = (ObjectNode) objectMapper.readTree(json); final String rawRequestBody = specNode.get("request").toString(); + final RequestBody requestBody = RequestBody.create(JSON, rawRequestBody); final Request request = new Request.Builder().post(requestBody).url(baseUrl).build(); @@ -125,7 +135,11 @@ public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpS try { final ObjectNode responseBody = (ObjectNode) objectMapper.readTree(Objects.requireNonNull(resp.body()).string()); - checkResponse(responseBody, (ObjectNode) expectedResponse); + checkResponse( + responseBody, + (ObjectNode) expectedResponse, + getMethod(rawRequestBody), + getTraceType(specFile.toString())); } catch (final Exception e) { throw new RuntimeException("Unable to parse response as json object", e); } @@ -139,13 +153,52 @@ public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpS } for (int i = 0; i < ((ArrayNode) expectedResponse).size(); i++) { checkResponse( - (ObjectNode) responseBody.get(i), (ObjectNode) ((ArrayNode) expectedResponse).get(i)); + (ObjectNode) responseBody.get(i), + (ObjectNode) ((ArrayNode) expectedResponse).get(i), + getMethod(rawRequestBody), + getTraceType(specFile.toString())); } } } } - private void checkResponse(final ObjectNode responseBody, final ObjectNode expectedResponse) + private enum Method { + TRACE_CALL_MANY, + OTHER + } + + private enum TraceType { + TRACE, + VM_TRACE, + STATE_DIFF, + OTHER + } + + private Method getMethod(final String rawRequest) { + if (rawRequest.contains("\"method\":\"trace_callMany\"")) { + return Method.TRACE_CALL_MANY; + } else { + return Method.OTHER; + } + } + + private TraceType getTraceType(final String fileName) { + if (fileName.contains("_trace")) { + return TraceType.TRACE; + } else if (fileName.contains("_vmTrace")) { + return TraceType.VM_TRACE; + } else if (fileName.contains("_stateDiff")) { + return TraceType.STATE_DIFF; + } else { + return TraceType.OTHER; + } + } + + private void checkResponse( + final ObjectNode responseBody, + final ObjectNode expectedResponse, + final Method method, + final TraceType traceType) throws JsonProcessingException { // Check id final String actualId = responseBody.get("id").toString(); @@ -160,8 +213,37 @@ public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpS // Check result if (expectedResponse.has("result")) { assertThat(responseBody.has("result")).isTrue(); - final String expectedResult = expectedResponse.get("result").toString(); - final String actualResult = responseBody.get("result").toString(); + + String expectedResult = expectedResponse.get("result").toString(); + String actualResult = responseBody.get("result").toString(); + + if (method.equals(Method.TRACE_CALL_MANY)) { + // TODO: There are differences in gas cost (causing different balances as well). These are + // caused by + // OpenEthereum not implementing "Istanbul" correctly. Specially the SSTORE to dirty storage + // Slots should cost 800 gas rather than 5000 + // This should be fixed, e.g. by using + // Erigon to + // create the expected output, or by making OpenEthereum work correctly. + switch (traceType) { + case TRACE: + expectedResult = filterStringTrace(expectedResult); + actualResult = filterStringTrace(actualResult); + break; + case VM_TRACE: + expectedResult = filterStringVmTrace(expectedResult); + actualResult = filterStringVmTrace(actualResult); + break; + case STATE_DIFF: + expectedResult = filterStringStateDiff(expectedResult); + actualResult = filterStringStateDiff(actualResult); + break; + default: + throw new RuntimeException( + "Unrecognized trace type (expected trace | vmTrace | stateDiff)"); + } + } + final ObjectMapper mapper = new ObjectMapper(); mapper.configure(INDENT_OUTPUT, true); assertThat( @@ -184,4 +266,19 @@ public abstract class AbstractJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpS assertThat(actualError).isEqualToIgnoringWhitespace(expectedError); } } + + private String filterStringStateDiff(final String expectedResult) { + final Matcher m = GAS_MATCH_FOR_STATE_DIFF.matcher(expectedResult); + return m.replaceAll(""); + } + + private String filterStringVmTrace(final String expectedResult) { + final Matcher m = GAS_MATCH_FOR_VM_TRACE.matcher(expectedResult); + return m.replaceAll(""); + } + + private String filterStringTrace(final String expectedResult) { + final Matcher m = GAS_MATCH_FOR_TRACE.matcher(expectedResult); + return m.replaceAll(""); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java index b2639766aa..922e1aa6ff 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java @@ -57,6 +57,7 @@ public class TraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { "trace/specs/replay-trace-transaction/halt-cases", "trace/specs/trace-filter", "trace/specs/trace-call", + "trace/specs/trace-callMany", "trace/specs/trace-raw-transaction" }); } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java index 298dd64a57..d3a503ca8f 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java @@ -57,6 +57,7 @@ public class TraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { "trace/specs/replay-trace-transaction/halt-cases", "trace/specs/trace-filter", "trace/specs/trace-call", + "trace/specs/trace-callMany", "trace/specs/trace-raw-transaction" }); } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/parameters/TraceCallManyParameterTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/parameters/TraceCallManyParameterTest.java new file mode 100644 index 0000000000..fe99b9a277 --- /dev/null +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/parameters/TraceCallManyParameterTest.java @@ -0,0 +1,94 @@ +/* + * Copyright Hyperledger Besu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.parameters; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; + +import org.hyperledger.besu.datatypes.Address; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.TraceCallManyParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.TraceTypeParameter; + +import java.io.IOException; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.exc.MismatchedInputException; +import org.junit.Before; +import org.junit.Test; + +public class TraceCallManyParameterTest { + static final String emptyParamsJson = "[]"; + static final String invalidJson = "[[\"invalid\"],[\"invalid\"]]"; + static final String requestParamsJson = + "[ [ {\n" + + " \"from\" : \"0xfe3b557e8fb62b89f4916b721be55ceb828dbd73\",\n" + + " \"value\" : \"0x0\",\n" + + " \"to\" : \"0x0010000000000000000000000000000000000000\",\n" + + " \"gas\" : \"0xfffff2\",\n" + + " \"gasPrice\" : \"0xef\",\n" + + " \"data\" : \"0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002\"\n" + + " }, [ \"trace\" ] ], [ {\n" + + " \"from\" : \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n" + + " \"value\" : \"0x0\",\n" + + " \"to\" : \"0x0010000000000000000000000000000000000000\",\n" + + " \"gas\" : \"0xfffff2\",\n" + + " \"gasPrice\" : \"0xef\",\n" + + " \"data\" : \"0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004\"\n" + + " }, [ \"trace\" ] ], [ {\n" + + " \"from\" : \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n" + + " \"value\" : \"0x0\",\n" + + " \"to\" : \"0x0010000000000000000000000000000000000000\",\n" + + " \"gas\" : \"0xfffff2\",\n" + + " \"gasPrice\" : \"0xef\",\n" + + " \"data\" : \"0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000\"\n" + + " }, [ \"trace\" ] ] ]"; + + private ObjectMapper mapper; + + @Before + public void setup() { + mapper = new ObjectMapper(); + } + + @Test + public void testEmptyParamJsonParsesCorrectly() throws IOException { + final TraceCallManyParameter[] parameter = + mapper.readValue(emptyParamsJson, TraceCallManyParameter[].class); + + assertThat(parameter).isNullOrEmpty(); + } + + @Test + public void testRequestParameterJsonParsesCorrectly() throws IOException { + final TraceCallManyParameter[] parameter = + mapper.readValue(requestParamsJson, TraceCallManyParameter[].class); + + assertThat(parameter[0].getTuple()).isNotNull(); + assertThat(parameter[0].getTuple().getJsonCallParameter()).isNotNull(); + assertThat(parameter[0].getTuple().getJsonCallParameter().getFrom()) + .isEqualTo(Address.fromHexString("0xfe3b557e8fb62b89f4916b721be55ceb828dbd73")); + assertThat(parameter[2].getTuple().getJsonCallParameter().getTo()) + .isEqualTo(Address.fromHexString("0x0010000000000000000000000000000000000000")); + assertThat(parameter[1].getTuple().getTraceTypeParameter().getTraceTypes()).hasSize(1); + assertThat(parameter[1].getTuple().getTraceTypeParameter().getTraceTypes()) + .contains(TraceTypeParameter.TraceType.TRACE); + } + + @Test + public void testInvalidJsonDoesNotParse() throws IOException { + assertThatExceptionOfType(MismatchedInputException.class) + .isThrownBy(() -> mapper.readValue(invalidJson, TraceCallManyParameter[].class)); + } +} diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_stateDiff.json new file mode 100644 index 0000000000..d10984bab8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_stateDiff.json @@ -0,0 +1,15 @@ +{ + "comment" : "", + "request" : { + "method" : "trace_callMany", + "params" : [ [ ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_trace.json new file mode 100644 index 0000000000..d10984bab8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_trace.json @@ -0,0 +1,15 @@ +{ + "comment" : "", + "request" : { + "method" : "trace_callMany", + "params" : [ [ ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_vmTrace.json new file mode 100644 index 0000000000..d10984bab8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_01_vmTrace.json @@ -0,0 +1,15 @@ +{ + "comment" : "", + "request" : { + "method" : "trace_callMany", + "params" : [ [ ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_stateDiff.json new file mode 100644 index 0000000000..4042006c75 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_stateDiff.json @@ -0,0 +1,65 @@ +{ + "comment" : "'Simple value transfer'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x1", + "to" : "0x0000000000000000000000000000000000000999", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860d4816" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0000000000000000000000000000000000000999" : { + "balance" : { + "*" : { + "from" : "0x1", + "to" : "0x2" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d079bf50c2" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_trace.json new file mode 100644 index 0000000000..3ba1732f93 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_trace.json @@ -0,0 +1,42 @@ +{ + "comment" : "'Simple value transfer'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x1", + "to" : "0x0000000000000000000000000000000000000999", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0000000000000000000000000000000000000999", + "value" : "0x1" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_vmTrace.json new file mode 100644 index 0000000000..4555e6840f --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_02_vmTrace.json @@ -0,0 +1,29 @@ +{ + "comment" : "'Simple value transfer'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x1", + "to" : "0x0000000000000000000000000000000000000999", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x", + "ops" : [ ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_stateDiff.json new file mode 100644 index 0000000000..4377979e62 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_stateDiff.json @@ -0,0 +1,66 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f1838685c9c2" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x600035ff" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d07946cf17" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_trace.json new file mode 100644 index 0000000000..c7064ada30 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_trace.json @@ -0,0 +1,41 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff300e", + "init" : "0x6004600c60003960046000f3600035ff", + "value" : "0x0" + }, + "result" : { + "address" : "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241", + "code" : "0x600035ff", + "gasUsed" : "0x338" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_vmTrace.json new file mode 100644 index 0000000000..2562f4254d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_03_vmTrace.json @@ -0,0 +1,102 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6004600c60003960046000f3600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723979 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc" ], + "store" : null, + "used" : 16723976 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723973 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0x600035ff", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16723964 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723961 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723958 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16723958 + }, + "pc" : 11, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_stateDiff.json new file mode 100644 index 0000000000..a520922f46 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_stateDiff.json @@ -0,0 +1,186 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386a1490e" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000002" + } + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd271ad0ab" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386a1490e", + "to" : "0x393f0f183871477ae" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000003" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000004" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d07998b79b" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183871477ae", + "to" : "0x393f0f183874660d8" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07998b79b", + "to" : "0xefffffffffffe28d07966ce71" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x18", + "to" : "0x19" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_trace.json new file mode 100644 index 0000000000..1922abdd0c --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_trace.json @@ -0,0 +1,99 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffabba", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x9c58", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffabba", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x2728", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffabc6", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_vmTrace.json new file mode 100644 index 0000000000..bc969d0d5d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_04_vmTrace.json @@ -0,0 +1,378 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755639 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755636 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755633 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755630 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x1" + }, + "used" : 16735630 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16735627 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16735624 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16735621 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16735618 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x2" + }, + "used" : 16715618 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755639 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16755636 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755633 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755630 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16750630 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16750627 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16750624 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16750621 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16750618 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x4" + }, + "used" : 16745618 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755651 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16755648 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755645 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755642 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16754842 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16754839 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754836 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16754833 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16754830 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16749830 + }, + "pc" : 13, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_stateDiff.json new file mode 100644 index 0000000000..27581a8465 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183861528a6" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27a6f113" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_trace.json new file mode 100644 index 0000000000..f7b334cf2b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_trace.json @@ -0,0 +1,43 @@ +{ + "comment" : "'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffabd2", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x658", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_vmTrace.json new file mode 100644 index 0000000000..9fb2b8dd82 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_05_vmTrace.json @@ -0,0 +1,136 @@ +{ + "comment" : "'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0010000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755663 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755660 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755657 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755654 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16754854 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16754851 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754848 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16754845 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16754842 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x0" + }, + "used" : 16754042 + }, + "pc" : 13, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_stateDiff.json new file mode 100644 index 0000000000..1eb2930101 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Self destruct and send contract balance to address provided in the data field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0020000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000999" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860da92e" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27ae708b" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_trace.json new file mode 100644 index 0000000000..36d560f179 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_trace.json @@ -0,0 +1,43 @@ +{ + "comment" : "'Self destruct and send contract balance to address provided in the data field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0020000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000999" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffad82", + "input" : "0x0000000000000000000000000000000000000999", + "to" : "0x0020000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_vmTrace.json new file mode 100644 index 0000000000..db16af8c0f --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_06_vmTrace.json @@ -0,0 +1,30 @@ +{ + "comment" : "'Self destruct and send contract balance to address provided in the data field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0020000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000000000000000999" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x", + "ops" : [ ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_stateDiff.json new file mode 100644 index 0000000000..713b14ae9d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Increment 32 bytes provided in data field and return the value.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0030000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860def33" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27ae2a86" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_trace.json new file mode 100644 index 0000000000..e2e31df89c --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_trace.json @@ -0,0 +1,43 @@ +{ + "comment" : "'Increment 32 bytes provided in data field and return the value.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0030000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffad52", + "input" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0030000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1b", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_vmTrace.json new file mode 100644 index 0000000000..b5b5ead50f --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_07_vmTrace.json @@ -0,0 +1,123 @@ +{ + "comment" : "'Increment 32 bytes provided in data field and return the value.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0030000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60003560010160005260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756047 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ], + "store" : null, + "used" : 16756044 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756041 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ], + "store" : null, + "used" : 16756038 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756035 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16756029 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16756026 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756023 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16756023 + }, + "pc" : 13, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_stateDiff.json new file mode 100644 index 0000000000..04171f1a57 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386112f08" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aaeab1" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_trace.json new file mode 100644 index 0000000000..ba90ef0c10 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_trace.json @@ -0,0 +1,59 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffacc6", + "input" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30a", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfbab36", + "input" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0030000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1b", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_vmTrace.json new file mode 100644 index 0000000000..ede2700267 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_08_vmTrace.json @@ -0,0 +1,312 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755907 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755904 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755901 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16755899 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755896 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x20" ], + "store" : null, + "used" : 16755893 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755890 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755887 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755878 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755875 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755873 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755870 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x30000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755867 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffac99" ], + "store" : null, + "used" : 16755865 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16494066, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755138 + }, + "pc" : 21, + "sub" : { + "code" : "0x60003560010160005260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493363 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ], + "store" : null, + "used" : 16493360 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16493357 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ], + "store" : null, + "used" : 16493354 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493351 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16493345 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493342 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493339 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16493339 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755135 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755132 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755132 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_stateDiff.json new file mode 100644 index 0000000000..a6907f34c8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f1838617bf80" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27a45a39" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_trace.json new file mode 100644 index 0000000000..9f32a71923 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_trace.json @@ -0,0 +1,91 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffabae", + "input" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x8fa", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfbaa17", + "input" : "0x00000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x5ff", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xf7b88c", + "input" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30a", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ 0, 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xf3d6cd", + "input" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0030000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1b", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 0, + "traceAddress" : [ 0, 0, 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_vmTrace.json new file mode 100644 index 0000000000..b85a1882cf --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_09_vmTrace.json @@ -0,0 +1,690 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755627 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755624 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755621 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755619 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16755616 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60" ], + "store" : null, + "used" : 16755613 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755610 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755607 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 21, + "ex" : { + "mem" : { + "data" : "0x00000000000000000000000000400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755586 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755583 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755581 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755578 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755575 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffab75" ], + "store" : null, + "used" : 16755573 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493779, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16753338 + }, + "pc" : 21, + "sub" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493076 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493073 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493070 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16493068 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16493065 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40", "0x40" ], + "store" : null, + "used" : 16493062 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493059 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493056 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 15, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16493041 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493038 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493036 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493033 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40000000000000000000000000000000000000" ], + "store" : null, + "used" : 16493030 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xfba9e4" ], + "store" : null, + "used" : 16493028 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16235336, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16491550 + }, + "pc" : 21, + "sub" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16234633 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16234630 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16234627 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16234625 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16234622 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x20" ], + "store" : null, + "used" : 16234619 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16234616 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16234613 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16234604 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16234601 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16234599 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16234596 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x30000000000000000000000000000000000000" ], + "store" : null, + "used" : 16234593 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xf7b85f" ], + "store" : null, + "used" : 16234591 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 15980937, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16233864 + }, + "pc" : 21, + "sub" : { + "code" : "0x60003560010160005260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 15980234 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ], + "store" : null, + "used" : 15980231 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 15980228 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ], + "store" : null, + "used" : 15980225 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 15980222 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 15980216 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 15980213 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 15980210 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 15980210 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16233861 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233858 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16233858 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16491547 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16491544 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16491544 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16753335 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16753332 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16753332 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_stateDiff.json new file mode 100644 index 0000000000..8bda2d9ae7 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using CALLCODE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0050000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386112f08" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aaeab1" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_trace.json new file mode 100644 index 0000000000..9737b896fe --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_trace.json @@ -0,0 +1,59 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using CALLCODE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0050000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffacc6", + "input" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0050000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30a", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "callcode", + "from" : "0x0050000000000000000000000000000000000000", + "gas" : "0xfbab36", + "input" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0030000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1b", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_vmTrace.json new file mode 100644 index 0000000000..cde712bdfd --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0a_vmTrace.json @@ -0,0 +1,312 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using CALLCODE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0050000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755907 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755904 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755901 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16755899 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755896 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x20" ], + "store" : null, + "used" : 16755893 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755890 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755887 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755878 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755875 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755873 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755870 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x30000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755867 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffac99" ], + "store" : null, + "used" : 16755865 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16494066, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755138 + }, + "pc" : 21, + "sub" : { + "code" : "0x60003560010160005260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493363 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ], + "store" : null, + "used" : 16493360 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16493357 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ], + "store" : null, + "used" : 16493354 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493351 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16493345 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493342 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493339 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16493339 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755135 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755132 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755132 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_stateDiff.json new file mode 100644 index 0000000000..452ae50065 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using DELEGATECALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386112d2a" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aaec8f" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_trace.json new file mode 100644 index 0000000000..cf9965b133 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_trace.json @@ -0,0 +1,59 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using DELEGATECALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffacc6", + "input" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0060000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x308", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfbab38", + "input" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0030000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1b", + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_vmTrace.json new file mode 100644 index 0000000000..3642dc7e83 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0b_vmTrace.json @@ -0,0 +1,302 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep. Using DELEGATECALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000030000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602060006020360380602060003760006000355af460206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755907 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755904 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755901 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16755899 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755896 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x20" ], + "store" : null, + "used" : 16755893 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755890 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755887 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755878 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755875 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755872 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x30000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755869 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffac9b" ], + "store" : null, + "used" : 16755867 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 16494068, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755140 + }, + "pc" : 20, + "sub" : { + "code" : "0x60003560010160005260206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493365 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ], + "store" : null, + "used" : 16493362 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16493359 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ], + "store" : null, + "used" : 16493356 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493353 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0xf000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16493347 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16493344 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16493341 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16493341 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755137 + }, + "pc" : 21, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755134 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755134 + }, + "pc" : 25, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_stateDiff.json new file mode 100644 index 0000000000..e662b372a2 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE8.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0070000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860d6418" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aeb5a1" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_trace.json new file mode 100644 index 0000000000..ebe78b5a4b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_trace.json @@ -0,0 +1,42 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE8.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0070000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0070000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1e", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_vmTrace.json new file mode 100644 index 0000000000..3dc54b78cc --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0c_vmTrace.json @@ -0,0 +1,128 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE8.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0070000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x600160025360036004536001600553", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x01", + "off" : 2 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x03", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16756181 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756178 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16756175 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x01", + "off" : 5 + }, + "push" : [ ], + "store" : null, + "used" : 16756172 + }, + "pc" : 14, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_stateDiff.json new file mode 100644 index 0000000000..ab806f7e28 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0080000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860d5617" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aec3a2" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_trace.json new file mode 100644 index 0000000000..df9c1f8a02 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_trace.json @@ -0,0 +1,42 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0080000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0080000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0xf", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_vmTrace.json new file mode 100644 index 0000000000..29b607ca3b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0d_vmTrace.json @@ -0,0 +1,62 @@ +{ + "comment" : "'Sequential memory modifications with MSTORE.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0080000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x7f00000000000000000000000000000000000000000000000000000000000000017f000000000000000000000000000000000000000000000000000000000000000152", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 1 + }, + "push" : [ ], + "store" : null, + "used" : 16756187 + }, + "pc" : 66, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_stateDiff.json new file mode 100644 index 0000000000..504854216a --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_stateDiff.json @@ -0,0 +1,171 @@ +{ + "comment" : "'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x04", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386228af0" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0090000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000004" + } + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27998ec9" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x05", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386228af0", + "to" : "0x393f0f18386846342" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0090000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000005" + } + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27998ec9", + "to" : "0xffffffffffffffffffffffffffffffffd2737b677" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1f", + "to" : "0x20" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x06", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386846342", + "to" : "0x393f0f18386e63b94" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0090000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000006" + } + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd2737b677", + "to" : "0xffffffffffffffffffffffffffffffffd26d5de25" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x20", + "to" : "0x21" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_trace.json new file mode 100644 index 0000000000..024022249a --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_trace.json @@ -0,0 +1,96 @@ +{ + "comment" : "'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x04", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0090000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c6", + "output" : "0x04" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x05", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0090000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c6", + "output" : "0x05" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x06", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0090000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c6", + "output" : "0x06" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_vmTrace.json new file mode 100644 index 0000000000..b15bd28f9d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0e_vmTrace.json @@ -0,0 +1,435 @@ +{ + "comment" : "'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1', 'Increments contract storage 0 by 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0090000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x04", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6000546001018060005360005560016000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16755399 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755396 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16755393 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x4" ], + "store" : null, + "used" : 16755390 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755387 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x04", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755381 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755378 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x4" + }, + "used" : 16750378 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16750375 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16750372 + }, + "pc" : 15, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16750372 + }, + "pc" : 17, + "sub" : null + } ] + } + }, { + "output" : "0x05", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6000546001018060005360005560016000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16755399 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755396 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16755393 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5", "0x5" ], + "store" : null, + "used" : 16755390 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755387 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x05", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755381 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755378 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x5" + }, + "used" : 16750378 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16750375 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16750372 + }, + "pc" : 15, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16750372 + }, + "pc" : 17, + "sub" : null + } ] + } + }, { + "output" : "0x06", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6000546001018060005360005560016000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16755399 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755396 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6" ], + "store" : null, + "used" : 16755393 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6", "0x6" ], + "store" : null, + "used" : 16755390 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755387 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x06", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755381 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755378 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x6" + }, + "used" : 16750378 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16750375 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16750372 + }, + "pc" : 15, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16750372 + }, + "pc" : 17, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_stateDiff.json new file mode 100644 index 0000000000..fb34b1ae8b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_stateDiff.json @@ -0,0 +1,93 @@ +{ + "comment" : "'Log output with LOG1.', 'Log output with LOG2.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00A0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00B0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386101f5b" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27abfa5e" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386101f5b", + "to" : "0x393f0f1838660ecfe" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27abfa5e", + "to" : "0xffffffffffffffffffffffffffffffffd275b2cbb" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1f", + "to" : "0x20" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_trace.json new file mode 100644 index 0000000000..19bf162286 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_trace.json @@ -0,0 +1,69 @@ +{ + "comment" : "'Log output with LOG1.', 'Log output with LOG2.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00A0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00B0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00a0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30b", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00b0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x485", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_vmTrace.json new file mode 100644 index 0000000000..62b7efd482 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_0f_vmTrace.json @@ -0,0 +1,199 @@ +{ + "comment" : "'Log output with LOG1.', 'Log output with LOG2.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00A0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00B0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x608b60045360ff60016004a1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8b" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x8b", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16756181 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 758, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755423 + }, + "pc" : 11, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x608b60045360aa60ff60016004a2", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8b" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x8b", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xaa" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756181 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16756178 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 1133, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755045 + }, + "pc" : 13, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_stateDiff.json new file mode 100644 index 0000000000..47de1e0061 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_stateDiff.json @@ -0,0 +1,132 @@ +{ + "comment" : "'Various exceptional halt cases. Invalid OPCODE (0x1F).', 'Various exceptional halt cases. INSUFFICIENT_STACK_ITEMS.', 'Various exceptional halt cases. INVALID_JUMP_DESTINATION.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00C0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00D0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00E0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18474c0a58c" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffc38fb742d" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18474c0a58c", + "to" : "0x393f0f18563c0987a" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffc38fb742d", + "to" : "0xffffffffffffffffffffffffffffffffb49fb813f" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1f", + "to" : "0x20" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18563c0987a", + "to" : "0x393f0f18652c08b68" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffb49fb813f", + "to" : "0xffffffffffffffffffffffffffffffffa5afb8e51" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x20", + "to" : "0x21" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_trace.json new file mode 100644 index 0000000000..f798460334 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_trace.json @@ -0,0 +1,87 @@ +{ + "comment" : "'Various exceptional halt cases. Invalid OPCODE (0x1F).', 'Various exceptional halt cases. INSUFFICIENT_STACK_ITEMS.', 'Various exceptional halt cases. INVALID_JUMP_DESTINATION.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00C0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00D0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00E0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00c0000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Bad instruction", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00d0000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Stack underflow", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00e0000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Bad jump destination", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_vmTrace.json new file mode 100644 index 0000000000..b55a260b50 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_10_vmTrace.json @@ -0,0 +1,97 @@ +{ + "comment" : "'Various exceptional halt cases. Invalid OPCODE (0x1F).', 'Various exceptional halt cases. INSUFFICIENT_STACK_ITEMS.', 'Various exceptional halt cases. INVALID_JUMP_DESTINATION.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00C0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00D0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00E0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60011f", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x600120", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60ff5660016002", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16756191 + }, + "pc" : 2, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_stateDiff.json new file mode 100644 index 0000000000..ace5e3c8ae --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Pushes 1, 2, 3, then SWAP2 and SWAP1.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00F0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860d5617" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aec3a2" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_trace.json new file mode 100644 index 0000000000..f6a39a3ea2 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_trace.json @@ -0,0 +1,42 @@ +{ + "comment" : "'Pushes 1, 2, 3, then SWAP2 and SWAP1.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00F0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x00f0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0xf", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_vmTrace.json new file mode 100644 index 0000000000..09fe841269 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_11_vmTrace.json @@ -0,0 +1,79 @@ +{ + "comment" : "'Pushes 1, 2, 3, then SWAP2 and SWAP1.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x00F0000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6001600260039190", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16756193 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x2", "0x1" ], + "store" : null, + "used" : 16756190 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x2" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 7, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_stateDiff.json new file mode 100644 index 0000000000..871520d665 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_stateDiff.json @@ -0,0 +1,93 @@ +{ + "comment" : "'Memory Read.', 'Revert.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0100000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0110000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860d6418" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27aeb5a1" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x7d88c1856cc95352", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183860d6418", + "to" : "0x393f0f183865a1592" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27aeb5a1", + "to" : "0xffffffffffffffffffffffffffffffffd27620427" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1f", + "to" : "0x20" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_trace.json new file mode 100644 index 0000000000..0efaf44839 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_trace.json @@ -0,0 +1,66 @@ +{ + "comment" : "'Memory Read.', 'Revert.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0100000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0110000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0100000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x1e", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x7d88c1856cc95352", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0110000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Reverted", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_vmTrace.json new file mode 100644 index 0000000000..bdceaf57c9 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_12_vmTrace.json @@ -0,0 +1,228 @@ +{ + "comment" : "'Memory Read.', 'Revert.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0100000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0110000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905601052600851", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b301" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b301", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 36, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 69, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905", + "off" : 16 + }, + "push" : [ ], + "store" : null, + "used" : 16756178 + }, + "pc" : 71, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8" ], + "store" : null, + "used" : 16756175 + }, + "pc" : 72, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x7d88c1856cc9535214c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e", + "off" : 8 + }, + "push" : [ "0x7d88c1856cc9535214c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e" ], + "store" : null, + "used" : 16756172 + }, + "pc" : 74, + "sub" : null + } ] + } + }, { + "output" : "0x7d88c1856cc95352", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x7f3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b3016000527f14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef390560105260086008fd", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b301" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x3940be4289e4c3587d88c1856cc95352461992db0a584c281226faefe560b301", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 36, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 69, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x14c4d2c102bdeb2354bfc3dc96a95e4512cf3a8461e0560e2272dbf884ef3905", + "off" : 16 + }, + "push" : [ ], + "store" : null, + "used" : 16756178 + }, + "pc" : 71, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8" ], + "store" : null, + "used" : 16756175 + }, + "pc" : 72, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8" ], + "store" : null, + "used" : 16756172 + }, + "pc" : 74, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16756172 + }, + "pc" : 76, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_stateDiff.json new file mode 100644 index 0000000000..c5f2d1abcf --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_stateDiff.json @@ -0,0 +1,297 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.', 'call the prior contract then call log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then callcode log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then delegatecall log contract 00a0..00.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000738f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f5AF1600060006000600060007300A00000000000000000000000000000000000005AF1" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45AF2600060006000600060007300A00000000000000000000000000000000000005AF2" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x600060006000600073fb88de099e13c3ed21f80a7a1e49f8caecf10df65AF460006000600060007300A00000000000000000000000000000000000005AF4" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f1838685c9c2" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x600035ff" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d07946cf17" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f1838685c9c2", + "to" : "0x393f0f1838751bedb" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x2a504b5e7ec284aca5b6f49716611237239f0b97" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07946cf17", + "to" : "0xefffffffffffe28d0787ad9fe" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x18", + "to" : "0x19" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x600035ff", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f1838751bedb", + "to" : "0x393f0f1838816d5ff" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d0787ad9fe", + "to" : "0xefffffffffffe28d077b5c2da" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x19", + "to" : "0x1a" + } + }, + "storage" : { } + }, + "0xbd2c938b9f6bfc1a66368d08cb44dc3eb2ae27be" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x600035ff" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f1838816d5ff", + "to" : "0x393f0f183889d866a" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d077b5c2da", + "to" : "0xefffffffffffe28d0772f126f" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1a", + "to" : "0x1b" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x600035ff", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183889d866a", + "to" : "0x393f0f18389629d8e" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d0772f126f", + "to" : "0xefffffffffffe28d07669fb4b" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1b", + "to" : "0x1c" + } + }, + "storage" : { } + }, + "0x8acee021a27779d8e98b9650722676b850b25e11" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x600035ff" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18389629d8e", + "to" : "0x393f0f18389e92307" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07669fb4b", + "to" : "0xefffffffffffe28d075e375d2" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1c", + "to" : "0x1d" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_trace.json new file mode 100644 index 0000000000..bc384fceac --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_trace.json @@ -0,0 +1,287 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.', 'call the prior contract then call log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then callcode log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then delegatecall log contract 00a0..00.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000738f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f5AF1600060006000600060007300A00000000000000000000000000000000000005AF1" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45AF2600060006000600060007300A00000000000000000000000000000000000005AF2" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x600060006000600073fb88de099e13c3ed21f80a7a1e49f8caecf10df65AF460006000600060007300A00000000000000000000000000000000000005AF4" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff300e", + "init" : "0x6004600c60003960046000f3600035ff", + "value" : "0x0" + }, + "result" : { + "address" : "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241", + "code" : "0x600035ff", + "gasUsed" : "0x338" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff2e26", + "init" : "0x60006000600060006000738f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f5af1600060006000600060007300a00000000000000000000000000000000000005af1", + "value" : "0x0" + }, + "result" : { + "address" : "0x2a504b5e7ec284aca5b6f49716611237239f0b97", + "code" : "0x", + "gasUsed" : "0x8ab" + }, + "subtraces" : 2, + "traceAddress" : [ ], + "type" : "create" + }, { + "action" : { + "callType" : "call", + "from" : "0x2a504b5e7ec284aca5b6f49716611237239f0b97", + "gas" : "0xfb2ea9", + "input" : "0x", + "to" : "0x8f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x2a504b5e7ec284aca5b6f49716611237239f0b97", + "gas" : "0xfb2be4", + "input" : "0x", + "to" : "0x00a0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30b", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 1 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff300e", + "init" : "0x6004600c60003960046000f3600035ff", + "value" : "0x0" + }, + "result" : { + "address" : "0xbd2c938b9f6bfc1a66368d08cb44dc3eb2ae27be", + "code" : "0x600035ff", + "gasUsed" : "0x338" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff2e26", + "init" : "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45af2600060006000600060007300a00000000000000000000000000000000000005af2", + "value" : "0x0" + }, + "result" : { + "address" : "0x2eca6fcfef74e2c8d03fbaf0ff6712314c9bd58b", + "code" : "0x", + "gasUsed" : "0x1c39" + }, + "subtraces" : 2, + "traceAddress" : [ ], + "type" : "create" + }, { + "action" : { + "callType" : "callcode", + "from" : "0x2eca6fcfef74e2c8d03fbaf0ff6712314c9bd58b", + "gas" : "0xfb2ea9", + "input" : "0x", + "to" : "0x2c2b9c9a4a25e24b174f26114e8926a9f2128fe4", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x138e", + "output" : "0x" + }, + "subtraces" : 1, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "address" : "0x2eca6fcfef74e2c8d03fbaf0ff6712314c9bd58b", + "balance" : "0x0", + "refundAddress" : "0x0000000000000000000000000000000000000000" + }, + "result" : null, + "subtraces" : 0, + "traceAddress" : [ 0, 0 ], + "type" : "suicide" + }, { + "action" : { + "callType" : "callcode", + "from" : "0x2eca6fcfef74e2c8d03fbaf0ff6712314c9bd58b", + "gas" : "0xfb18a5", + "input" : "0x", + "to" : "0x00a0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30b", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 1 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff300e", + "init" : "0x6004600c60003960046000f3600035ff", + "value" : "0x0" + }, + "result" : { + "address" : "0x8acee021a27779d8e98b9650722676b850b25e11", + "code" : "0x600035ff", + "gasUsed" : "0x338" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff2e4e", + "init" : "0x600060006000600073fb88de099e13c3ed21f80a7a1e49f8caecf10df65af460006000600060007300a00000000000000000000000000000000000005af4", + "value" : "0x0" + }, + "result" : { + "address" : "0xf328c11c4df88d18fcbd30ad38d8b4714f4b33bf", + "code" : "0x", + "gasUsed" : "0x1c33" + }, + "subtraces" : 2, + "traceAddress" : [ ], + "type" : "create" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0xf328c11c4df88d18fcbd30ad38d8b4714f4b33bf", + "gas" : "0xfb2ed3", + "input" : "0x", + "to" : "0xfb88de099e13c3ed21f80a7a1e49f8caecf10df6", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x138e", + "output" : "0x" + }, + "subtraces" : 1, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "address" : "0xf328c11c4df88d18fcbd30ad38d8b4714f4b33bf", + "balance" : "0x0", + "refundAddress" : "0x0000000000000000000000000000000000000000" + }, + "result" : null, + "subtraces" : 0, + "traceAddress" : [ 0, 0 ], + "type" : "suicide" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0xf328c11c4df88d18fcbd30ad38d8b4714f4b33bf", + "gas" : "0xfb18d2", + "input" : "0x", + "to" : "0x00a0000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x30b", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 1 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_vmTrace.json new file mode 100644 index 0000000000..18e8921df5 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_13_vmTrace.json @@ -0,0 +1,1075 @@ +{ + "comment" : "'Deploy contract that will self-destruct when called.', 'call the prior contract then call log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then callcode log contract 00a0..00.', 'Deploy contract that will self-destruct when called.', 'call the prior contract then delegatecall log contract 00a0..00.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000738f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f5AF1600060006000600060007300A00000000000000000000000000000000000005AF1" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45AF2600060006000600060007300A00000000000000000000000000000000000005AF2" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x6004600C60003960046000F3600035FF" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x600060006000600073fb88de099e13c3ed21f80a7a1e49f8caecf10df65AF460006000600060007300A00000000000000000000000000000000000005AF4" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6004600c60003960046000f3600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723979 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc" ], + "store" : null, + "used" : 16723976 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723973 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0x600035ff", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16723964 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723961 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723958 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16723958 + }, + "pc" : 11, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60006000600060006000738f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f5af1600060006000600060007300a00000000000000000000000000000000000005af1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723491 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723488 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723485 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723482 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723479 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8f0483125fcb9aaaefa9209d8e9d7b9c8b9fb90f" ], + "store" : null, + "used" : 16723476 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff2e12" ], + "store" : null, + "used" : 16723474 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 16462181, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16722774 + }, + "pc" : 32, + "sub" : { + "code" : "0x", + "ops" : [ ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16722771 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16722768 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16722765 + }, + "pc" : 37, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16722762 + }, + "pc" : 39, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16722759 + }, + "pc" : 41, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa0000000000000000000000000000000000000" ], + "store" : null, + "used" : 16722756 + }, + "pc" : 43, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff2b42" ], + "store" : null, + "used" : 16722754 + }, + "pc" : 64, + "sub" : null + }, { + "cost" : 16461472, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16721275 + }, + "pc" : 65, + "sub" : { + "code" : "0x608b60045360ff60016004a1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8b" ], + "store" : null, + "used" : 16460769 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16460766 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x8b", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16460760 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16460757 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16460754 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16460751 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 758, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16459993 + }, + "pc" : 11, + "sub" : null + } ] + } + } ] + } + }, { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6004600c60003960046000f3600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723979 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc" ], + "store" : null, + "used" : 16723976 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723973 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0x600035ff", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16723964 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723961 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723958 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16723958 + }, + "pc" : 11, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60006000600060006000732c2b9c9a4a25e24b174f26114e8926a9f2128fe45af2600060006000600060007300a00000000000000000000000000000000000005af2", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723491 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723488 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723485 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723482 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723479 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2c2b9c9a4a25e24b174f26114e8926a9f2128fe4" ], + "store" : null, + "used" : 16723476 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff2e12" ], + "store" : null, + "used" : 16723474 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 16462181, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16717768 + }, + "pc" : 32, + "sub" : { + "code" : "0x600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16461478 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16461475 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16456475 + }, + "pc" : 3, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717765 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717762 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717759 + }, + "pc" : 37, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717756 + }, + "pc" : 39, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717753 + }, + "pc" : 41, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa0000000000000000000000000000000000000" ], + "store" : null, + "used" : 16717750 + }, + "pc" : 43, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff17b4" ], + "store" : null, + "used" : 16717748 + }, + "pc" : 64, + "sub" : null + }, { + "cost" : 16456545, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16716269 + }, + "pc" : 65, + "sub" : { + "code" : "0x608b60045360ff60016004a1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8b" ], + "store" : null, + "used" : 16455842 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16455839 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x8b", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16455833 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16455830 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16455827 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16455824 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 758, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16455066 + }, + "pc" : 11, + "sub" : null + } ] + } + } ] + } + }, { + "output" : "0x600035ff", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6004600c60003960046000f3600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723979 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc" ], + "store" : null, + "used" : 16723976 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723973 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 9, + "ex" : { + "mem" : { + "data" : "0x600035ff", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16723964 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16723961 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723958 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16723958 + }, + "pc" : 11, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x600060006000600073fb88de099e13c3ed21f80a7a1e49f8caecf10df65af460006000600060007300a00000000000000000000000000000000000005af4", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723531 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723528 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723525 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16723522 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xfb88de099e13c3ed21f80a7a1e49f8caecf10df6" ], + "store" : null, + "used" : 16723519 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff2e3d" ], + "store" : null, + "used" : 16723517 + }, + "pc" : 29, + "sub" : null + }, { + "cost" : 16462223, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16717811 + }, + "pc" : 30, + "sub" : { + "code" : "0x600035ff", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16461520 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16461517 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16456517 + }, + "pc" : 3, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717808 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717805 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717802 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16717799 + }, + "pc" : 37, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa0000000000000000000000000000000000000" ], + "store" : null, + "used" : 16717796 + }, + "pc" : 39, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xff17e2" ], + "store" : null, + "used" : 16717794 + }, + "pc" : 60, + "sub" : null + }, { + "cost" : 16456590, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16716315 + }, + "pc" : 61, + "sub" : { + "code" : "0x608b60045360ff60016004a1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8b" ], + "store" : null, + "used" : 16455887 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16455884 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x8b", + "off" : 4 + }, + "push" : [ ], + "store" : null, + "used" : 16455878 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16455875 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16455872 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16455869 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 758, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16455111 + }, + "pc" : 11, + "sub" : null + } ] + } + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_stateDiff.json new file mode 100644 index 0000000000..22fa37ff97 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_stateDiff.json @@ -0,0 +1,148 @@ +{ + "comment" : "'CREATE', 'CREATE2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0130000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0140000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183872aa988" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0130000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1", + "to" : "0x2" + } + }, + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "*" : { + "from" : "0x000000000000000000000000aac0627078c038eb3d06e04b57d020fe212be97d", + "to" : "0x0000000000000000000000002e615edd62acdfeb8ce3270b30fb36f0dbb8779d" + } + } + } + }, + "0x2e615edd62acdfeb8ce3270b30fb36f0dbb8779d" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0xffff" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "+" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "+" : "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd26917031" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183872aa988", + "to" : "0x393f0f184724d2d46" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0140000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1", + "to" : "0x2" + } + }, + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "*" : { + "from" : "0x0000000000000000000000000deea5bd06fb86553643c1e94a2f5aac632b9ec9", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd26917031", + "to" : "0xffffffffffffffffffffffffffffffffc3b6eec73" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1f", + "to" : "0x20" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_trace.json new file mode 100644 index 0000000000..01331d7091 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_trace.json @@ -0,0 +1,95 @@ +{ + "comment" : "'CREATE', 'CREATE2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0130000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0140000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0130000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x131ae", + "output" : "0x" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "from" : "0x0130000000000000000000000000000000000000", + "gas" : "0xfb3412", + "init" : "0x600160015560015460025561ffff6000526002601ef3", + "value" : "0x0" + }, + "result" : { + "address" : "0x2e615edd62acdfeb8ce3270b30fb36f0dbb8779d", + "code" : "0xffff", + "gasUsed" : "0xa10e" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "create" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0140000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0xfbc4b2", + "output" : "0x" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "from" : "0x0140000000000000000000000000000000000000", + "gas" : "0xfb3409", + "init" : "0x600160015560015460025560ff60005360016000f3", + "value" : "0x0" + }, + "error" : "Out of gas", + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "create" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_vmTrace.json new file mode 100644 index 0000000000..43e18dac3a --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_14_vmTrace.json @@ -0,0 +1,410 @@ +{ + "comment" : "'CREATE', 'CREATE2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0130000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ], [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0140000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x75600160015560015460025561ffff6000526002601ef36000526016600a6000f060005500", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x600160015560015460025561ffff6000526002601ef3" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x00000000000000000000600160015560015460025561ffff6000526002601ef3", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 25, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x16" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 26, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 28, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756181 + }, + "pc" : 30, + "sub" : null + }, { + "cost" : 16494866, + "ex" : { + "mem" : null, + "push" : [ "0x2e615edd62acdfeb8ce3270b30fb36f0dbb8779d" ], + "store" : null, + "used" : 16682951 + }, + "pc" : 32, + "sub" : { + "code" : "0x600160015560015460025561ffff6000526002601ef3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16462863 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16462860 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x1" + }, + "used" : 16442860 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16442857 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16442057 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16442054 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x1" + }, + "used" : 16422054 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffff" ], + "store" : null, + "used" : 16422051 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16422048 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000000000000000000000000000000000000000ffff", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16422042 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16422039 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1e" ], + "store" : null, + "used" : 16422036 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16422036 + }, + "pc" : 21, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16682948 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x2e615edd62acdfeb8ce3270b30fb36f0dbb8779d" + }, + "used" : 16677948 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16677948 + }, + "pc" : 36, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x74600160015560015460025560ff60005360016000f360005260006015600b6000f560005500", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x600160015560015460025560ff60005360016000f3" ], + "store" : null, + "used" : 16756199 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756196 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000600160015560015460025560ff60005360016000f3", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16756190 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756187 + }, + "pc" : 25, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x15" ], + "store" : null, + "used" : 16756184 + }, + "pc" : 27, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb" ], + "store" : null, + "used" : 16756181 + }, + "pc" : 29, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16756178 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 16494863, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 261315 + }, + "pc" : 33, + "sub" : { + "code" : "0x600160015560015460025560ff60005360016000f3", + "ops" : [ ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 261312 + }, + "pc" : 34, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x0" + }, + "used" : 256312 + }, + "pc" : 36, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 256312 + }, + "pc" : 37, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_stateDiff.json new file mode 100644 index 0000000000..12c2f24794 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_stateDiff.json @@ -0,0 +1,239 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386a499b1" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000002" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d07927ff28" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386a499b1", + "to" : "0x393f0f183871b18f4" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000003" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000004" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07927ff28", + "to" : "0xefffffffffffe28d078b17fe5" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x18", + "to" : "0x19" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183871b18f4", + "to" : "0x393f0f183874eaae7" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d078b17fe5", + "to" : "0xefffffffffffe28d0787dedf2" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x19", + "to" : "0x1a" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183874eaae7", + "to" : "0x393f0f18387823740" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0010000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d0787dedf2", + "to" : "0xefffffffffffe28d0784a6199" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1a", + "to" : "0x1b" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_trace.json new file mode 100644 index 0000000000..7b65298f67 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_trace.json @@ -0,0 +1,191 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab2e", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x9f59", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba993", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x9c58", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab2e", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x2a29", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba993", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x2728", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab3a", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x19c1", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba99f", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab46", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x19c1", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba9aa", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_vmTrace.json new file mode 100644 index 0000000000..6f8c5a7991 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_15_vmTrace.json @@ -0,0 +1,1255 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755499 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755496 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755493 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755488 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755485 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755482 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755479 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755452 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755449 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755447 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755444 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755441 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaaef" ], + "store" : null, + "used" : 16755439 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493647, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16714715 + }, + "pc" : 21, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492944 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492941 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492938 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492935 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x1" + }, + "used" : 16472935 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16472932 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16472929 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16472926 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16472923 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x2" + }, + "used" : 16452923 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16714712 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16714709 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16714709 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755499 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755496 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755493 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755488 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755485 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755482 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755479 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755452 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755449 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755447 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755444 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755441 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaaef" ], + "store" : null, + "used" : 16755439 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493647, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16744715 + }, + "pc" : 21, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492944 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16492941 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492938 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492935 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16487935 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16487932 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16487929 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16487926 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16487923 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x4" + }, + "used" : 16482923 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16744712 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16744709 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16744709 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755511 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755508 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755505 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755503 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755500 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755497 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755494 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755464 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755461 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755459 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755456 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755453 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaafb" ], + "store" : null, + "used" : 16755451 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493659, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16748927 + }, + "pc" : 21, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492956 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16492953 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492950 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492947 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16492147 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16492144 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492141 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16492138 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492135 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16487135 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16748924 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16748921 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16748921 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755523 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755520 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755517 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755515 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755512 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755509 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755506 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755503 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755476 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755473 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755471 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755468 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755465 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffab07" ], + "store" : null, + "used" : 16755463 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493670, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16748939 + }, + "pc" : 21, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492967 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492964 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492961 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492958 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16492158 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16492155 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492152 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16492149 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16492146 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x0" + }, + "used" : 16487146 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16748936 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16748933 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16748933 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_stateDiff.json new file mode 100644 index 0000000000..b240e14f18 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_stateDiff.json @@ -0,0 +1,239 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18386a497d3" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0060000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000001" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000002" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d079280106" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18386a497d3", + "to" : "0x393f0f183871b1538" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0060000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000003" + } + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000004" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d079280106", + "to" : "0xefffffffffffe28d078b183a1" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x18", + "to" : "0x19" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183871b1538", + "to" : "0x393f0f183874ea63c" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0060000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d078b183a1", + "to" : "0xefffffffffffe28d0787df29d" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x19", + "to" : "0x1a" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f183874ea63c", + "to" : "0x393f0f183878231a6" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0060000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "*" : { + "from" : "0x0000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d0787df29d", + "to" : "0xefffffffffffe28d0784a6733" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1a", + "to" : "0x1b" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_trace.json new file mode 100644 index 0000000000..89f2cf407c --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_trace.json @@ -0,0 +1,191 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab2e", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0060000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x9f57", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfba995", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x9c58", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab2e", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0060000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x2a27", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfba995", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x2728", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab3a", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0060000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x19bf", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfba9a0", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab46", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0060000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x19bf", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "delegatecall", + "from" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfba9ac", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x16c0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_vmTrace.json new file mode 100644 index 0000000000..2915b64cf8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_16_vmTrace.json @@ -0,0 +1,1215 @@ +{ + "comment" : "'Set contract storage (key,value)'s: (1,1),(2,2)', 'Set contract storage (key,value)'s: (1,3),(2,4)', 'Set contract storage (key,value)'s: (1,3),(1,0)', 'Clear contract storage keys 1 and 2'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0060000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602060006020360380602060003760006000355af460206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755499 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755496 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755493 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755488 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755485 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755482 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755479 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755452 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755449 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755446 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755443 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaaf1" ], + "store" : null, + "used" : 16755441 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 16493649, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16714717 + }, + "pc" : 20, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492946 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492943 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492940 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492937 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x1" + }, + "used" : 16472937 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16472934 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16472931 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16472928 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16472925 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x2" + }, + "used" : 16452925 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16714714 + }, + "pc" : 21, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16714711 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16714711 + }, + "pc" : 25, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602060006020360380602060003760006000355af460206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755499 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755496 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755493 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755488 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755485 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755482 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755479 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755452 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755449 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755446 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755443 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaaf1" ], + "store" : null, + "used" : 16755441 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 16493649, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16744717 + }, + "pc" : 20, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492946 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16492943 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492940 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492937 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16487937 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16487934 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16487931 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16487928 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16487925 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x4" + }, + "used" : 16482925 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16744714 + }, + "pc" : 21, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16744711 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16744711 + }, + "pc" : 25, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602060006020360380602060003760006000355af460206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755511 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755508 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755505 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755503 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755500 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755497 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755494 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755464 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755461 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755458 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755455 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaafd" ], + "store" : null, + "used" : 16755453 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 16493660, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16748929 + }, + "pc" : 20, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492957 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16492954 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492951 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492948 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16492148 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16492145 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492142 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16492139 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492136 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16487136 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16748926 + }, + "pc" : 21, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16748923 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16748923 + }, + "pc" : 25, + "sub" : null + } ] + } + }, { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602060006020360380602060003760006000355af460206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755523 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755520 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755517 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755515 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755512 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755509 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755506 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755503 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755476 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755473 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755470 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755467 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffab09" ], + "store" : null, + "used" : 16755465 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 16493672, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16748941 + }, + "pc" : 20, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492969 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492966 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492963 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492960 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16492160 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16492157 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492154 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16492151 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16492148 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x0" + }, + "used" : 16487148 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16748938 + }, + "pc" : 21, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16748935 + }, + "pc" : 23, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16748935 + }, + "pc" : 25, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_stateDiff.json new file mode 100644 index 0000000000..36ee3f40ce --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract. Using STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0120000000000000000000000000000000000000", + "gas" : "0x30d40", + "gasPrice" : "0x1", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18385c10c8b" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d07a0b8c4e" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_trace.json new file mode 100644 index 0000000000..4b41f985e2 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_trace.json @@ -0,0 +1,59 @@ +{ + "comment" : "'Proxy call to another contract. Using STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0120000000000000000000000000000000000000", + "gas" : "0x30d40", + "gasPrice" : "0x1", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0x2b654", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "to" : "0x0120000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x301", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "staticcall", + "from" : "0x0120000000000000000000000000000000000000", + "gas" : "0x2a88c", + "input" : "0x", + "to" : "0x0000000000000000000000000000000000000010", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_vmTrace.json new file mode 100644 index 0000000000..45bc09bcc6 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_17_vmTrace.json @@ -0,0 +1,216 @@ +{ + "comment" : "'Proxy call to another contract. Using STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0120000000000000000000000000000000000000", + "gas" : "0x30d40", + "gasPrice" : "0x1", + "data" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355afa60206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 177745 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 177742 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 177739 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x94" ], + "store" : null, + "used" : 177737 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x74" ], + "store" : null, + "used" : 177734 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x74", "0x74" ], + "store" : null, + "used" : 177731 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 177728 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 177725 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 177698 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 177695 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 177693 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 177690 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10" ], + "store" : null, + "used" : 177687 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x2b615" ], + "store" : null, + "used" : 177685 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 174920, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 176985 + }, + "pc" : 21, + "sub" : { + "code" : "0x", + "ops" : [ ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 176982 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 176979 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 176979 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_stateDiff.json new file mode 100644 index 0000000000..abc60bea2e --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL and STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183861b6429" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27a0b590" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_trace.json new file mode 100644 index 0000000000..c26b04ed23 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_trace.json @@ -0,0 +1,91 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL and STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffa7e2", + "input" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x915", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba648", + "input" : "0x00000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x608", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012" + }, + "subtraces" : 1, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xf7b4ba", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "to" : "0x0120000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x301", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012" + }, + "subtraces" : 1, + "traceAddress" : [ 0, 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "staticcall", + "from" : "0x0120000000000000000000000000000000000000", + "gas" : "0xf3d2f9", + "input" : "0x", + "to" : "0x0000000000000000000000000000000000000010", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0, 0, 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_vmTrace.json new file mode 100644 index 0000000000..1b7ed56bbc --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_18_vmTrace.json @@ -0,0 +1,594 @@ +{ + "comment" : "'Proxy call to another contract - several levels deep. Using CALL and STATICCALL.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754655 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754652 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754649 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xd4" ], + "store" : null, + "used" : 16754647 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb4" ], + "store" : null, + "used" : 16754644 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb4", "0xb4" ], + "store" : null, + "used" : 16754641 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754638 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754635 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 39, + "ex" : { + "mem" : { + "data" : "0x00000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16754596 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754593 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754591 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754588 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40000000000000000000000000000000000000" ], + "store" : null, + "used" : 16754585 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffa797" ], + "store" : null, + "used" : 16754583 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16492804, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16752339 + }, + "pc" : 21, + "sub" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492101 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492098 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492095 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xb4" ], + "store" : null, + "used" : 16492093 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x94" ], + "store" : null, + "used" : 16492090 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x94", "0x94" ], + "store" : null, + "used" : 16492087 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492084 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492081 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 33, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16492048 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492045 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492043 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492040 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x120000000000000000000000000000000000000" ], + "store" : null, + "used" : 16492037 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xfba603" ], + "store" : null, + "used" : 16492035 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16234358, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16490566 + }, + "pc" : 21, + "sub" : { + "code" : "0x60206000602036038060206000376000346000355afa60206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16233655 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233652 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16233649 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x94" ], + "store" : null, + "used" : 16233647 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x74" ], + "store" : null, + "used" : 16233644 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x74", "0x74" ], + "store" : null, + "used" : 16233641 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16233638 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233635 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120785e45de3d6be050ba3c4d33ff0bb2d010ace3b1dfe9c49f4c7a8075102fa19a86c010ace3b1dfe9c49f4c7a8075102fa19a86d", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16233608 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233605 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233603 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16233600 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10" ], + "store" : null, + "used" : 16233597 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xf7b47b" ], + "store" : null, + "used" : 16233595 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 15979957, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16232895 + }, + "pc" : 21, + "sub" : { + "code" : "0x", + "ops" : [ ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16232892 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16232889 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16232889 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16490563 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16490560 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16490560 + }, + "pc" : 26, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16752336 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16752333 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16752333 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_stateDiff.json new file mode 100644 index 0000000000..fb5061ed6e --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_stateDiff.json @@ -0,0 +1,144 @@ +{ + "comment" : "'Deploy ERC20 contract', 'Transfert ERC20 tokens (with contract created 0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x606060405234156200001057600080fd5b604051620016d8380380620016d8833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836003819055508260009080519060200190620000ad9291906200012e565b508060019080519060200190620000c69291906200012e565b5081600260006101000a81548160ff021916908360ff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050620001dd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6114eb80620001ed6000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87", + "gas" : "0xfffff2", + "gasPrice" : "0x23c346000", + "data" : "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e400000000000000000000000000000000000000000000003635c9adc5dea00000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18398dce1d4" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241" : { + "balance" : { + "+" : "0x0" + }, + "code" : { + "+" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029" + }, + "nonce" : { + "+" : "0x1" + }, + "storage" : { + "0x0000000000000000000000000000000000000000000000000000000000000000" : { + "+" : "0x424e420000000000000000000000000000000000000000000000000000000006" + }, + "0x0000000000000000000000000000000000000000000000000000000000000001" : { + "+" : "0x424e420000000000000000000000000000000000000000000000000000000006" + }, + "0x0000000000000000000000000000000000000000000000000000000000000002" : { + "+" : "0x0000000000000000000000000000000000000000000000000000000000000012" + }, + "0x0000000000000000000000000000000000000000000000000000000000000003" : { + "+" : "0x000000000000000000000000000000000000000000a56fa5b99019a5c8000000" + }, + "0x0000000000000000000000000000000000000000000000000000000000000004" : { + "+" : "0x000000000000000000000000627306090abab3a6e1400e9345bc60c78a8bef57" + }, + "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" : { + "+" : "0x000000000000000000000000000000000000000000a56fa5b99019a5c8000000" + } + } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d066efb705" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18398dce1d4", + "to" : "0x393f245bb64e921d4" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d066efb705", + "to" : "0xefffffffffffcd4989ae37705" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x18", + "to" : "0x19" + } + }, + "storage" : { } + }, + "0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87" : { + "balance" : "=", + "code" : "=", + "nonce" : "=", + "storage" : { + "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" : { + "*" : { + "from" : "0x00000000000000000000000000000000000000000000003635c9adc5dea00000", + "to" : "0x00000000000000000000000000000000000000000000006c6b935b8bbd400000" + } + }, + "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" : { + "*" : { + "from" : "0x000000000000000000000000000000000000000000a56f6f83c66bdfe9600000", + "to" : "0x000000000000000000000000000000000000000000a56f394dfcbe1a0ac00000" + } + } + } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_trace.json new file mode 100644 index 0000000000..de996ab62d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_trace.json @@ -0,0 +1,69 @@ +{ + "comment" : "'Deploy ERC20 contract', 'Transfert ERC20 tokens (with contract created 0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x606060405234156200001057600080fd5b604051620016d8380380620016d8833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836003819055508260009080519060200190620000ad9291906200012e565b508060019080519060200190620000c69291906200012e565b5081600260006101000a81548160ff021916908360ff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050620001dd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6114eb80620001ed6000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87", + "gas" : "0xfffff2", + "gasPrice" : "0x23c346000", + "data" : "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e400000000000000000000000000000000000000000000003635c9adc5dea00000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xfdc95a", + "init" : "0x606060405234156200001057600080fd5b604051620016d8380380620016d8833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836003819055508260009080519060200190620000ad9291906200012e565b508060019080519060200190620000c69291906200012e565b5081600260006101000a81548160ff021916908360ff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050620001dd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6114eb80620001ed6000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "address" : "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241", + "code" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "gasUsed" : "0x124192" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffab66", + "input" : "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e400000000000000000000000000000000000000000000003635c9adc5dea00000", + "to" : "0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x43aa", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_vmTrace.json new file mode 100644 index 0000000000..0404d15b88 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_19_vmTrace.json @@ -0,0 +1,7463 @@ +{ + "comment" : "'Deploy ERC20 contract', 'Transfert ERC20 tokens (with contract created 0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x606060405234156200001057600080fd5b604051620016d8380380620016d8833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836003819055508260009080519060200190620000ad9291906200012e565b508060019080519060200190620000c69291906200012e565b5081600260006101000a81548160ff021916908360ff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050620001dd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6114eb80620001ed6000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ], [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0xbaaa2a3237035a2c7fa2a33c76b44a8c6fe18e87", + "gas" : "0xfffff2", + "gasPrice" : "0x23c346000", + "data" : "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e400000000000000000000000000000000000000000000003635c9adc5dea00000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x606060405234156200001057600080fd5b604051620016d8380380620016d8833981016040528080519060200190919080518201919060200180519060200190919080518201919050505b83600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836003819055508260009080519060200190620000ad9291906200012e565b508060019080519060200190620000c69291906200012e565b5081600260006101000a81548160ff021916908360ff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50505050620001dd565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017157805160ff1916838001178555620001a2565b82800160010185558215620001a2579182015b82811115620001a157825182559160200191906001019062000184565b5b509050620001b19190620001b5565b5090565b620001da91905b80821115620001d6576000816000905550600101620001bc565b5090565b90565b6114eb80620001ed6000396000f300606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16632151 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16632148 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 12, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000060", + "off" : 64 + }, + "push" : [ ], + "store" : null, + "used" : 16632136 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16632134 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16632131 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10" ], + "store" : null, + "used" : 16632128 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16632118 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16632117 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16632114 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000060", + "off" : 64 + }, + "push" : [ "0x60" ], + "store" : null, + "used" : 16632111 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x16d8" ], + "store" : null, + "used" : 16632108 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x17d8" ], + "store" : null, + "used" : 16632106 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16632103 + }, + "pc" : 25, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100", "0x100" ], + "store" : null, + "used" : 16632100 + }, + "pc" : 26, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x16d8" ], + "store" : null, + "used" : 16632097 + }, + "pc" : 27, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x100", "0x100", "0x16d8", "0x60" ], + "store" : null, + "used" : 16632094 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 51, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000000000000000000000a56fa5b99019a5c80000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003424e4200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003424e420000000000000000000000000000000000000000000000000000000000", + "off" : 96 + }, + "push" : [ ], + "store" : null, + "used" : 16632043 + }, + "pc" : 32, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x100", "0x60" ], + "store" : null, + "used" : 16632040 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x160" ], + "store" : null, + "used" : 16632037 + }, + "pc" : 34, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16632034 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000160", + "off" : 64 + }, + "push" : [ ], + "store" : null, + "used" : 16632031 + }, + "pc" : 37, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60" ], + "store" : null, + "used" : 16632028 + }, + "pc" : 38, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60" ], + "store" : null, + "used" : 16632025 + }, + "pc" : 39, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000000000000000000000a56fa5b99019a5c8000000", + "off" : 96 + }, + "push" : [ "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16632022 + }, + "pc" : 40, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0x60" ], + "store" : null, + "used" : 16632019 + }, + "pc" : 41, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16632016 + }, + "pc" : 42, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16632013 + }, + "pc" : 44, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16632010 + }, + "pc" : 45, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0x80", "0x60" ], + "store" : null, + "used" : 16632007 + }, + "pc" : 46, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x80" ], + "store" : null, + "used" : 16632004 + }, + "pc" : 47, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16632001 + }, + "pc" : 48, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000080", + "off" : 128 + }, + "push" : [ "0x80" ], + "store" : null, + "used" : 16631998 + }, + "pc" : 49, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x80", "0x80", "0x60" ], + "store" : null, + "used" : 16631995 + }, + "pc" : 50, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xe0" ], + "store" : null, + "used" : 16631992 + }, + "pc" : 51, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xe0", "0x80", "0x60" ], + "store" : null, + "used" : 16631989 + }, + "pc" : 52, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x80" ], + "store" : null, + "used" : 16631986 + }, + "pc" : 53, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16631983 + }, + "pc" : 54, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16631980 + }, + "pc" : 56, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa0", "0xa0" ], + "store" : null, + "used" : 16631977 + }, + "pc" : 57, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000012", + "off" : 160 + }, + "push" : [ "0x12" ], + "store" : null, + "used" : 16631974 + }, + "pc" : 58, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12", "0xa0" ], + "store" : null, + "used" : 16631971 + }, + "pc" : 59, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16631968 + }, + "pc" : 60, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc0" ], + "store" : null, + "used" : 16631965 + }, + "pc" : 62, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc0", "0x12" ], + "store" : null, + "used" : 16631962 + }, + "pc" : 63, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12", "0xc0", "0x60" ], + "store" : null, + "used" : 16631959 + }, + "pc" : 64, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0xc0" ], + "store" : null, + "used" : 16631956 + }, + "pc" : 65, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc0", "0xc0" ], + "store" : null, + "used" : 16631953 + }, + "pc" : 66, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x00000000000000000000000000000000000000000000000000000000000000c0", + "off" : 192 + }, + "push" : [ "0xc0" ], + "store" : null, + "used" : 16631950 + }, + "pc" : 67, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0xc0", "0xc0", "0x60" ], + "store" : null, + "used" : 16631947 + }, + "pc" : 68, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x120" ], + "store" : null, + "used" : 16631944 + }, + "pc" : 69, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x120", "0xc0", "0x60" ], + "store" : null, + "used" : 16631941 + }, + "pc" : 70, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0xc0" ], + "store" : null, + "used" : 16631938 + }, + "pc" : 71, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16631936 + }, + "pc" : 72, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16631934 + }, + "pc" : 73, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16631933 + }, + "pc" : 74, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0xe0", "0x12", "0x120", "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16631930 + }, + "pc" : 75, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16631927 + }, + "pc" : 76, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16631924 + }, + "pc" : 78, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16631922 + }, + "pc" : 80, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16631919 + }, + "pc" : 81, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16631916 + }, + "pc" : 102, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16631913 + }, + "pc" : 103, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16631910 + }, + "pc" : 124, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x0" ], + "store" : null, + "used" : 16631907 + }, + "pc" : 125, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000627306090abab3a6e1400e9345bc60c78a8bef57", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16631904 + }, + "pc" : 126, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16631901 + }, + "pc" : 127, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16631898 + }, + "pc" : 129, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16631895 + }, + "pc" : 130, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16631892 + }, + "pc" : 131, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16631889 + }, + "pc" : 132, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16631886 + }, + "pc" : 133, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16631883 + }, + "pc" : 135, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16631880 + }, + "pc" : 136, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16631838 + }, + "pc" : 138, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d", "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16631835 + }, + "pc" : 139, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16631832 + }, + "pc" : 140, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d", + "val" : "0xa56fa5b99019a5c8000000" + }, + "used" : 16611832 + }, + "pc" : 141, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16611830 + }, + "pc" : 142, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0xe0", "0x12", "0x120", "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16611827 + }, + "pc" : 143, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16611824 + }, + "pc" : 144, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0x3", "0xa56fa5b99019a5c8000000" ], + "store" : null, + "used" : 16611821 + }, + "pc" : 146, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56fa5b99019a5c8000000", "0x3" ], + "store" : null, + "used" : 16611818 + }, + "pc" : 147, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x3", + "val" : "0xa56fa5b99019a5c8000000" + }, + "used" : 16591818 + }, + "pc" : 148, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16591816 + }, + "pc" : 149, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xe0", "0x12", "0x120", "0xe0" ], + "store" : null, + "used" : 16591813 + }, + "pc" : 150, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16591810 + }, + "pc" : 151, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xe0" ], + "store" : null, + "used" : 16591807 + }, + "pc" : 153, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xe0", "0xe0" ], + "store" : null, + "used" : 16591804 + }, + "pc" : 154, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "off" : 224 + }, + "push" : [ "0x3" ], + "store" : null, + "used" : 16591801 + }, + "pc" : 155, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0xe0" ], + "store" : null, + "used" : 16591798 + }, + "pc" : 156, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16591795 + }, + "pc" : 157, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16591792 + }, + "pc" : 159, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100", "0x3" ], + "store" : null, + "used" : 16591789 + }, + "pc" : 160, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xad" ], + "store" : null, + "used" : 16591786 + }, + "pc" : 161, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xad", "0x100", "0x3", "0x0" ], + "store" : null, + "used" : 16591783 + }, + "pc" : 165, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x3", "0x100" ], + "store" : null, + "used" : 16591780 + }, + "pc" : 166, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100", "0x3" ], + "store" : null, + "used" : 16591777 + }, + "pc" : 167, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12e" ], + "store" : null, + "used" : 16591774 + }, + "pc" : 168, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16591766 + }, + "pc" : 172, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16591765 + }, + "pc" : 302, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x100", "0x3", "0x0" ], + "store" : null, + "used" : 16591762 + }, + "pc" : 303, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x0" ], + "store" : null, + "used" : 16591759 + }, + "pc" : 304, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590959 + }, + "pc" : 305, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16590956 + }, + "pc" : 306, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x1", "0x0" ], + "store" : null, + "used" : 16590953 + }, + "pc" : 308, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16590950 + }, + "pc" : 309, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590947 + }, + "pc" : 311, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16590944 + }, + "pc" : 312, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16590941 + }, + "pc" : 313, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16590936 + }, + "pc" : 316, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16590933 + }, + "pc" : 317, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590930 + }, + "pc" : 318, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16590927 + }, + "pc" : 319, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2", "0x0" ], + "store" : null, + "used" : 16590924 + }, + "pc" : 321, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590919 + }, + "pc" : 322, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x0" ], + "store" : null, + "used" : 16590916 + }, + "pc" : 323, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590913 + }, + "pc" : 324, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16590910 + }, + "pc" : 326, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16590907 + }, + "pc" : 327, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590904 + }, + "pc" : 329, + "sub" : null + }, { + "cost" : 36, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16590868 + }, + "pc" : 331, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x0" ], + "store" : null, + "used" : 16590865 + }, + "pc" : 332, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16590862 + }, + "pc" : 333, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16590859 + }, + "pc" : 335, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16590856 + }, + "pc" : 336, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x1f" ], + "store" : null, + "used" : 16590853 + }, + "pc" : 338, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590848 + }, + "pc" : 339, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x0", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16590845 + }, + "pc" : 340, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16590842 + }, + "pc" : 341, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x3", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x100" ], + "store" : null, + "used" : 16590839 + }, + "pc" : 342, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x100", "0x3" ], + "store" : null, + "used" : 16590836 + }, + "pc" : 343, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16590833 + }, + "pc" : 344, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16590830 + }, + "pc" : 346, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x171" ], + "store" : null, + "used" : 16590827 + }, + "pc" : 347, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16590817 + }, + "pc" : 351, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100", "0x100" ], + "store" : null, + "used" : 16590814 + }, + "pc" : 352, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x424e420000000000000000000000000000000000000000000000000000000000", + "off" : 256 + }, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16590811 + }, + "pc" : 353, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16590808 + }, + "pc" : 354, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" ], + "store" : null, + "used" : 16590805 + }, + "pc" : 356, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16590802 + }, + "pc" : 357, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x100", "0x424e420000000000000000000000000000000000000000000000000000000000", "0x3" ], + "store" : null, + "used" : 16590799 + }, + "pc" : 358, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x3" ], + "store" : null, + "used" : 16590796 + }, + "pc" : 359, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6" ], + "store" : null, + "used" : 16590793 + }, + "pc" : 360, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000006" ], + "store" : null, + "used" : 16590790 + }, + "pc" : 361, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x3", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x100", "0x424e420000000000000000000000000000000000000000000000000000000006", "0x0" ], + "store" : null, + "used" : 16590787 + }, + "pc" : 362, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x424e420000000000000000000000000000000000000000000000000000000006" + }, + "used" : 16570787 + }, + "pc" : 363, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1a2" ], + "store" : null, + "used" : 16570784 + }, + "pc" : 364, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570776 + }, + "pc" : 368, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570775 + }, + "pc" : 418, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570773 + }, + "pc" : 419, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x3" ], + "store" : null, + "used" : 16570770 + }, + "pc" : 420, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570768 + }, + "pc" : 421, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b1" ], + "store" : null, + "used" : 16570765 + }, + "pc" : 422, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b1", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570762 + }, + "pc" : 426, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570759 + }, + "pc" : 427, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b5" ], + "store" : null, + "used" : 16570756 + }, + "pc" : 428, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570748 + }, + "pc" : 432, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570747 + }, + "pc" : 437, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1da" ], + "store" : null, + "used" : 16570744 + }, + "pc" : 438, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1da", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570741 + }, + "pc" : 442, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570738 + }, + "pc" : 443, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570737 + }, + "pc" : 444, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570734 + }, + "pc" : 445, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563" ], + "store" : null, + "used" : 16570731 + }, + "pc" : 446, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16570728 + }, + "pc" : 447, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16570725 + }, + "pc" : 448, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1d6" ], + "store" : null, + "used" : 16570722 + }, + "pc" : 449, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570712 + }, + "pc" : 453, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570711 + }, + "pc" : 470, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570709 + }, + "pc" : 471, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x1da" ], + "store" : null, + "used" : 16570706 + }, + "pc" : 472, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570698 + }, + "pc" : 473, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570697 + }, + "pc" : 474, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563", "0x1b1" ], + "store" : null, + "used" : 16570694 + }, + "pc" : 475, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570686 + }, + "pc" : 476, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570685 + }, + "pc" : 433, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570683 + }, + "pc" : 434, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xad" ], + "store" : null, + "used" : 16570680 + }, + "pc" : 435, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570672 + }, + "pc" : 436, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570671 + }, + "pc" : 173, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570669 + }, + "pc" : 174, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x120", "0x120" ], + "store" : null, + "used" : 16570666 + }, + "pc" : 175, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16570663 + }, + "pc" : 176, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x120" ], + "store" : null, + "used" : 16570660 + }, + "pc" : 178, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x120", "0x120" ], + "store" : null, + "used" : 16570657 + }, + "pc" : 179, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000003", + "off" : 288 + }, + "push" : [ "0x3" ], + "store" : null, + "used" : 16570654 + }, + "pc" : 180, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x120" ], + "store" : null, + "used" : 16570651 + }, + "pc" : 181, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16570648 + }, + "pc" : 182, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x140" ], + "store" : null, + "used" : 16570645 + }, + "pc" : 184, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x140", "0x3" ], + "store" : null, + "used" : 16570642 + }, + "pc" : 185, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc6" ], + "store" : null, + "used" : 16570639 + }, + "pc" : 186, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc6", "0x140", "0x3", "0x1" ], + "store" : null, + "used" : 16570636 + }, + "pc" : 190, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x3", "0x140" ], + "store" : null, + "used" : 16570633 + }, + "pc" : 191, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x140", "0x3" ], + "store" : null, + "used" : 16570630 + }, + "pc" : 192, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12e" ], + "store" : null, + "used" : 16570627 + }, + "pc" : 193, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570619 + }, + "pc" : 197, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16570618 + }, + "pc" : 302, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x140", "0x3", "0x1" ], + "store" : null, + "used" : 16570615 + }, + "pc" : 303, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x1" ], + "store" : null, + "used" : 16570612 + }, + "pc" : 304, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569812 + }, + "pc" : 305, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16569809 + }, + "pc" : 306, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x1", "0x0" ], + "store" : null, + "used" : 16569806 + }, + "pc" : 308, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16569803 + }, + "pc" : 309, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569800 + }, + "pc" : 311, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16569797 + }, + "pc" : 312, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16569794 + }, + "pc" : 313, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16569789 + }, + "pc" : 316, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16569786 + }, + "pc" : 317, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569783 + }, + "pc" : 318, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16569780 + }, + "pc" : 319, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2", "0x0" ], + "store" : null, + "used" : 16569777 + }, + "pc" : 321, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569772 + }, + "pc" : 322, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x1" ], + "store" : null, + "used" : 16569769 + }, + "pc" : 323, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569766 + }, + "pc" : 324, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16569763 + }, + "pc" : 326, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16569760 + }, + "pc" : 327, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569757 + }, + "pc" : 329, + "sub" : null + }, { + "cost" : 36, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16569721 + }, + "pc" : 331, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x0" ], + "store" : null, + "used" : 16569718 + }, + "pc" : 332, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16569715 + }, + "pc" : 333, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16569712 + }, + "pc" : 335, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16569709 + }, + "pc" : 336, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x1f" ], + "store" : null, + "used" : 16569706 + }, + "pc" : 338, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569701 + }, + "pc" : 339, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x0", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16569698 + }, + "pc" : 340, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16569695 + }, + "pc" : 341, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x3", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x140" ], + "store" : null, + "used" : 16569692 + }, + "pc" : 342, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x140", "0x3" ], + "store" : null, + "used" : 16569689 + }, + "pc" : 343, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f" ], + "store" : null, + "used" : 16569686 + }, + "pc" : 344, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16569683 + }, + "pc" : 346, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x171" ], + "store" : null, + "used" : 16569680 + }, + "pc" : 347, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16569670 + }, + "pc" : 351, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x140", "0x140" ], + "store" : null, + "used" : 16569667 + }, + "pc" : 352, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x424e420000000000000000000000000000000000000000000000000000000000", + "off" : 320 + }, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16569664 + }, + "pc" : 353, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16569661 + }, + "pc" : 354, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" ], + "store" : null, + "used" : 16569658 + }, + "pc" : 356, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16569655 + }, + "pc" : 357, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x140", "0x424e420000000000000000000000000000000000000000000000000000000000", "0x3" ], + "store" : null, + "used" : 16569652 + }, + "pc" : 358, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3", "0x3" ], + "store" : null, + "used" : 16569649 + }, + "pc" : 359, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6" ], + "store" : null, + "used" : 16569646 + }, + "pc" : 360, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x424e420000000000000000000000000000000000000000000000000000000006" ], + "store" : null, + "used" : 16569643 + }, + "pc" : 361, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x3", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x140", "0x424e420000000000000000000000000000000000000000000000000000000006", "0x1" ], + "store" : null, + "used" : 16569640 + }, + "pc" : 362, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x424e420000000000000000000000000000000000000000000000000000000006" + }, + "used" : 16549640 + }, + "pc" : 363, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1a2" ], + "store" : null, + "used" : 16549637 + }, + "pc" : 364, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549629 + }, + "pc" : 368, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549628 + }, + "pc" : 418, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549626 + }, + "pc" : 419, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x3" ], + "store" : null, + "used" : 16549623 + }, + "pc" : 420, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549621 + }, + "pc" : 421, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b1" ], + "store" : null, + "used" : 16549618 + }, + "pc" : 422, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b1", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549615 + }, + "pc" : 426, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549612 + }, + "pc" : 427, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1b5" ], + "store" : null, + "used" : 16549609 + }, + "pc" : 428, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549601 + }, + "pc" : 432, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549600 + }, + "pc" : 437, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1da" ], + "store" : null, + "used" : 16549597 + }, + "pc" : 438, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1da", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549594 + }, + "pc" : 442, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549591 + }, + "pc" : 443, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549590 + }, + "pc" : 444, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549587 + }, + "pc" : 445, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6" ], + "store" : null, + "used" : 16549584 + }, + "pc" : 446, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16549581 + }, + "pc" : 447, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16549578 + }, + "pc" : 448, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1d6" ], + "store" : null, + "used" : 16549575 + }, + "pc" : 449, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549565 + }, + "pc" : 453, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549564 + }, + "pc" : 470, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549562 + }, + "pc" : 471, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x1da" ], + "store" : null, + "used" : 16549559 + }, + "pc" : 472, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549551 + }, + "pc" : 473, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549550 + }, + "pc" : 474, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6", "0x1b1" ], + "store" : null, + "used" : 16549547 + }, + "pc" : 475, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549539 + }, + "pc" : 476, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549538 + }, + "pc" : 433, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549536 + }, + "pc" : 434, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0xc6" ], + "store" : null, + "used" : 16549533 + }, + "pc" : 435, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549525 + }, + "pc" : 436, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549524 + }, + "pc" : 198, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16549522 + }, + "pc" : 199, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12", "0x120", "0x12" ], + "store" : null, + "used" : 16549519 + }, + "pc" : 200, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2" ], + "store" : null, + "used" : 16549516 + }, + "pc" : 201, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16549513 + }, + "pc" : 203, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16549510 + }, + "pc" : 205, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16549500 + }, + "pc" : 208, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2", "0x1", "0x2" ], + "store" : null, + "used" : 16549497 + }, + "pc" : 209, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16548697 + }, + "pc" : 210, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x0", "0x1" ], + "store" : null, + "used" : 16548694 + }, + "pc" : 211, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16548691 + }, + "pc" : 212, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16548686 + }, + "pc" : 214, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00" ], + "store" : null, + "used" : 16548683 + }, + "pc" : 215, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16548680 + }, + "pc" : 216, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x1" ], + "store" : null, + "used" : 16548677 + }, + "pc" : 217, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12", "0x2", "0x0", "0x1", "0x12" ], + "store" : null, + "used" : 16548674 + }, + "pc" : 218, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff" ], + "store" : null, + "used" : 16548671 + }, + "pc" : 219, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12" ], + "store" : null, + "used" : 16548668 + }, + "pc" : 221, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x12" ], + "store" : null, + "used" : 16548663 + }, + "pc" : 222, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12" ], + "store" : null, + "used" : 16548660 + }, + "pc" : 223, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x12", "0x2" ], + "store" : null, + "used" : 16548657 + }, + "pc" : 224, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x2", + "val" : "0x12" + }, + "used" : 16528657 + }, + "pc" : 225, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16528655 + }, + "pc" : 226, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16528653 + }, + "pc" : 227, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16528650 + }, + "pc" : 228, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16528647 + }, + "pc" : 230, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100" ], + "store" : null, + "used" : 16528644 + }, + "pc" : 232, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16528634 + }, + "pc" : 235, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x1", "0x4" ], + "store" : null, + "used" : 16528631 + }, + "pc" : 236, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16527831 + }, + "pc" : 237, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x0", "0x1" ], + "store" : null, + "used" : 16527828 + }, + "pc" : 238, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16527825 + }, + "pc" : 239, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16527820 + }, + "pc" : 260, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffff0000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16527817 + }, + "pc" : 261, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16527814 + }, + "pc" : 262, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x1" ], + "store" : null, + "used" : 16527811 + }, + "pc" : 263, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x4", "0x0", "0x1", "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16527808 + }, + "pc" : 264, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16527805 + }, + "pc" : 265, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16527802 + }, + "pc" : 286, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16527797 + }, + "pc" : 287, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16527794 + }, + "pc" : 288, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x4" ], + "store" : null, + "used" : 16527791 + }, + "pc" : 289, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x4", + "val" : "0x627306090abab3a6e1400e9345bc60c78a8bef57" + }, + "used" : 16507791 + }, + "pc" : 290, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507789 + }, + "pc" : 291, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507788 + }, + "pc" : 292, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507786 + }, + "pc" : 293, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507784 + }, + "pc" : 294, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507782 + }, + "pc" : 295, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507780 + }, + "pc" : 296, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1dd" ], + "store" : null, + "used" : 16507777 + }, + "pc" : 297, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507769 + }, + "pc" : 301, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16507768 + }, + "pc" : 477, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14eb" ], + "store" : null, + "used" : 16507765 + }, + "pc" : 478, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14eb", "0x14eb" ], + "store" : null, + "used" : 16507762 + }, + "pc" : 481, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1ed" ], + "store" : null, + "used" : 16507759 + }, + "pc" : 482, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16507756 + }, + "pc" : 486, + "sub" : null + }, { + "cost" : 1033, + "ex" : { + "mem" : { + "data" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16506723 + }, + "pc" : 488, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16506720 + }, + "pc" : 489, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16506720 + }, + "pc" : 491, + "sub" : null + } ] + } + }, { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x606060405236156100d9576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100e2578063095ea7b31461017157806318160ddd146101cb57806323b872dd146101f4578063313ce5671461026d5780633bed33ce1461029c57806342966c68146102bf5780636623fc46146102fa57806370a08231146103355780638da5cb5b1461038257806395d89b41146103d7578063a9059cbb14610466578063cd4217c1146104a8578063d7a78db8146104f5578063dd62ed3e14610530575b6100e05b5b565b005b34156100ed57600080fd5b6100f561059c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101365780820151818401525b60208101905061011a565b50505050905090810190601f1680156101635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561017c57600080fd5b6101b1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061063a565b604051808215151515815260200191505060405180910390f35b34156101d657600080fd5b6101de6106d6565b6040518082815260200191505060405180910390f35b34156101ff57600080fd5b610253600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106dc565b604051808215151515815260200191505060405180910390f35b341561027857600080fd5b610280610b01565b604051808260ff1660ff16815260200191505060405180910390f35b34156102a757600080fd5b6102bd6004808035906020019091905050610b14565b005b34156102ca57600080fd5b6102e06004808035906020019091905050610bd6565b604051808215151515815260200191505060405180910390f35b341561030557600080fd5b61031b6004808035906020019091905050610d29565b604051808215151515815260200191505060405180910390f35b341561034057600080fd5b61036c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ef6565b6040518082815260200191505060405180910390f35b341561038d57600080fd5b610395610f0e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e257600080fd5b6103ea610f34565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561042b5780820151818401525b60208101905061040f565b50505050905090810190601f1680156104585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561047157600080fd5b6104a6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fd2565b005b34156104b357600080fd5b6104df600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611260565b6040518082815260200191505060405180910390f35b341561050057600080fd5b6105166004808035906020019091905050611278565b604051808215151515815260200191505060405180910390f35b341561053b57600080fd5b610586600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611445565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b505050505081565b6000808211151561064a57600080fd5b81600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190505b92915050565b60035481565b6000808373ffffffffffffffffffffffffffffffffffffffff16141561070157600080fd5b60008211151561071057600080fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561075c57600080fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156107e957600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561087257600080fd5b6108bb600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610947600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a10600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b600260009054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7057600080fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610bd257600080fd5b5b50565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610c2457600080fd5b600082111515610c3357600080fd5b610c7c600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ccb6003548361146a565b6003819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a2600190505b919050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610d7757600080fd5b600082111515610d8657600080fd5b610dcf600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f2cfce4af01bcb9d6cf6c84ee1b7c491100b8695368264146a94d71e10a63083f836040518082815260200191505060405180910390a2600190505b919050565b60056020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fca5780601f10610f9f57610100808354040283529160200191610fca565b820191906000526020600020905b815481529060010190602001808311610fad57829003601f168201915b505050505081565b60008273ffffffffffffffffffffffffffffffffffffffff161415610ff657600080fd5b60008111151561100557600080fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561105157600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540110156110de57600080fd5b611127600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111b3600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482611484565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b60066020528060005260406000206000915090505481565b600081600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156112c657600080fd5b6000821115156112d557600080fd5b61131e600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361146a565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113aa600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611484565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167ff97a274face0b5517365ad396b1fdba6f68bd3135ef603e44272adba3af5a1e0836040518082815260200191505060405180910390a2600190505b919050565b6007602052816000526040600020602052806000526040600020600091509150505481565b6000611478838311156114af565b81830390505b92915050565b60008082840190506114a484821015801561149f5750838210155b6114af565b8091505b5092915050565b8015156114bb57600080fd5b5b505600a165627a7a72305820082734e053ffbdf2a3195354a3210dff3723c239a1e76ae3be0936f6aed31bee0029", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16755555 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16755552 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 12, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000060", + "off" : 64 + }, + "push" : [ ], + "store" : null, + "used" : 16755540 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x44" ], + "store" : null, + "used" : 16755538 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755535 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xd9" ], + "store" : null, + "used" : 16755532 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755522 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755519 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5c" ], + "store" : null, + "used" : 16755516 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100000000000000000000000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755513 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x100000000000000000000000000000000000000000000000000000000", "0xa9059cbb0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5c" ], + "store" : null, + "used" : 16755510 + }, + "pc" : 44, + "sub" : null + }, { + "cost" : 5, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb" ], + "store" : null, + "used" : 16755505 + }, + "pc" : 45, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffff" ], + "store" : null, + "used" : 16755502 + }, + "pc" : 46, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb" ], + "store" : null, + "used" : 16755499 + }, + "pc" : 51, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755496 + }, + "pc" : 52, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6fdde03" ], + "store" : null, + "used" : 16755493 + }, + "pc" : 53, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755490 + }, + "pc" : 58, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xe2" ], + "store" : null, + "used" : 16755487 + }, + "pc" : 59, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755477 + }, + "pc" : 62, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755474 + }, + "pc" : 63, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x95ea7b3" ], + "store" : null, + "used" : 16755471 + }, + "pc" : 64, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755468 + }, + "pc" : 69, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x171" ], + "store" : null, + "used" : 16755465 + }, + "pc" : 70, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755455 + }, + "pc" : 73, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755452 + }, + "pc" : 74, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x18160ddd" ], + "store" : null, + "used" : 16755449 + }, + "pc" : 75, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755446 + }, + "pc" : 80, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1cb" ], + "store" : null, + "used" : 16755443 + }, + "pc" : 81, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755433 + }, + "pc" : 84, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755430 + }, + "pc" : 85, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x23b872dd" ], + "store" : null, + "used" : 16755427 + }, + "pc" : 86, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755424 + }, + "pc" : 91, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f4" ], + "store" : null, + "used" : 16755421 + }, + "pc" : 92, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755411 + }, + "pc" : 95, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755408 + }, + "pc" : 96, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x313ce567" ], + "store" : null, + "used" : 16755405 + }, + "pc" : 97, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755402 + }, + "pc" : 102, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x26d" ], + "store" : null, + "used" : 16755399 + }, + "pc" : 103, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755389 + }, + "pc" : 106, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755386 + }, + "pc" : 107, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3bed33ce" ], + "store" : null, + "used" : 16755383 + }, + "pc" : 108, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755380 + }, + "pc" : 113, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x29c" ], + "store" : null, + "used" : 16755377 + }, + "pc" : 114, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755367 + }, + "pc" : 117, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755364 + }, + "pc" : 118, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x42966c68" ], + "store" : null, + "used" : 16755361 + }, + "pc" : 119, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755358 + }, + "pc" : 124, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2bf" ], + "store" : null, + "used" : 16755355 + }, + "pc" : 125, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755345 + }, + "pc" : 128, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755342 + }, + "pc" : 129, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6623fc46" ], + "store" : null, + "used" : 16755339 + }, + "pc" : 130, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755336 + }, + "pc" : 135, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2fa" ], + "store" : null, + "used" : 16755333 + }, + "pc" : 136, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755323 + }, + "pc" : 139, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755320 + }, + "pc" : 140, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x70a08231" ], + "store" : null, + "used" : 16755317 + }, + "pc" : 141, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755314 + }, + "pc" : 146, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x335" ], + "store" : null, + "used" : 16755311 + }, + "pc" : 147, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755301 + }, + "pc" : 150, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755298 + }, + "pc" : 151, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x8da5cb5b" ], + "store" : null, + "used" : 16755295 + }, + "pc" : 152, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755292 + }, + "pc" : 157, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x382" ], + "store" : null, + "used" : 16755289 + }, + "pc" : 158, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755279 + }, + "pc" : 161, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755276 + }, + "pc" : 162, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x95d89b41" ], + "store" : null, + "used" : 16755273 + }, + "pc" : 163, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755270 + }, + "pc" : 168, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3d7" ], + "store" : null, + "used" : 16755267 + }, + "pc" : 169, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755257 + }, + "pc" : 172, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb", "0xa9059cbb" ], + "store" : null, + "used" : 16755254 + }, + "pc" : 173, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa9059cbb" ], + "store" : null, + "used" : 16755251 + }, + "pc" : 174, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755248 + }, + "pc" : 179, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x466" ], + "store" : null, + "used" : 16755245 + }, + "pc" : 180, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755235 + }, + "pc" : 183, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755234 + }, + "pc" : 1126, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755232 + }, + "pc" : 1127, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755229 + }, + "pc" : 1128, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x471" ], + "store" : null, + "used" : 16755226 + }, + "pc" : 1129, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755216 + }, + "pc" : 1132, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755215 + }, + "pc" : 1137, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4a6" ], + "store" : null, + "used" : 16755212 + }, + "pc" : 1138, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4" ], + "store" : null, + "used" : 16755209 + }, + "pc" : 1141, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x4" ], + "store" : null, + "used" : 16755206 + }, + "pc" : 1143, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x4" ], + "store" : null, + "used" : 16755203 + }, + "pc" : 1144, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16755200 + }, + "pc" : 1145, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16755197 + }, + "pc" : 1146, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16755194 + }, + "pc" : 1167, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x4" ], + "store" : null, + "used" : 16755191 + }, + "pc" : 1168, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755188 + }, + "pc" : 1169, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x24" ], + "store" : null, + "used" : 16755185 + }, + "pc" : 1171, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x24", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16755182 + }, + "pc" : 1172, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x24", "0x4" ], + "store" : null, + "used" : 16755179 + }, + "pc" : 1173, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x24" ], + "store" : null, + "used" : 16755176 + }, + "pc" : 1174, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x24", "0x24" ], + "store" : null, + "used" : 16755173 + }, + "pc" : 1175, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16755170 + }, + "pc" : 1176, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x24" ], + "store" : null, + "used" : 16755167 + }, + "pc" : 1177, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755164 + }, + "pc" : 1178, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x44" ], + "store" : null, + "used" : 16755161 + }, + "pc" : 1180, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x44", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16755158 + }, + "pc" : 1181, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x44", "0x4" ], + "store" : null, + "used" : 16755155 + }, + "pc" : 1182, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x4", "0x44" ], + "store" : null, + "used" : 16755152 + }, + "pc" : 1183, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755150 + }, + "pc" : 1184, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755148 + }, + "pc" : 1185, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xfd2" ], + "store" : null, + "used" : 16755145 + }, + "pc" : 1186, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755137 + }, + "pc" : 1189, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755136 + }, + "pc" : 4050, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755133 + }, + "pc" : 4051, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16755130 + }, + "pc" : 4053, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16755127 + }, + "pc" : 4054, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16755124 + }, + "pc" : 4075, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755121 + }, + "pc" : 4076, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755118 + }, + "pc" : 4077, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xff6" ], + "store" : null, + "used" : 16755115 + }, + "pc" : 4078, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755105 + }, + "pc" : 4081, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755104 + }, + "pc" : 4086, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755101 + }, + "pc" : 4087, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x0", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16755098 + }, + "pc" : 4089, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755095 + }, + "pc" : 4090, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755092 + }, + "pc" : 4091, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16755089 + }, + "pc" : 4092, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1005" ], + "store" : null, + "used" : 16755086 + }, + "pc" : 4093, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755076 + }, + "pc" : 4096, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16755075 + }, + "pc" : 4101, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16755072 + }, + "pc" : 4102, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16755069 + }, + "pc" : 4103, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755066 + }, + "pc" : 4105, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16755064 + }, + "pc" : 4107, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16755061 + }, + "pc" : 4108, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16755058 + }, + "pc" : 4129, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16755055 + }, + "pc" : 4130, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16755052 + }, + "pc" : 4151, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x0" ], + "store" : null, + "used" : 16755049 + }, + "pc" : 4152, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000627306090abab3a6e1400e9345bc60c78a8bef57", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755046 + }, + "pc" : 4153, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755043 + }, + "pc" : 4154, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755040 + }, + "pc" : 4156, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16755037 + }, + "pc" : 4157, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16755034 + }, + "pc" : 4158, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16755031 + }, + "pc" : 4159, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755028 + }, + "pc" : 4160, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16755025 + }, + "pc" : 4162, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755022 + }, + "pc" : 4163, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16754980 + }, + "pc" : 4165, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0xa56f6f83c66bdfe9600000" ], + "store" : null, + "used" : 16754180 + }, + "pc" : 4166, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754177 + }, + "pc" : 4167, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16754174 + }, + "pc" : 4168, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1051" ], + "store" : null, + "used" : 16754171 + }, + "pc" : 4169, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16754161 + }, + "pc" : 4172, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16754160 + }, + "pc" : 4177, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16754157 + }, + "pc" : 4178, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754154 + }, + "pc" : 4180, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0x5", "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16754151 + }, + "pc" : 4182, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16754148 + }, + "pc" : 4183, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16754145 + }, + "pc" : 4204, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16754142 + }, + "pc" : 4205, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16754139 + }, + "pc" : 4226, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x0" ], + "store" : null, + "used" : 16754136 + }, + "pc" : 4227, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16754133 + }, + "pc" : 4228, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754130 + }, + "pc" : 4229, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754127 + }, + "pc" : 4231, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16754124 + }, + "pc" : 4232, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16754121 + }, + "pc" : 4233, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16754118 + }, + "pc" : 4234, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16754115 + }, + "pc" : 4235, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16754112 + }, + "pc" : 4237, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16754109 + }, + "pc" : 4238, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" ], + "store" : null, + "used" : 16754067 + }, + "pc" : 4240, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16753267 + }, + "pc" : 4241, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16753264 + }, + "pc" : 4242, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16753261 + }, + "pc" : 4243, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16753258 + }, + "pc" : 4245, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x5", "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16753255 + }, + "pc" : 4247, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16753252 + }, + "pc" : 4248, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16753249 + }, + "pc" : 4269, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16753246 + }, + "pc" : 4270, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16753243 + }, + "pc" : 4291, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x0" ], + "store" : null, + "used" : 16753240 + }, + "pc" : 4292, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16753237 + }, + "pc" : 4293, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16753234 + }, + "pc" : 4294, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16753231 + }, + "pc" : 4296, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16753228 + }, + "pc" : 4297, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16753225 + }, + "pc" : 4298, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16753222 + }, + "pc" : 4299, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16753219 + }, + "pc" : 4300, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16753216 + }, + "pc" : 4302, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16753213 + }, + "pc" : 4303, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" ], + "store" : null, + "used" : 16753171 + }, + "pc" : 4305, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16752371 + }, + "pc" : 4306, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16752368 + }, + "pc" : 4307, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16752365 + }, + "pc" : 4308, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16752362 + }, + "pc" : 4309, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10de" ], + "store" : null, + "used" : 16752359 + }, + "pc" : 4310, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16752349 + }, + "pc" : 4313, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16752348 + }, + "pc" : 4318, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1127" ], + "store" : null, + "used" : 16752345 + }, + "pc" : 4319, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16752342 + }, + "pc" : 4322, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16752339 + }, + "pc" : 4324, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16752337 + }, + "pc" : 4326, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16752334 + }, + "pc" : 4327, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16752331 + }, + "pc" : 4348, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16752328 + }, + "pc" : 4349, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16752325 + }, + "pc" : 4370, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x0" ], + "store" : null, + "used" : 16752322 + }, + "pc" : 4371, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000627306090abab3a6e1400e9345bc60c78a8bef57", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16752319 + }, + "pc" : 4372, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16752316 + }, + "pc" : 4373, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16752313 + }, + "pc" : 4375, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16752310 + }, + "pc" : 4376, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16752307 + }, + "pc" : 4377, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16752304 + }, + "pc" : 4378, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16752301 + }, + "pc" : 4379, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16752298 + }, + "pc" : 4381, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16752295 + }, + "pc" : 4382, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16752253 + }, + "pc" : 4384, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0xa56f6f83c66bdfe9600000" ], + "store" : null, + "used" : 16751453 + }, + "pc" : 4385, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x1127", "0xa56f6f83c66bdfe9600000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16751450 + }, + "pc" : 4386, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x146a" ], + "store" : null, + "used" : 16751447 + }, + "pc" : 4387, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751439 + }, + "pc" : 4390, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751438 + }, + "pc" : 5226, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16751435 + }, + "pc" : 5227, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1478" ], + "store" : null, + "used" : 16751432 + }, + "pc" : 5229, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f6f83c66bdfe9600000", "0x3635c9adc5dea00000", "0x0", "0x1478", "0xa56f6f83c66bdfe9600000" ], + "store" : null, + "used" : 16751429 + }, + "pc" : 5232, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x0", "0x1478", "0xa56f6f83c66bdfe9600000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16751426 + }, + "pc" : 5233, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16751423 + }, + "pc" : 5234, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16751420 + }, + "pc" : 5235, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14af" ], + "store" : null, + "used" : 16751417 + }, + "pc" : 5236, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751409 + }, + "pc" : 5239, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751408 + }, + "pc" : 5295, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x1" ], + "store" : null, + "used" : 16751405 + }, + "pc" : 5296, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16751402 + }, + "pc" : 5297, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16751399 + }, + "pc" : 5298, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14bb" ], + "store" : null, + "used" : 16751396 + }, + "pc" : 5299, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751386 + }, + "pc" : 5302, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751385 + }, + "pc" : 5307, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751384 + }, + "pc" : 5308, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751382 + }, + "pc" : 5309, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751374 + }, + "pc" : 5310, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751373 + }, + "pc" : 5240, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x0", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16751370 + }, + "pc" : 5241, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f6f83c66bdfe9600000", "0x3635c9adc5dea00000", "0x0", "0x3635c9adc5dea00000", "0xa56f6f83c66bdfe9600000" ], + "store" : null, + "used" : 16751367 + }, + "pc" : 5242, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f394dfcbe1a0ac00000" ], + "store" : null, + "used" : 16751364 + }, + "pc" : 5243, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f394dfcbe1a0ac00000", "0x0" ], + "store" : null, + "used" : 16751361 + }, + "pc" : 5244, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751359 + }, + "pc" : 5245, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751358 + }, + "pc" : 5246, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f394dfcbe1a0ac00000", "0xa56f6f83c66bdfe9600000", "0x3635c9adc5dea00000", "0x1127" ], + "store" : null, + "used" : 16751355 + }, + "pc" : 5247, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1127", "0x3635c9adc5dea00000", "0xa56f6f83c66bdfe9600000" ], + "store" : null, + "used" : 16751352 + }, + "pc" : 5248, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751350 + }, + "pc" : 5249, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751348 + }, + "pc" : 5250, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751340 + }, + "pc" : 5251, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16751339 + }, + "pc" : 4391, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16751336 + }, + "pc" : 4392, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16751333 + }, + "pc" : 4394, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16751331 + }, + "pc" : 4396, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16751328 + }, + "pc" : 4397, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16751325 + }, + "pc" : 4418, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16751322 + }, + "pc" : 4419, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16751319 + }, + "pc" : 4440, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0x0" ], + "store" : null, + "used" : 16751316 + }, + "pc" : 4441, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x000000000000000000000000627306090abab3a6e1400e9345bc60c78a8bef57", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16751313 + }, + "pc" : 4442, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16751310 + }, + "pc" : 4443, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16751307 + }, + "pc" : 4445, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16751304 + }, + "pc" : 4446, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16751301 + }, + "pc" : 4447, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16751298 + }, + "pc" : 4448, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16751295 + }, + "pc" : 4449, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16751292 + }, + "pc" : 4451, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16751289 + }, + "pc" : 4452, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16751247 + }, + "pc" : 4454, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f394dfcbe1a0ac00000", "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d", "0xa56f394dfcbe1a0ac00000" ], + "store" : null, + "used" : 16751244 + }, + "pc" : 4455, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa56f394dfcbe1a0ac00000", "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d" ], + "store" : null, + "used" : 16751241 + }, + "pc" : 4456, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0xa9312db2f5fb32846f141a1d722f773c1064b8a16a8469d25062d3455a375b5d", + "val" : "0xa56f394dfcbe1a0ac00000" + }, + "used" : 16746241 + }, + "pc" : 4457, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16746239 + }, + "pc" : 4458, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x11b3" ], + "store" : null, + "used" : 16746236 + }, + "pc" : 4459, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16746233 + }, + "pc" : 4462, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16746230 + }, + "pc" : 4464, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0x11b3", "0x5", "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16746227 + }, + "pc" : 4466, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16746224 + }, + "pc" : 4467, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16746221 + }, + "pc" : 4488, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16746218 + }, + "pc" : 4489, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16746215 + }, + "pc" : 4510, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x0" ], + "store" : null, + "used" : 16746212 + }, + "pc" : 4511, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16746209 + }, + "pc" : 4512, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16746206 + }, + "pc" : 4513, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16746203 + }, + "pc" : 4515, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16746200 + }, + "pc" : 4516, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16746197 + }, + "pc" : 4517, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16746194 + }, + "pc" : 4518, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16746191 + }, + "pc" : 4519, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16746188 + }, + "pc" : 4521, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16746185 + }, + "pc" : 4522, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" ], + "store" : null, + "used" : 16746143 + }, + "pc" : 4524, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745343 + }, + "pc" : 4525, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x11b3", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745340 + }, + "pc" : 4526, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1484" ], + "store" : null, + "used" : 16745337 + }, + "pc" : 4527, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745329 + }, + "pc" : 4530, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745328 + }, + "pc" : 5252, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745325 + }, + "pc" : 5253, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0x0" ], + "store" : null, + "used" : 16745322 + }, + "pc" : 5255, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x0", "0x0", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745319 + }, + "pc" : 5256, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x0", "0x0", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745316 + }, + "pc" : 5257, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16745313 + }, + "pc" : 5258, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x0" ], + "store" : null, + "used" : 16745310 + }, + "pc" : 5259, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745308 + }, + "pc" : 5260, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14a4" ], + "store" : null, + "used" : 16745305 + }, + "pc" : 5261, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x0", "0x6c6b935b8bbd400000", "0x14a4", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745302 + }, + "pc" : 5264, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x14a4", "0x3635c9adc5dea00000", "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16745299 + }, + "pc" : 5265, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745296 + }, + "pc" : 5266, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16745293 + }, + "pc" : 5267, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x1" ], + "store" : null, + "used" : 16745290 + }, + "pc" : 5268, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745287 + }, + "pc" : 5269, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x149f" ], + "store" : null, + "used" : 16745284 + }, + "pc" : 5270, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745274 + }, + "pc" : 5273, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745272 + }, + "pc" : 5274, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x0", "0x6c6b935b8bbd400000", "0x14a4", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745269 + }, + "pc" : 5275, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x14a4", "0x3635c9adc5dea00000", "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16745266 + }, + "pc" : 5276, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745263 + }, + "pc" : 5277, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16745260 + }, + "pc" : 5278, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745259 + }, + "pc" : 5279, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14af" ], + "store" : null, + "used" : 16745256 + }, + "pc" : 5280, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745248 + }, + "pc" : 5283, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745247 + }, + "pc" : 5295, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1", "0x1" ], + "store" : null, + "used" : 16745244 + }, + "pc" : 5296, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745241 + }, + "pc" : 5297, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16745238 + }, + "pc" : 5298, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14bb" ], + "store" : null, + "used" : 16745235 + }, + "pc" : 5299, + "sub" : null + }, { + "cost" : 10, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745225 + }, + "pc" : 5302, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745224 + }, + "pc" : 5307, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745223 + }, + "pc" : 5308, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745221 + }, + "pc" : 5309, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745213 + }, + "pc" : 5310, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745212 + }, + "pc" : 5284, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16745209 + }, + "pc" : 5285, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x6c6b935b8bbd400000", "0x0" ], + "store" : null, + "used" : 16745206 + }, + "pc" : 5286, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745204 + }, + "pc" : 5287, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745203 + }, + "pc" : 5288, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745201 + }, + "pc" : 5289, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000", "0x11b3" ], + "store" : null, + "used" : 16745198 + }, + "pc" : 5290, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x11b3", "0x3635c9adc5dea00000", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16745195 + }, + "pc" : 5291, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745193 + }, + "pc" : 5292, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745191 + }, + "pc" : 5293, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745183 + }, + "pc" : 5294, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16745182 + }, + "pc" : 4531, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x5" ], + "store" : null, + "used" : 16745179 + }, + "pc" : 4532, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745176 + }, + "pc" : 4534, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0x6c6b935b8bbd400000", "0x5", "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16745173 + }, + "pc" : 4536, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16745170 + }, + "pc" : 4537, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16745167 + }, + "pc" : 4558, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16745164 + }, + "pc" : 4559, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16745161 + }, + "pc" : 4580, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x0" ], + "store" : null, + "used" : 16745158 + }, + "pc" : 4581, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000a13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16745155 + }, + "pc" : 4582, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16745152 + }, + "pc" : 4583, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16745149 + }, + "pc" : 4585, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5" ], + "store" : null, + "used" : 16745146 + }, + "pc" : 4586, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x5", "0x20" ], + "store" : null, + "used" : 16745143 + }, + "pc" : 4587, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000005", + "off" : 32 + }, + "push" : [ ], + "store" : null, + "used" : 16745140 + }, + "pc" : 4588, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16745137 + }, + "pc" : 4589, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16745134 + }, + "pc" : 4591, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16745131 + }, + "pc" : 4592, + "sub" : null + }, { + "cost" : 42, + "ex" : { + "mem" : null, + "push" : [ "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" ], + "store" : null, + "used" : 16745089 + }, + "pc" : 4594, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643", "0x6c6b935b8bbd400000" ], + "store" : null, + "used" : 16745086 + }, + "pc" : 4595, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x6c6b935b8bbd400000", "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643" ], + "store" : null, + "used" : 16745083 + }, + "pc" : 4596, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x47dfe2af6b00a2aac81c542b40f5676fc0072fa1ce62e1ef260aade0f4b29643", + "val" : "0x6c6b935b8bbd400000" + }, + "used" : 16740083 + }, + "pc" : 4597, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16740081 + }, + "pc" : 4598, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x3635c9adc5dea00000", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16740078 + }, + "pc" : 4599, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16740075 + }, + "pc" : 4600, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4" ], + "store" : null, + "used" : 16740072 + }, + "pc" : 4621, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16740070 + }, + "pc" : 4622, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16740067 + }, + "pc" : 4623, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16740064 + }, + "pc" : 4644, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" ], + "store" : null, + "used" : 16740061 + }, + "pc" : 4645, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0xa13aa5589f0dd8dd3bd5055b31add5ca0f2f8e4", "0x627306090abab3a6e1400e9345bc60c78a8bef57", "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16740058 + }, + "pc" : 4678, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16740055 + }, + "pc" : 4679, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000060", + "off" : 64 + }, + "push" : [ "0x60" ], + "store" : null, + "used" : 16740052 + }, + "pc" : 4681, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60" ], + "store" : null, + "used" : 16740049 + }, + "pc" : 4682, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3635c9adc5dea00000", "0x60", "0x60", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16740046 + }, + "pc" : 4683, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x3635c9adc5dea00000", "0x60" ], + "store" : null, + "used" : 16740043 + }, + "pc" : 4684, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x00000000000000000000000000000000000000000000003635c9adc5dea00000", + "off" : 96 + }, + "push" : [ ], + "store" : null, + "used" : 16740037 + }, + "pc" : 4685, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16740034 + }, + "pc" : 4686, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16740031 + }, + "pc" : 4688, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x60", "0x3635c9adc5dea00000" ], + "store" : null, + "used" : 16740028 + }, + "pc" : 4689, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16740026 + }, + "pc" : 4690, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16740024 + }, + "pc" : 4691, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16740021 + }, + "pc" : 4692, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000060", + "off" : 64 + }, + "push" : [ "0x60" ], + "store" : null, + "used" : 16740018 + }, + "pc" : 4694, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60" ], + "store" : null, + "used" : 16740015 + }, + "pc" : 4695, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60", "0x60", "0x80" ], + "store" : null, + "used" : 16740012 + }, + "pc" : 4696, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16740009 + }, + "pc" : 4697, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20", "0x60" ], + "store" : null, + "used" : 16740006 + }, + "pc" : 4698, + "sub" : null + }, { + "cost" : 1756, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738250 + }, + "pc" : 4699, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738249 + }, + "pc" : 4700, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738247 + }, + "pc" : 4701, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738245 + }, + "pc" : 4702, + "sub" : null + }, { + "cost" : 8, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738237 + }, + "pc" : 4703, + "sub" : null + }, { + "cost" : 1, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738236 + }, + "pc" : 1190, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16738236 + }, + "pc" : 1191, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_stateDiff.json new file mode 100644 index 0000000000..f1d405789b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep with gas refund.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f1838618847d" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27a3953c" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_trace.json new file mode 100644 index 0000000000..b33228040d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_trace.json @@ -0,0 +1,59 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep with gas refund.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffab3a", + "input" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0040000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x5459", + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfba99f", + "input" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "to" : "0x0010000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x5158", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_vmTrace.json new file mode 100644 index 0000000000..46927ada0b --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1a_vmTrace.json @@ -0,0 +1,325 @@ +{ + "comment" : "'Proxy call to another contract - 1 level deep with gas refund.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0040000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x00000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60206000602036038060206000376000346000355af160206000f3", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755511 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755508 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755505 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xa0" ], + "store" : null, + "used" : 16755503 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16755500 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80", "0x80" ], + "store" : null, + "used" : 16755497 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16755494 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755491 + }, + "pc" : 11, + "sub" : null + }, { + "cost" : 27, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 16755464 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755461 + }, + "pc" : 14, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755459 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16755456 + }, + "pc" : 17, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x10000000000000000000000000000000000000" ], + "store" : null, + "used" : 16755453 + }, + "pc" : 19, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0xffaafb" ], + "store" : null, + "used" : 16755451 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 16493659, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000001", + "off" : 0 + }, + "push" : [ "0x1" ], + "store" : null, + "used" : 16733927 + }, + "pc" : 21, + "sub" : { + "code" : "0x6020356000355560603560403555", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16492956 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x3" ], + "store" : null, + "used" : 16492953 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16492950 + }, + "pc" : 3, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16492947 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x3" + }, + "used" : 16472947 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x60" ], + "store" : null, + "used" : 16472944 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16472941 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16472938 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1" ], + "store" : null, + "used" : 16472935 + }, + "pc" : 12, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x1", + "val" : "0x0" + }, + "used" : 16472135 + }, + "pc" : 13, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 16733924 + }, + "pc" : 22, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 16733921 + }, + "pc" : 24, + "sub" : null + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16733921 + }, + "pc" : 26, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_stateDiff.json new file mode 100644 index 0000000000..5ff6aac170 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_stateDiff.json @@ -0,0 +1,55 @@ +{ + "comment" : "'Self destruct and send contract balance to the same address provided in the to field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0150000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000150000000000000" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860da92e" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27ae708b" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_trace.json new file mode 100644 index 0000000000..f403cadb59 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_trace.json @@ -0,0 +1,43 @@ +{ + "comment" : "'Self destruct and send contract balance to the same address provided in the to field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0150000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000150000000000000" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xffad82", + "input" : "0x0000000000000000000000000150000000000000", + "to" : "0x0150000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0x0", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_vmTrace.json new file mode 100644 index 0000000000..feb0efe800 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1b_vmTrace.json @@ -0,0 +1,30 @@ +{ + "comment" : "'Self destruct and send contract balance to the same address provided in the to field.'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0150000000000000000000000000000000000000", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x0000000000000000000000000150000000000000" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x", + "ops" : [ ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_stateDiff.json new file mode 100644 index 0000000000..197cf92cb9 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Self destruct called in constructor with balance being returned to sender (from field)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60806040523373ffffffffffffffffffffffffffffffffffffffff16fffe" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183863e8934" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d0798e0fa5" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_trace.json new file mode 100644 index 0000000000..6608128c62 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_trace.json @@ -0,0 +1,51 @@ +{ + "comment" : "'Self destruct called in constructor with balance being returned to sender (from field)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60806040523373ffffffffffffffffffffffffffffffffffffffff16fffe" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xff2f0a", + "init" : "0x60806040523373ffffffffffffffffffffffffffffffffffffffff16fffe", + "value" : "0x0" + }, + "result" : { + "address" : "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241", + "code" : "0x", + "gasUsed" : "0x13a2" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "create" + }, { + "action" : { + "address" : "0x3d49d1ef2ade060a33c6e6aa213513a7ee9a6241", + "balance" : "0x0", + "refundAddress" : "0x627306090abab3a6e1400e9345bc60c78a8bef57" + }, + "result" : null, + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "suicide" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_vmTrace.json new file mode 100644 index 0000000000..7b7084102c --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1c_vmTrace.json @@ -0,0 +1,102 @@ +{ + "comment" : "'Self destruct called in constructor with balance being returned to sender (from field)'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "gas" : "0xfffff2", + "gasPrice" : "0xef", + "data" : "0x60806040523373ffffffffffffffffffffffffffffffffffffffff16fffe" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60806040523373ffffffffffffffffffffffffffffffffffffffff16fffe", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x80" ], + "store" : null, + "used" : 16723719 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 16723716 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 12, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000000000000000000000000080", + "off" : 64 + }, + "push" : [ ], + "store" : null, + "used" : 16723704 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 2, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16723702 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xffffffffffffffffffffffffffffffffffffffff" ], + "store" : null, + "used" : 16723699 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x627306090abab3a6e1400e9345bc60c78a8bef57" ], + "store" : null, + "used" : 16723696 + }, + "pc" : 27, + "sub" : null + }, { + "cost" : 5000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 16718696 + }, + "pc" : 28, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_stateDiff.json new file mode 100644 index 0000000000..7d5ce5376e --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Stack underflow during contract creation'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x11940", + "gasPrice" : "0x1", + "data" : "0x6000f1" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18385c1cbde" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27fa4ddb" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_trace.json new file mode 100644 index 0000000000..5209aa54dc --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_trace.json @@ -0,0 +1,37 @@ +{ + "comment" : "'Stack underflow during contract creation'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x11940", + "gasPrice" : "0x1", + "data" : "0x6000f1" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0x4a14", + "init" : "0x6000f1", + "value" : "0x0" + }, + "error" : "Stack underflow", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_vmTrace.json new file mode 100644 index 0000000000..f3f607c57d --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1d_vmTrace.json @@ -0,0 +1,39 @@ +{ + "comment" : "'Stack underflow during contract creation'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x11940", + "gasPrice" : "0x1", + "data" : "0x6000f1" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6000f1", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 18961 + }, + "pc" : 0, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_stateDiff.json new file mode 100644 index 0000000000..c5abc327c8 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_stateDiff.json @@ -0,0 +1,66 @@ +{ + "comment" : "'Transaction to test refund_CallToSuicideTwice_d0g0v0_Istanbul'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0xa", + "to" : "0x0160000000000000000000000000000000000000", + "gas" : "0x989680", + "gasPrice" : "0x1", + "data" : "0x00000000000000000000000000000000000000000000000000000000000001f4" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18385c111f1" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0160000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0xde0b6b3a764000a", + "to" : "0xde0b6b3a7640014" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27fb07be" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_trace.json new file mode 100644 index 0000000000..14208dbd23 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_trace.json @@ -0,0 +1,69 @@ +{ + "comment" : "'Transaction to test refund_CallToSuicideTwice_d0g0v0_Istanbul'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0xa", + "to" : "0x0160000000000000000000000000000000000000", + "gas" : "0x989680", + "gasPrice" : "0x1", + "data" : "0x00000000000000000000000000000000000000000000000000000000000001f4" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0x9843e0", + "input" : "0x00000000000000000000000000000000000000000000000000000000000001f4", + "to" : "0x0160000000000000000000000000000000000000", + "value" : "0xa" + }, + "result" : { + "gasUsed" : "0xcb3", + "output" : "0x" + }, + "subtraces" : 2, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0160000000000000000000000000000000000000", + "gas" : "0x1f4", + "input" : "0x", + "to" : "0x0170000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Out of gas", + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "call" + }, { + "action" : { + "callType" : "call", + "from" : "0x0160000000000000000000000000000000000000", + "gas" : "0x1f4", + "input" : "0x", + "to" : "0x0170000000000000000000000000000000000000", + "value" : "0x0" + }, + "error" : "Out of gas", + "subtraces" : 0, + "traceAddress" : [ 1 ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_vmTrace.json new file mode 100644 index 0000000000..5fb3556ace --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1e_vmTrace.json @@ -0,0 +1,279 @@ +{ + "comment" : "'Transaction to test refund_CallToSuicideTwice_d0g0v0_Istanbul'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0xa", + "to" : "0x0160000000000000000000000000000000000000", + "gas" : "0x989680", + "gasPrice" : "0x1", + "data" : "0x00000000000000000000000000000000000000000000000000000000000001f4" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x60006000600060006000730170000000000000000000000000000000000000600035f160005560006000600060006000730170000000000000000000000000000000000000600035f100", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978845 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978842 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978839 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978836 + }, + "pc" : 6, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978833 + }, + "pc" : 8, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x170000000000000000000000000000000000000" ], + "store" : null, + "used" : 9978830 + }, + "pc" : 10, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9978827 + }, + "pc" : 31, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f4" ], + "store" : null, + "used" : 9978824 + }, + "pc" : 33, + "sub" : null + }, { + "cost" : 1200, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9977624 + }, + "pc" : 34, + "sub" : { + "code" : "0x73095e7baea6a6c7c4c2dfeb977efac326af552d87ff00", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x95e7baea6a6c7c4c2dfeb977efac326af552d87" ], + "store" : null, + "used" : 497 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 30000, + "ex" : null, + "pc" : 21, + "sub" : null + } ] + } + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9977621 + }, + "pc" : 35, + "sub" : null + }, { + "cost" : 800, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0x0" + }, + "used" : 9976821 + }, + "pc" : 37, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976818 + }, + "pc" : 38, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976815 + }, + "pc" : 40, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976812 + }, + "pc" : 42, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976809 + }, + "pc" : 44, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976806 + }, + "pc" : 46, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x170000000000000000000000000000000000000" ], + "store" : null, + "used" : 9976803 + }, + "pc" : 48, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9976800 + }, + "pc" : 69, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x1f4" ], + "store" : null, + "used" : 9976797 + }, + "pc" : 71, + "sub" : null + }, { + "cost" : 1200, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 9975597 + }, + "pc" : 72, + "sub" : { + "code" : "0x73095e7baea6a6c7c4c2dfeb977efac326af552d87ff00", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x95e7baea6a6c7c4c2dfeb977efac326af552d87" ], + "store" : null, + "used" : 497 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 30000, + "ex" : null, + "pc" : 21, + "sub" : null + } ] + } + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 9975597 + }, + "pc" : 73, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_stateDiff.json new file mode 100644 index 0000000000..1efa7b96e4 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Call Precompiled contract directly'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0000000000000000000000000000000000000001", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183861838de" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x627306090abab3a6e1400e9345bc60c78a8bef57" : { + "balance" : { + "*" : { + "from" : "0xefffffffffffe28d07a0be63b", + "to" : "0xefffffffffffe28d079b45ffb" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x17", + "to" : "0x18" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_trace.json new file mode 100644 index 0000000000..464eef02ec --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_trace.json @@ -0,0 +1,42 @@ +{ + "comment" : "'Call Precompiled contract directly'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0000000000000000000000000000000000000001", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "gas" : "0xffadea", + "input" : "0x", + "to" : "0x0000000000000000000000000000000000000001", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0xbb8", + "output" : "0x" + }, + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "call" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_vmTrace.json new file mode 100644 index 0000000000..0297bd9cfe --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_1f_vmTrace.json @@ -0,0 +1,29 @@ +{ + "comment" : "'Call Precompiled contract directly'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0x627306090abab3a6e1400e9345bc60c78a8bef57", + "value" : "0x0", + "to" : "0x0000000000000000000000000000000000000001", + "gas" : "0xfffff2", + "gasPrice" : "0xef" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x", + "ops" : [ ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_stateDiff.json new file mode 100644 index 0000000000..51a74b4bf5 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_stateDiff.json @@ -0,0 +1,66 @@ +{ + "comment" : "'Call to a contract creation that fails with a depth of 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0180000000000000000000000000000000000000", + "gas" : "0x11fa1", + "gasPrice" : "0x10", + "data" : "0x000000000000000000000000000000000000000000000000000000000000ea60" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f18385d298be" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0x0180000000000000000000000000000000000000" : { + "balance" : "=", + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1", + "to" : "0x2" + } + }, + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27e980fb" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_trace.json new file mode 100644 index 0000000000..5d28ec1cac --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_trace.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Call to a contract creation that fails with a depth of 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0180000000000000000000000000000000000000", + "gas" : "0x11fa1", + "gasPrice" : "0x10", + "data" : "0x000000000000000000000000000000000000000000000000000000000000ea60" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "callType" : "call", + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0xcd01", + "input" : "0x000000000000000000000000000000000000000000000000000000000000ea60", + "to" : "0x0180000000000000000000000000000000000000", + "value" : "0x0" + }, + "result" : { + "gasUsed" : "0xcbc2", + "output" : "0x" + }, + "subtraces" : 1, + "traceAddress" : [ ], + "type" : "call" + }, { + "action" : { + "from" : "0x0180000000000000000000000000000000000000", + "gas" : "0x4eaa", + "init" : "0x600c600055602060406000f000", + "value" : "0x0" + }, + "error" : "Out of gas", + "subtraces" : 0, + "traceAddress" : [ 0 ], + "type" : "create" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_vmTrace.json new file mode 100644 index 0000000000..d7b26200db --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_20_vmTrace.json @@ -0,0 +1,184 @@ +{ + "comment" : "'Call to a contract creation that fails with a depth of 1'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "to" : "0x0180000000000000000000000000000000000000", + "gas" : "0x11fa1", + "gasPrice" : "0x10", + "data" : "0x000000000000000000000000000000000000000000000000000000000000ea60" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x6b600c600055602060406000f0600052600d60146000f000", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x600c600055602060406000f0" ], + "store" : null, + "used" : 52478 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 52475 + }, + "pc" : 13, + "sub" : null + }, { + "cost" : 6, + "ex" : { + "mem" : { + "data" : "0x0000000000000000000000000000000000000000600c600055602060406000f0", + "off" : 0 + }, + "push" : [ ], + "store" : null, + "used" : 52469 + }, + "pc" : 15, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xd" ], + "store" : null, + "used" : 52466 + }, + "pc" : 16, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x14" ], + "store" : null, + "used" : 52463 + }, + "pc" : 18, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 52460 + }, + "pc" : 20, + "sub" : null + }, { + "cost" : 52141, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 319 + }, + "pc" : 22, + "sub" : { + "code" : "0x600c600055602060406000f000", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0xc" ], + "store" : null, + "used" : 20135 + }, + "pc" : 0, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 20132 + }, + "pc" : 2, + "sub" : null + }, { + "cost" : 20000, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : { + "key" : "0x0", + "val" : "0xc" + }, + "used" : 132 + }, + "pc" : 4, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x20" ], + "store" : null, + "used" : 129 + }, + "pc" : 5, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x40" ], + "store" : null, + "used" : 126 + }, + "pc" : 7, + "sub" : null + }, { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x0" ], + "store" : null, + "used" : 123 + }, + "pc" : 9, + "sub" : null + }, { + "cost" : 32009, + "ex" : null, + "pc" : 11, + "sub" : null + } ] + } + }, { + "cost" : 0, + "ex" : { + "mem" : null, + "push" : [ ], + "store" : null, + "used" : 319 + }, + "pc" : 23, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_stateDiff.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_stateDiff.json new file mode 100644 index 0000000000..f0669e7e8f --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_stateDiff.json @@ -0,0 +1,54 @@ +{ + "comment" : "'Call to a contract creation that fails with a stack underflow'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x47b760", + "gasPrice" : "0x1", + "data" : "0x602af300" + }, [ "stateDiff" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : { + "0x0000000000000000000000000000000000000000" : { + "balance" : { + "*" : { + "from" : "0x393f0f18385c0b29e", + "to" : "0x393f0f183860869fe" + } + }, + "code" : "=", + "nonce" : "=", + "storage" : { } + }, + "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" : { + "balance" : { + "*" : { + "from" : "0xffffffffffffffffffffffffffffffffd27fb671b", + "to" : "0xffffffffffffffffffffffffffffffffd27b3afbb" + } + }, + "code" : "=", + "nonce" : { + "*" : { + "from" : "0x1e", + "to" : "0x1f" + } + }, + "storage" : { } + } + }, + "trace" : [ ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_trace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_trace.json new file mode 100644 index 0000000000..cb7eb6668e --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_trace.json @@ -0,0 +1,37 @@ +{ + "comment" : "'Call to a contract creation that fails with a stack underflow'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x47b760", + "gasPrice" : "0x1", + "data" : "0x602af300" + }, [ "trace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ { + "action" : { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "gas" : "0x46e824", + "init" : "0x602af300", + "value" : "0x0" + }, + "error" : "Stack underflow", + "subtraces" : 0, + "traceAddress" : [ ], + "type" : "create" + } ], + "vmTrace" : null + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_vmTrace.json b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_vmTrace.json new file mode 100644 index 0000000000..550520c2f6 --- /dev/null +++ b/ethereum/api/src/test/resources/org/hyperledger/besu/ethereum/api/jsonrpc/trace/specs/trace-callMany/trace_callMany_21_vmTrace.json @@ -0,0 +1,39 @@ +{ + "comment" : "'Call to a contract creation that fails with a stack underflow'", + "request" : { + "method" : "trace_callMany", + "params" : [ [ [ { + "from" : "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73", + "value" : "0x0", + "gas" : "0x47b760", + "gasPrice" : "0x1", + "data" : "0x602af300" + }, [ "vmTrace" ] ] ], "latest" ], + "id" : 1, + "jsonrpc" : "2.0" + }, + "response" : { + "jsonrpc" : "2.0", + "result" : [ { + "output" : "0x", + "stateDiff" : null, + "trace" : [ ], + "vmTrace" : { + "code" : "0x602af300", + "ops" : [ { + "cost" : 3, + "ex" : { + "mem" : null, + "push" : [ "0x2a" ], + "store" : null, + "used" : 4646945 + }, + "pc" : 0, + "sub" : null + } ] + } + } ], + "id" : 1 + }, + "statusCode" : 200 +} \ No newline at end of file diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetTransactionProcessor.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetTransactionProcessor.java index e8e1856d8d..31050c298d 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetTransactionProcessor.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetTransactionProcessor.java @@ -302,16 +302,16 @@ public class MainnetTransactionProcessor { previousBalance, sender.getBalance()); - List accessListEntries = transaction.getAccessList().orElse(List.of()); + final List accessListEntries = transaction.getAccessList().orElse(List.of()); // we need to keep a separate hash set of addresses in case they specify no storage. // No-storage is a common pattern, especially for Externally Owned Accounts - Set
addressList = new HashSet<>(); - Multimap storageList = HashMultimap.create(); + final Set
addressList = new HashSet<>(); + final Multimap storageList = HashMultimap.create(); int accessListStorageCount = 0; - for (var entry : accessListEntries) { - Address address = entry.getAddress(); + for (final var entry : accessListEntries) { + final Address address = entry.getAddress(); addressList.add(address); - List storageKeys = entry.getStorageKeys(); + final List storageKeys = entry.getStorageKeys(); storageList.putAll(address, storageKeys); accessListStorageCount += storageKeys.size(); } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulator.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulator.java index 157a165161..d47ba8b9a6 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulator.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulator.java @@ -48,6 +48,7 @@ import java.util.Optional; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; import org.apache.tuweni.bytes.Bytes; +import org.jetbrains.annotations.NotNull; /* * Used to process transactions for eth_call and eth_estimateGas. @@ -143,15 +144,31 @@ public class TransactionSimulator { if (header == null) { return Optional.empty(); } - final MutableWorldState publicWorldState = - worldStateArchive.getMutable(header.getStateRoot(), header.getHash(), false).orElse(null); - if (publicWorldState == null) { + WorldUpdater updater; + try { + updater = getWorldUpdater(header); + } catch (final IllegalArgumentException e) { return Optional.empty(); } - final WorldUpdater updater = - getEffectiveWorldStateUpdater(header, publicWorldState, operationTracer); + // in order to trace the state diff we need to make sure that + // the world updater always has a parent + if (operationTracer instanceof DebugOperationTracer) { + updater = updater.parentUpdater().isPresent() ? updater : updater.updater(); + } + + return processWithWorldUpdater( + callParams, transactionValidationParams, operationTracer, header, updater); + } + + @NotNull + public Optional processWithWorldUpdater( + final CallParameter callParams, + final TransactionValidationParams transactionValidationParams, + final OperationTracer operationTracer, + final BlockHeader header, + final WorldUpdater updater) { final ProtocolSpec protocolSpec = protocolSchedule.getByBlockNumber(header.getNumber()); final Address senderAddress = @@ -159,28 +176,17 @@ public class TransactionSimulator { BlockHeader blockHeaderToProcess = header; - final Wei gasPrice; - final Wei maxFeePerGas; - final Wei maxPriorityFeePerGas; - if (transactionValidationParams.isAllowExceedingBalance()) { - if (header.getBaseFee().isPresent()) { - blockHeaderToProcess = - BlockHeaderBuilder.fromHeader(header) - .baseFee(Wei.ZERO) - .blockHeaderFunctions(protocolSpec.getBlockHeaderFunctions()) - .buildBlockHeader(); - } - gasPrice = Wei.ZERO; - maxFeePerGas = Wei.ZERO; - maxPriorityFeePerGas = Wei.ZERO; - } else { - gasPrice = callParams.getGasPrice() != null ? callParams.getGasPrice() : Wei.ZERO; - maxFeePerGas = callParams.getMaxFeePerGas().orElse(gasPrice); - maxPriorityFeePerGas = callParams.getMaxPriorityFeePerGas().orElse(gasPrice); + if (transactionValidationParams.isAllowExceedingBalance() && header.getBaseFee().isPresent()) { + blockHeaderToProcess = + BlockHeaderBuilder.fromHeader(header) + .baseFee(Wei.ZERO) + .blockHeaderFunctions(protocolSpec.getBlockHeaderFunctions()) + .buildBlockHeader(); } - final Account sender = publicWorldState.get(senderAddress); + final Account sender = updater.get(senderAddress); final long nonce = sender != null ? sender.getNonce() : 0L; + final long gasLimit = callParams.getGasLimit() >= 0 ? callParams.getGasLimit() @@ -193,33 +199,21 @@ public class TransactionSimulator { .getByBlockNumber(blockHeaderToProcess.getNumber()) .getTransactionProcessor(); - final Transaction.Builder transactionBuilder = - Transaction.builder() - .nonce(nonce) - .gasLimit(gasLimit) - .to(callParams.getTo()) - .sender(senderAddress) - .value(value) - .payload(payload) - .signature(FAKE_SIGNATURE); - - if (header.getBaseFee().isEmpty()) { - transactionBuilder.gasPrice(gasPrice); - } else if (protocolSchedule.getChainId().isPresent()) { - transactionBuilder.maxFeePerGas(maxFeePerGas).maxPriorityFeePerGas(maxPriorityFeePerGas); - } else { + final Optional maybeTransaction = + buildTransaction( + callParams, + transactionValidationParams, + header, + senderAddress, + nonce, + gasLimit, + value, + payload); + if (maybeTransaction.isEmpty()) { return Optional.empty(); } - transactionBuilder.guessType(); - if (transactionBuilder.getTransactionType().requiresChainId()) { - transactionBuilder.chainId( - protocolSchedule - .getChainId() - .orElse(BigInteger.ONE)); // needed to make some transactions valid - } - final Transaction transaction = transactionBuilder.build(); - + final Transaction transaction = maybeTransaction.get(); final TransactionProcessingResult result = transactionProcessor.processTransaction( blockchain, @@ -242,11 +236,11 @@ public class TransactionSimulator { transactionProcessor.getTransactionValidator().getGoQuorumCompatibilityMode(); if (goQuorumCompatibilityMode && value.isZero()) { - Gas privateGasEstimateAndState = + final Gas privateGasEstimateAndState = protocolSpec.getGasCalculator().getMaximumTransactionCost(64); if (privateGasEstimateAndState.toLong() > result.getEstimateGasUsedByTransaction()) { // modify the result to have the larger estimate - TransactionProcessingResult resultPmt = + final TransactionProcessingResult resultPmt = TransactionProcessingResult.successful( result.getLogs(), privateGasEstimateAndState.toLong(), @@ -260,11 +254,71 @@ public class TransactionSimulator { return Optional.of(new TransactionSimulatorResult(transaction, result)); } + private Optional buildTransaction( + final CallParameter callParams, + final TransactionValidationParams transactionValidationParams, + final BlockHeader header, + final Address senderAddress, + final long nonce, + final long gasLimit, + final Wei value, + final Bytes payload) { + final Transaction.Builder transactionBuilder = + Transaction.builder() + .nonce(nonce) + .gasLimit(gasLimit) + .to(callParams.getTo()) + .sender(senderAddress) + .value(value) + .payload(payload) + .signature(FAKE_SIGNATURE); + + final Wei gasPrice; + final Wei maxFeePerGas; + final Wei maxPriorityFeePerGas; + if (transactionValidationParams.isAllowExceedingBalance()) { + gasPrice = Wei.ZERO; + maxFeePerGas = Wei.ZERO; + maxPriorityFeePerGas = Wei.ZERO; + } else { + gasPrice = callParams.getGasPrice() != null ? callParams.getGasPrice() : Wei.ZERO; + maxFeePerGas = callParams.getMaxFeePerGas().orElse(gasPrice); + maxPriorityFeePerGas = callParams.getMaxPriorityFeePerGas().orElse(gasPrice); + } + if (header.getBaseFee().isEmpty()) { + transactionBuilder.gasPrice(gasPrice); + } else if (protocolSchedule.getChainId().isPresent()) { + transactionBuilder.maxFeePerGas(maxFeePerGas).maxPriorityFeePerGas(maxPriorityFeePerGas); + } else { + return Optional.empty(); + } + + transactionBuilder.guessType(); + if (transactionBuilder.getTransactionType().requiresChainId()) { + transactionBuilder.chainId( + protocolSchedule + .getChainId() + .orElse(BigInteger.ONE)); // needed to make some transactions valid + } + final Transaction transaction = transactionBuilder.build(); + return Optional.ofNullable(transaction); + } + + public WorldUpdater getWorldUpdater(final BlockHeader header) { + final MutableWorldState publicWorldState = + worldStateArchive.getMutable(header.getStateRoot(), header.getHash(), false).orElse(null); + + if (publicWorldState == null) { + throw new IllegalArgumentException( + "Public world state not available for block " + header.getNumber()); + } + + return getEffectiveWorldStateUpdater(header, publicWorldState); + } + // return combined private/public world state updater if GoQuorum mode, otherwise the public state private WorldUpdater getEffectiveWorldStateUpdater( - final BlockHeader header, - final MutableWorldState publicWorldState, - final OperationTracer operationTracer) { + final BlockHeader header, final MutableWorldState publicWorldState) { if (maybePrivacyParameters.isPresent() && maybePrivacyParameters.get().getGoQuorumPrivacyParameters().isPresent()) { @@ -276,15 +330,7 @@ public class TransactionSimulator { publicWorldState.updater(), privateWorldState.updater()); } - final WorldUpdater updater = publicWorldState.updater(); - - // in order to trace the state diff we need to make sure that - // the world updater always has a parent - if (operationTracer instanceof DebugOperationTracer) { - return updater.parentUpdater().isPresent() ? updater : updater.updater(); - } - - return updater; + return publicWorldState.updater(); } public Optional doesAddressExistAtHead(final Address address) { diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorResult.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorResult.java index c09120b32d..ac5ab21aea 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorResult.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorResult.java @@ -39,6 +39,10 @@ public class TransactionSimulatorResult { return result.isSuccessful(); } + public boolean isInvalid() { + return result.isInvalid(); + } + public long getGasEstimate() { return transaction.getGasLimit() - result.getGasRemaining(); } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorTest.java index a4e674b6ec..79c03d3e71 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/transaction/TransactionSimulatorTest.java @@ -44,6 +44,7 @@ import org.hyperledger.besu.ethereum.processing.TransactionProcessingResult.Stat import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.account.Account; import org.hyperledger.besu.evm.tracing.OperationTracer; +import org.hyperledger.besu.evm.worldstate.WorldUpdater; import org.hyperledger.besu.plugin.data.TransactionType; import java.math.BigInteger; @@ -494,13 +495,17 @@ public class TransactionSimulatorTest { when(account.getNonce()).thenReturn(nonce); when(worldStateArchive.getMutable(eq(stateRoot), any(), anyBoolean())) .thenReturn(Optional.of(worldState)); - when(worldState.get(eq(address))).thenReturn(account); + final WorldUpdater updater = mock(WorldUpdater.class); + when(updater.get(address)).thenReturn(account); + when(worldState.updater()).thenReturn(updater); } private void mockWorldStateForAbsentAccount(final Hash stateRoot) { when(worldStateArchive.getMutable(eq(stateRoot), any(), anyBoolean())) .thenReturn(Optional.of(worldState)); - when(worldState.get(any())).thenReturn(null); + final WorldUpdater updater = mock(WorldUpdater.class); + when(updater.get(any())).thenReturn(null); + when(worldState.updater()).thenReturn(updater); } private void mockBlockchainForBlockHeader(final Hash stateRoot, final long blockNumber) { @@ -545,7 +550,6 @@ public class TransactionSimulatorTest { when(result.isSuccessful()).thenReturn(false); break; } - when(transactionProcessor.processTransaction( any(), any(), any(), eq(transaction), any(), any(), anyBoolean(), any(), any())) .thenReturn(result);