Merge branch 'hyperledger:main' into zkbesu

This commit is contained in:
Joshua Fernandes
2025-02-05 09:05:05 +10:00
committed by GitHub
23 changed files with 3391 additions and 1058 deletions

View File

@@ -1587,13 +1587,37 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
}
private void validateChainDataPruningParams() {
if (unstableChainPruningOptions.getChainDataPruningEnabled()
&& unstableChainPruningOptions.getChainDataPruningBlocksRetained()
< unstableChainPruningOptions.getChainDataPruningBlocksRetainedLimit()) {
throw new ParameterException(
this.commandLine,
"--Xchain-pruning-blocks-retained must be >= "
+ unstableChainPruningOptions.getChainDataPruningBlocksRetainedLimit());
Long chainDataPruningBlocksRetained =
unstableChainPruningOptions.getChainDataPruningBlocksRetained();
if (unstableChainPruningOptions.getChainDataPruningEnabled()) {
final GenesisConfigOptions genesisConfigOptions = readGenesisConfigOptions();
if (chainDataPruningBlocksRetained
< unstableChainPruningOptions.getChainDataPruningBlocksRetainedLimit()) {
throw new ParameterException(
this.commandLine,
"--Xchain-pruning-blocks-retained must be >= "
+ unstableChainPruningOptions.getChainDataPruningBlocksRetainedLimit());
} else if (genesisConfigOptions.isPoa()) {
Long epochLength = 0L;
String consensusMechanism = "";
if (genesisConfigOptions.isIbft2()) {
epochLength = genesisConfigOptions.getBftConfigOptions().getEpochLength();
consensusMechanism = "IBFT2";
} else if (genesisConfigOptions.isQbft()) {
epochLength = genesisConfigOptions.getQbftConfigOptions().getEpochLength();
consensusMechanism = "QBFT";
} else if (genesisConfigOptions.isClique()) {
epochLength = genesisConfigOptions.getCliqueConfigOptions().getEpochLength();
consensusMechanism = "Clique";
}
if (chainDataPruningBlocksRetained < epochLength) {
throw new ParameterException(
this.commandLine,
String.format(
"--Xchain-pruning-blocks-retained(%d) must be >= epochlength(%d) for %s",
chainDataPruningBlocksRetained, epochLength, consensusMechanism));
}
}
}
}

View File

@@ -2598,4 +2598,91 @@ public class BesuCommandTest extends CommandTestAbstract {
assertThat(errorOutputString).isEmpty();
}
@Test
void chainPruningEnabledWithPOAShouldFailWhenChainPruningBlocksRetainedValueLessThanEpochLength()
throws IOException {
JsonObject genesis = GENESIS_VALID_JSON;
// for QBFT
genesis.getJsonObject("config").put("qbft", new JsonObject().put("epochlength", 25000));
final Path genesisFileQBFT = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileQBFT.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=7200",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8))
.contains("--Xchain-pruning-blocks-retained(7200) must be >= epochlength(25000) for QBFT");
commandErrorOutput.reset();
// for IBFT2
genesis.getJsonObject("config").put("ibft2", new JsonObject().put("epochlength", 20000));
genesis.getJsonObject("config").remove("qbft");
final Path genesisFileIBFT = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileIBFT.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=7200",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8))
.contains("--Xchain-pruning-blocks-retained(7200) must be >= epochlength(20000) for IBFT2");
commandErrorOutput.reset();
// for Clique
genesis.getJsonObject("config").put("clique", new JsonObject().put("epochlength", 10000));
genesis.getJsonObject("config").remove("ibft2");
final Path genesisFileClique = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileClique.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=7200",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8))
.contains(
"--Xchain-pruning-blocks-retained(7200) must be >= epochlength(10000) for Clique");
}
@Test
void chainPruningEnabledWithPOA() throws IOException {
JsonObject genesis = GENESIS_VALID_JSON;
// for QBFT
genesis.getJsonObject("config").put("qbft", new JsonObject().put("epochlength", 25000));
final Path genesisFileForQBFT = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileForQBFT.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=25000",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
// for IBFT2
genesis.getJsonObject("config").put("ibft2", new JsonObject().put("epochlength", 20000));
genesis.getJsonObject("config").remove("qbft");
final Path genesisFileIBFT = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileIBFT.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=20000",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
// for Clique
genesis.getJsonObject("config").put("clique", new JsonObject().put("epochlength", 10000));
genesis.getJsonObject("config").remove("ibft2");
final Path genesisFileClique = createFakeGenesisFile(genesis);
parseCommand(
"--genesis-file",
genesisFileClique.toString(),
"--Xchain-pruning-enabled=true",
"--Xchain-pruning-blocks-retained=10000",
"--version-compatibility-protection=false");
assertThat(commandErrorOutput.toString(UTF_8)).isEmpty();
}
}

View File

@@ -24,7 +24,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.JsonRpcMethod;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.plugin.services.rpc.RpcResponseType;
import org.hyperledger.besu.testutil.BlockTestUtil;
@@ -60,22 +60,20 @@ public class DebugTraceTransactionIntegrationTest {
@Test
public void debugTraceTransactionSuccessTest() {
final Map<String, Boolean> map = Map.of("disableStorage", true);
final Object[] params =
new Object[] {
Hash.fromHexString("0xcef53f2311d7c80e9086d661e69ac11a5f3d081e28e02a9ba9b66749407ac310"),
map
};
final Hash trxHash =
Hash.fromHexString("0xcef53f2311d7c80e9086d661e69ac11a5f3d081e28e02a9ba9b66749407ac310");
final Object[] params = new Object[] {trxHash, map};
final JsonRpcRequestContext request =
new JsonRpcRequestContext(new JsonRpcRequest("2.0", DEBUG_TRACE_TRANSACTION, params));
final JsonRpcResponse response = method.response(request);
assertThat(response.getType()).isEqualTo(RpcResponseType.SUCCESS);
DebugTraceTransactionResult debugTraceTransactionResult =
(DebugTraceTransactionResult) ((JsonRpcSuccessResponse) response).getResult();
assertThat(debugTraceTransactionResult.getGas()).isEqualTo(23705L);
assertThat(debugTraceTransactionResult.getReturnValue()).isEmpty();
assertThat(debugTraceTransactionResult.failed()).isFalse();
assertThat(debugTraceTransactionResult.getStructLogs()).hasSize(106);
DebugTraceTransactionDetails debugTraceTransactionDetails =
(DebugTraceTransactionDetails) ((JsonRpcSuccessResponse) response).getResult();
assertThat(debugTraceTransactionDetails.getGas()).isEqualTo(23705L);
assertThat(debugTraceTransactionDetails.getReturnValue()).isEmpty();
assertThat(debugTraceTransactionDetails.failed()).isFalse();
assertThat(debugTraceTransactionDetails.getStructLogs()).hasSize(106);
}
@Test

View File

@@ -26,7 +26,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionT
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.response.RpcErrorType;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.debug.TraceOptions;
import org.hyperledger.besu.ethereum.mainnet.ImmutableTransactionValidationParams;
@@ -104,7 +104,7 @@ public class DebugTraceCall extends AbstractTraceCall {
new TransactionTrace(
result.transaction(), result.result(), tracer.getTraceFrames());
return new DebugTraceTransactionResult(transactionTrace);
return new DebugTraceTransactionDetails(transactionTrace);
});
}

View File

@@ -25,7 +25,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionT
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.RpcErrorType;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.api.query.TransactionWithMetadata;
import org.hyperledger.besu.ethereum.debug.TraceOptions;
@@ -76,7 +76,7 @@ public class DebugTraceTransaction implements JsonRpcMethod {
RpcErrorType.INVALID_TRANSACTION_TRACE_PARAMS,
e);
}
final DebugTraceTransactionResult debugTraceTransactionResult =
final DebugTraceTransactionDetails debugTraceTransactionResult =
debugTraceTransactionResult(hash, transactionWithMetadata.get(), traceOptions);
return new JsonRpcSuccessResponse(
@@ -86,7 +86,7 @@ public class DebugTraceTransaction implements JsonRpcMethod {
}
}
private DebugTraceTransactionResult debugTraceTransactionResult(
private DebugTraceTransactionDetails debugTraceTransactionResult(
final Hash hash,
final TransactionWithMetadata transactionWithMetadata,
final TraceOptions traceOptions) {
@@ -100,7 +100,7 @@ public class DebugTraceTransaction implements JsonRpcMethod {
mutableWorldState ->
transactionTracer
.traceTransaction(mutableWorldState, blockHash, hash, execTracer)
.map(DebugTraceTransactionResult::new))
.map(DebugTraceTransactionDetails::new))
.orElse(null);
}
}

View File

@@ -0,0 +1,77 @@
/*
* Copyright contributors to 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.results;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionTrace;
import org.hyperledger.besu.ethereum.debug.TraceFrame;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder({"gas", "failed", "returnValue", "structLogs"})
public class DebugTraceTransactionDetails {
private final List<StructLog> structLogs;
private final String returnValue;
private final long gas;
private final boolean failed;
public DebugTraceTransactionDetails(final TransactionTrace transactionTrace) {
gas = transactionTrace.getGas();
returnValue = transactionTrace.getResult().getOutput().toString().substring(2);
structLogs = new ArrayList<>(transactionTrace.getTraceFrames().size());
transactionTrace.getTraceFrames().parallelStream()
.map(DebugTraceTransactionDetails::createStructLog)
.forEachOrdered(structLogs::add);
failed = !transactionTrace.getResult().isSuccessful();
}
public static Collection<DebugTraceTransactionResult> of(
final Collection<TransactionTrace> traces) {
return traces.stream().map(DebugTraceTransactionResult::new).collect(Collectors.toList());
}
private static StructLog createStructLog(final TraceFrame frame) {
return frame
.getExceptionalHaltReason()
.map(__ -> (StructLog) new StructLogWithError(frame))
.orElse(new StructLog(frame));
}
@JsonGetter(value = "structLogs")
public List<StructLog> getStructLogs() {
return structLogs;
}
@JsonGetter(value = "returnValue")
public String getReturnValue() {
return returnValue;
}
@JsonGetter(value = "gas")
public long getGas() {
return gas;
}
@JsonGetter(value = "failed")
public boolean failed() {
return failed;
}
}

View File

@@ -1,5 +1,5 @@
/*
* Copyright ConsenSys AG.
* Copyright contributors to 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
@@ -15,32 +15,23 @@
package org.hyperledger.besu.ethereum.api.jsonrpc.internal.results;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionTrace;
import org.hyperledger.besu.ethereum.debug.TraceFrame;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonPropertyOrder({"gas", "failed", "returnValue", "structLogs"})
@JsonPropertyOrder({"txHash", "result"})
public class DebugTraceTransactionResult {
private final List<StructLog> structLogs;
private final String returnValue;
private final long gas;
private final boolean failed;
private final String txHash;
private final DebugTraceTransactionDetails result;
public DebugTraceTransactionResult(final TransactionTrace transactionTrace) {
gas = transactionTrace.getGas();
returnValue = transactionTrace.getResult().getOutput().toString().substring(2);
structLogs = new ArrayList<>(transactionTrace.getTraceFrames().size());
transactionTrace.getTraceFrames().parallelStream()
.map(DebugTraceTransactionResult::createStructLog)
.forEachOrdered(structLogs::add);
failed = !transactionTrace.getResult().isSuccessful();
this.txHash = transactionTrace.getTransaction().getHash().toHexString();
this.result = new DebugTraceTransactionDetails(transactionTrace);
}
public static Collection<DebugTraceTransactionResult> of(
@@ -48,30 +39,13 @@ public class DebugTraceTransactionResult {
return traces.stream().map(DebugTraceTransactionResult::new).collect(Collectors.toList());
}
private static StructLog createStructLog(final TraceFrame frame) {
return frame
.getExceptionalHaltReason()
.map(__ -> (StructLog) new StructLogWithError(frame))
.orElse(new StructLog(frame));
@JsonGetter(value = "txHash")
public String getTxHash() {
return txHash;
}
@JsonGetter(value = "structLogs")
public List<StructLog> getStructLogs() {
return structLogs;
}
@JsonGetter(value = "returnValue")
public String getReturnValue() {
return returnValue;
}
@JsonGetter(value = "gas")
public long getGas() {
return gas;
}
@JsonGetter(value = "failed")
public boolean failed() {
return failed;
@JsonGetter(value = "result")
public DebugTraceTransactionDetails getResult() {
return result;
}
}

View File

@@ -39,7 +39,8 @@ public class DebugTraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTe
}
public static Object[][] specs() {
return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"debug/trace-call"});
return AbstractJsonRpcHttpBySpecTest.findSpecFiles(
new String[] {"debug/trace-call", "debug/trace-block"});
}
@Test

View File

@@ -39,7 +39,8 @@ public class DebugTraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTe
}
public static Object[][] specs() {
return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"debug/trace-call"});
return AbstractJsonRpcHttpBySpecTest.findSpecFiles(
new String[] {"debug/trace-call", "debug/trace-block"});
}
@Test

View File

@@ -28,7 +28,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.exception.InvalidJsonR
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.Tracer;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.chain.Blockchain;
import org.hyperledger.besu.ethereum.core.Block;
@@ -90,10 +90,10 @@ public class DebugTraceBlockByHashTest {
when(blockchainQueries.getBlockchain()).thenReturn(blockchain);
when(blockchain.getBlockByHash(block.getHash())).thenReturn(Optional.of(block));
DebugTraceTransactionResult result1 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionResult result2 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionDetails result1 = mock(DebugTraceTransactionDetails.class);
DebugTraceTransactionDetails result2 = mock(DebugTraceTransactionDetails.class);
List<DebugTraceTransactionResult> resultList = Arrays.asList(result1, result2);
List<DebugTraceTransactionDetails> resultList = Arrays.asList(result1, result2);
try (MockedStatic<Tracer> mockedTracer = mockStatic(Tracer.class)) {
mockedTracer
@@ -109,7 +109,7 @@ public class DebugTraceBlockByHashTest {
assertThat(jsonRpcResponse).isInstanceOf(JsonRpcSuccessResponse.class);
JsonRpcSuccessResponse response = (JsonRpcSuccessResponse) jsonRpcResponse;
final Collection<DebugTraceTransactionResult> traceResult = getResult(response);
final Collection<DebugTraceTransactionDetails> traceResult = getResult(response);
assertThat(traceResult).isNotEmpty();
assertThat(traceResult).isInstanceOf(Collection.class).hasSize(2);
assertThat(traceResult).containsExactly(result1, result2);
@@ -117,8 +117,9 @@ public class DebugTraceBlockByHashTest {
}
@SuppressWarnings("unchecked")
private Collection<DebugTraceTransactionResult> getResult(final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionResult>) response.getResult();
private Collection<DebugTraceTransactionDetails> getResult(
final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionDetails>) response.getResult();
}
@Test

View File

@@ -28,7 +28,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.exception.InvalidJsonR
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.Tracer;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.chain.Blockchain;
import org.hyperledger.besu.ethereum.core.Block;
@@ -88,10 +88,10 @@ public class DebugTraceBlockByNumberTest {
when(blockchain.getBlockByNumber(blockNumber)).thenReturn(Optional.of(block));
when(block.getHeader()).thenReturn(blockHeader);
DebugTraceTransactionResult result1 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionResult result2 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionDetails result1 = mock(DebugTraceTransactionDetails.class);
DebugTraceTransactionDetails result2 = mock(DebugTraceTransactionDetails.class);
List<DebugTraceTransactionResult> resultList = Arrays.asList(result1, result2);
List<DebugTraceTransactionDetails> resultList = Arrays.asList(result1, result2);
try (MockedStatic<Tracer> mockedTracer = mockStatic(Tracer.class)) {
mockedTracer
@@ -105,7 +105,7 @@ public class DebugTraceBlockByNumberTest {
assertThat(jsonRpcResponse).isInstanceOf(JsonRpcSuccessResponse.class);
JsonRpcSuccessResponse response = (JsonRpcSuccessResponse) jsonRpcResponse;
final Collection<DebugTraceTransactionResult> traceResult = getResult(response);
final Collection<DebugTraceTransactionDetails> traceResult = getResult(response);
assertThat(traceResult).isNotEmpty();
assertThat(traceResult).isInstanceOf(Collection.class).hasSize(2);
assertThat(traceResult).containsExactly(result1, result2);
@@ -113,8 +113,9 @@ public class DebugTraceBlockByNumberTest {
}
@SuppressWarnings("unchecked")
private Collection<DebugTraceTransactionResult> getResult(final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionResult>) response.getResult();
private Collection<DebugTraceTransactionDetails> getResult(
final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionDetails>) response.getResult();
}
@Test

View File

@@ -29,7 +29,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcErrorR
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.RpcErrorType;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.chain.BadBlockManager;
import org.hyperledger.besu.ethereum.chain.Blockchain;
@@ -144,10 +144,10 @@ public class DebugTraceBlockTest {
when(blockchain.getBlockByHash(block.getHeader().getParentHash()))
.thenReturn(Optional.of(parentBlock));
DebugTraceTransactionResult result1 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionResult result2 = mock(DebugTraceTransactionResult.class);
DebugTraceTransactionDetails result1 = mock(DebugTraceTransactionDetails.class);
DebugTraceTransactionDetails result2 = mock(DebugTraceTransactionDetails.class);
List<DebugTraceTransactionResult> resultList = Arrays.asList(result1, result2);
List<DebugTraceTransactionDetails> resultList = Arrays.asList(result1, result2);
try (MockedStatic<Tracer> mockedTracer = mockStatic(Tracer.class)) {
mockedTracer
@@ -163,7 +163,7 @@ public class DebugTraceBlockTest {
assertThat(jsonRpcResponse).isInstanceOf(JsonRpcSuccessResponse.class);
JsonRpcSuccessResponse response = (JsonRpcSuccessResponse) jsonRpcResponse;
final Collection<DebugTraceTransactionResult> traceResult = getResult(response);
final Collection<DebugTraceTransactionDetails> traceResult = getResult(response);
assertThat(traceResult).isNotEmpty();
assertThat(traceResult).isInstanceOf(Collection.class).hasSize(2);
assertThat(traceResult).containsExactly(result1, result2);
@@ -171,8 +171,9 @@ public class DebugTraceBlockTest {
}
@SuppressWarnings("unchecked")
private Collection<DebugTraceTransactionResult> getResult(final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionResult>) response.getResult();
private Collection<DebugTraceTransactionDetails> getResult(
final JsonRpcSuccessResponse response) {
return (Collection<DebugTraceTransactionDetails>) response.getResult();
}
@Test

View File

@@ -30,7 +30,7 @@ import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionT
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionTracer;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionDetails;
import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.StructLog;
import org.hyperledger.besu.ethereum.api.query.BlockchainQueries;
import org.hyperledger.besu.ethereum.api.query.TransactionWithMetadata;
@@ -155,8 +155,8 @@ public class DebugTraceTransactionTest {
.thenReturn(Optional.of(transactionTrace));
final JsonRpcSuccessResponse response =
(JsonRpcSuccessResponse) debugTraceTransaction.response(request);
final DebugTraceTransactionResult transactionResult =
(DebugTraceTransactionResult) response.getResult();
final DebugTraceTransactionDetails transactionResult =
(DebugTraceTransactionDetails) response.getResult();
assertThat(transactionResult.getGas()).isEqualTo(73);
assertThat(transactionResult.getReturnValue()).isEqualTo("1234");

View File

@@ -0,0 +1,456 @@
{
"request": {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"0x04"
]
},
"response": {
"jsonrpc":"2.0",
"id":1,
"result":[
{
"txHash":"0x4de634fe767d1f6d0512ca0c9c0a054d3a2596f7cdd7c1eea5f93046a740b3c7",
"result":{
"gas":61584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":20000,
"depth":1,
"stack":[
"0x1",
"0x1"
],
"storage":{
"1":"1"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16735630,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"1"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16735627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"1"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16735624,
"gasCost":3,
"depth":1,
"stack":[
"0x2"
],
"storage":{
"1":"1"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16735621,
"gasCost":3,
"depth":1,
"stack":[
"0x2",
"0x40"
],
"storage":{
"1":"1"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16735618,
"gasCost":20000,
"depth":1,
"stack":[
"0x2",
"0x2"
],
"storage":{
"1":"1",
"2":"2"
}
},
{
"pc":14,
"op":"STOP",
"gas":16715618,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"1",
"2":"2"
}
}
]
}
},
{
"txHash":"0xf882ec206292910527fd7095e59a1ca027b873296f1eba3886aa1addc4ff0ab9",
"result":{
"gas":31584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":5000,
"depth":1,
"stack":[
"0x3",
"0x1"
],
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16750630,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16750627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16750624,
"gasCost":3,
"depth":1,
"stack":[
"0x4"
],
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16750621,
"gasCost":3,
"depth":1,
"stack":[
"0x4",
"0x40"
],
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16750618,
"gasCost":5000,
"depth":1,
"stack":[
"0x4",
"0x2"
],
"storage":{
"1":"3",
"2":"4"
}
},
{
"pc":14,
"op":"STOP",
"gas":16745618,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"3",
"2":"4"
}
}
]
}
},
{
"txHash":"0x7ca6bf869e8882216f7443accb8d642df41af5bfa3a0e63bf03be2cfe629a030",
"result":{
"gas":13686,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755654,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755651,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755648,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755645,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755642,
"gasCost":800,
"depth":1,
"stack":[
"0x3",
"0x1"
],
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16754842,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16754839,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16754836,
"gasCost":3,
"depth":1,
"stack":[
"0x0"
],
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16754833,
"gasCost":3,
"depth":1,
"stack":[
"0x0",
"0x40"
],
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16754830,
"gasCost":5000,
"depth":1,
"stack":[
"0x0",
"0x1"
],
"storage":{
"1":"0"
}
},
{
"pc":14,
"op":"STOP",
"gas":16749830,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"0"
}
}
]
}
}
]
},
"statusCode": 200
}

View File

@@ -0,0 +1,459 @@
{
"request": {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"0x04",
{
"disableMemory":true
}
]
},
"response":{
"jsonrpc":"2.0",
"id":1,
"result":[
{
"txHash":"0x4de634fe767d1f6d0512ca0c9c0a054d3a2596f7cdd7c1eea5f93046a740b3c7",
"result":{
"gas":61584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":20000,
"depth":1,
"stack":[
"0x1",
"0x1"
],
"storage":{
"1":"1"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16735630,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"1"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16735627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"1"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16735624,
"gasCost":3,
"depth":1,
"stack":[
"0x2"
],
"storage":{
"1":"1"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16735621,
"gasCost":3,
"depth":1,
"stack":[
"0x2",
"0x40"
],
"storage":{
"1":"1"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16735618,
"gasCost":20000,
"depth":1,
"stack":[
"0x2",
"0x2"
],
"storage":{
"1":"1",
"2":"2"
}
},
{
"pc":14,
"op":"STOP",
"gas":16715618,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"1",
"2":"2"
}
}
]
}
},
{
"txHash":"0xf882ec206292910527fd7095e59a1ca027b873296f1eba3886aa1addc4ff0ab9",
"result":{
"gas":31584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":5000,
"depth":1,
"stack":[
"0x3",
"0x1"
],
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16750630,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16750627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16750624,
"gasCost":3,
"depth":1,
"stack":[
"0x4"
],
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16750621,
"gasCost":3,
"depth":1,
"stack":[
"0x4",
"0x40"
],
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16750618,
"gasCost":5000,
"depth":1,
"stack":[
"0x4",
"0x2"
],
"storage":{
"1":"3",
"2":"4"
}
},
{
"pc":14,
"op":"STOP",
"gas":16745618,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"3",
"2":"4"
}
}
]
}
},
{
"txHash":"0x7ca6bf869e8882216f7443accb8d642df41af5bfa3a0e63bf03be2cfe629a030",
"result":{
"gas":13686,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755654,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755651,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755648,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755645,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755642,
"gasCost":800,
"depth":1,
"stack":[
"0x3",
"0x1"
],
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16754842,
"gasCost":3,
"depth":1,
"stack":[
],
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16754839,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
],
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16754836,
"gasCost":3,
"depth":1,
"stack":[
"0x0"
],
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16754833,
"gasCost":3,
"depth":1,
"stack":[
"0x0",
"0x40"
],
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16754830,
"gasCost":5000,
"depth":1,
"stack":[
"0x0",
"0x1"
],
"storage":{
"1":"0"
}
},
{
"pc":14,
"op":"STOP",
"gas":16749830,
"gasCost":0,
"depth":1,
"stack":[
],
"storage":{
"1":"0"
}
}
]
}
}
]
},
"statusCode": 200
}

View File

@@ -0,0 +1,348 @@
{
"request": {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"0x04",
{
"disableStack": true
}
]
},
"response": {
"jsonrpc":"2.0",
"id":1,
"result":[
{
"txHash":"0x4de634fe767d1f6d0512ca0c9c0a054d3a2596f7cdd7c1eea5f93046a740b3c7",
"result":{
"gas":61584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":20000,
"depth":1,
"storage":{
"1":"1"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16735630,
"gasCost":3,
"depth":1,
"storage":{
"1":"1"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16735627,
"gasCost":3,
"depth":1,
"storage":{
"1":"1"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16735624,
"gasCost":3,
"depth":1,
"storage":{
"1":"1"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16735621,
"gasCost":3,
"depth":1,
"storage":{
"1":"1"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16735618,
"gasCost":20000,
"depth":1,
"storage":{
"1":"1",
"2":"2"
}
},
{
"pc":14,
"op":"STOP",
"gas":16715618,
"gasCost":0,
"depth":1,
"storage":{
"1":"1",
"2":"2"
}
}
]
}
},
{
"txHash":"0xf882ec206292910527fd7095e59a1ca027b873296f1eba3886aa1addc4ff0ab9",
"result":{
"gas":31584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":5000,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16750630,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16750627,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16750624,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16750621,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16750618,
"gasCost":5000,
"depth":1,
"storage":{
"1":"3",
"2":"4"
}
},
{
"pc":14,
"op":"STOP",
"gas":16745618,
"gasCost":0,
"depth":1,
"storage":{
"1":"3",
"2":"4"
}
}
]
}
},
{
"txHash":"0x7ca6bf869e8882216f7443accb8d642df41af5bfa3a0e63bf03be2cfe629a030",
"result":{
"gas":13686,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755654,
"gasCost":3,
"depth":1
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755651,
"gasCost":3,
"depth":1
},
{
"pc":3,
"op":"PUSH1",
"gas":16755648,
"gasCost":3,
"depth":1
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755645,
"gasCost":3,
"depth":1
},
{
"pc":6,
"op":"SSTORE",
"gas":16755642,
"gasCost":800,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":7,
"op":"PUSH1",
"gas":16754842,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16754839,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":10,
"op":"PUSH1",
"gas":16754836,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16754833,
"gasCost":3,
"depth":1,
"storage":{
"1":"3"
}
},
{
"pc":13,
"op":"SSTORE",
"gas":16754830,
"gasCost":5000,
"depth":1,
"storage":{
"1":"0"
}
},
{
"pc":14,
"op":"STOP",
"gas":16749830,
"gasCost":0,
"depth":1,
"storage":{
"1":"0"
}
}
]
}
}
]
},
"statusCode": 200
}

View File

@@ -0,0 +1,392 @@
{
"request": {
"id": 1,
"jsonrpc": "2.0",
"method": "debug_traceBlockByNumber",
"params": [
"0x04",
{
"disableStorage": true
}
]
},
"response": {
"jsonrpc":"2.0",
"id":1,
"result":[
{
"txHash":"0x4de634fe767d1f6d0512ca0c9c0a054d3a2596f7cdd7c1eea5f93046a740b3c7",
"result":{
"gas":61584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":20000,
"depth":1,
"stack":[
"0x1",
"0x1"
]
},
{
"pc":7,
"op":"PUSH1",
"gas":16735630,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16735627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
]
},
{
"pc":10,
"op":"PUSH1",
"gas":16735624,
"gasCost":3,
"depth":1,
"stack":[
"0x2"
]
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16735621,
"gasCost":3,
"depth":1,
"stack":[
"0x2",
"0x40"
]
},
{
"pc":13,
"op":"SSTORE",
"gas":16735618,
"gasCost":20000,
"depth":1,
"stack":[
"0x2",
"0x2"
]
},
{
"pc":14,
"op":"STOP",
"gas":16715618,
"gasCost":0,
"depth":1,
"stack":[
]
}
]
}
},
{
"txHash":"0xf882ec206292910527fd7095e59a1ca027b873296f1eba3886aa1addc4ff0ab9",
"result":{
"gas":31584,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755642,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755639,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755636,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755633,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755630,
"gasCost":5000,
"depth":1,
"stack":[
"0x3",
"0x1"
]
},
{
"pc":7,
"op":"PUSH1",
"gas":16750630,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16750627,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
]
},
{
"pc":10,
"op":"PUSH1",
"gas":16750624,
"gasCost":3,
"depth":1,
"stack":[
"0x4"
]
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16750621,
"gasCost":3,
"depth":1,
"stack":[
"0x4",
"0x40"
]
},
{
"pc":13,
"op":"SSTORE",
"gas":16750618,
"gasCost":5000,
"depth":1,
"stack":[
"0x4",
"0x2"
]
},
{
"pc":14,
"op":"STOP",
"gas":16745618,
"gasCost":0,
"depth":1,
"stack":[
]
}
]
}
},
{
"txHash":"0x7ca6bf869e8882216f7443accb8d642df41af5bfa3a0e63bf03be2cfe629a030",
"result":{
"gas":13686,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755654,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16755651,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16755648,
"gasCost":3,
"depth":1,
"stack":[
"0x3"
]
},
{
"pc":5,
"op":"CALLDATALOAD",
"gas":16755645,
"gasCost":3,
"depth":1,
"stack":[
"0x3",
"0x0"
]
},
{
"pc":6,
"op":"SSTORE",
"gas":16755642,
"gasCost":800,
"depth":1,
"stack":[
"0x3",
"0x1"
]
},
{
"pc":7,
"op":"PUSH1",
"gas":16754842,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":9,
"op":"CALLDATALOAD",
"gas":16754839,
"gasCost":3,
"depth":1,
"stack":[
"0x60"
]
},
{
"pc":10,
"op":"PUSH1",
"gas":16754836,
"gasCost":3,
"depth":1,
"stack":[
"0x0"
]
},
{
"pc":12,
"op":"CALLDATALOAD",
"gas":16754833,
"gasCost":3,
"depth":1,
"stack":[
"0x0",
"0x40"
]
},
{
"pc":13,
"op":"SSTORE",
"gas":16754830,
"gasCost":5000,
"depth":1,
"stack":[
"0x0",
"0x1"
]
},
{
"pc":14,
"op":"STOP",
"gas":16749830,
"gasCost":0,
"depth":1,
"stack":[
]
}
]
}
}
]
},
"statusCode": 200
}

View File

@@ -17,175 +17,203 @@
"id" : 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 22070,
"failed" : false,
"returnValue" : "f000000000000000000000000000000000000000000000000000000000000002",
"structLogs" : [ {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16755910,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 2,
"op" : "PUSH1",
"gas" : 16755907,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 4,
"op" : "PUSH1",
"gas" : 16755904,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 6,
"op" : "CALLDATASIZE",
"gas" : 16755901,
"gasCost" : 2,
"depth" : 1
}, {
"pc" : 7,
"op" : "SUB",
"gas" : 16755899,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 8,
"op" : "DUP1",
"gas" : 16755896,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16755893,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16755890,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 13,
"op" : "CALLDATACOPY",
"gas" : 16755887,
"gasCost" : 9,
"depth" : 1
}, {
"pc" : 14,
"op" : "PUSH1",
"gas" : 16755878,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 16,
"op" : "CALLVALUE",
"gas" : 16755875,
"gasCost" : 2,
"depth" : 1
}, {
"pc" : 17,
"op" : "PUSH1",
"gas" : 16755873,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 19,
"op" : "CALLDATALOAD",
"gas" : 16755870,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 20,
"op" : "GAS",
"gas" : 16755867,
"gasCost" : 2,
"depth" : 1
}, {
"pc" : 21,
"op" : "CALLCODE",
"gas" : 16755865,
"gasCost" : 16494066,
"depth" : 1
}, {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16493366,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 2,
"op" : "CALLDATALOAD",
"gas" : 16493363,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 3,
"op" : "PUSH1",
"gas" : 16493360,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 5,
"op" : "ADD",
"gas" : 16493357,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 6,
"op" : "PUSH1",
"gas" : 16493354,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 8,
"op" : "MSTORE",
"gas" : 16493351,
"gasCost" : 6,
"depth" : 2
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16493345,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16493342,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 13,
"op" : "RETURN",
"gas" : 16493339,
"gasCost" : 0,
"depth" : 2
}, {
"pc" : 22,
"op" : "PUSH1",
"gas" : 16755138,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 24,
"op" : "PUSH1",
"gas" : 16755135,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 26,
"op" : "RETURN",
"gas" : 16755132,
"gasCost" : 0,
"depth" : 1
} ]
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":22070,
"failed":false,
"returnValue":"f000000000000000000000000000000000000000000000000000000000000002",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755910,
"gasCost":3,
"depth":1
},
{
"pc":2,
"op":"PUSH1",
"gas":16755907,
"gasCost":3,
"depth":1
},
{
"pc":4,
"op":"PUSH1",
"gas":16755904,
"gasCost":3,
"depth":1
},
{
"pc":6,
"op":"CALLDATASIZE",
"gas":16755901,
"gasCost":2,
"depth":1
},
{
"pc":7,
"op":"SUB",
"gas":16755899,
"gasCost":3,
"depth":1
},
{
"pc":8,
"op":"DUP1",
"gas":16755896,
"gasCost":3,
"depth":1
},
{
"pc":9,
"op":"PUSH1",
"gas":16755893,
"gasCost":3,
"depth":1
},
{
"pc":11,
"op":"PUSH1",
"gas":16755890,
"gasCost":3,
"depth":1
},
{
"pc":13,
"op":"CALLDATACOPY",
"gas":16755887,
"gasCost":9,
"depth":1
},
{
"pc":14,
"op":"PUSH1",
"gas":16755878,
"gasCost":3,
"depth":1
},
{
"pc":16,
"op":"CALLVALUE",
"gas":16755875,
"gasCost":2,
"depth":1
},
{
"pc":17,
"op":"PUSH1",
"gas":16755873,
"gasCost":3,
"depth":1
},
{
"pc":19,
"op":"CALLDATALOAD",
"gas":16755870,
"gasCost":3,
"depth":1
},
{
"pc":20,
"op":"GAS",
"gas":16755867,
"gasCost":2,
"depth":1
},
{
"pc":21,
"op":"CALLCODE",
"gas":16755865,
"gasCost":16494066,
"depth":1
},
{
"pc":0,
"op":"PUSH1",
"gas":16493366,
"gasCost":3,
"depth":2
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16493363,
"gasCost":3,
"depth":2
},
{
"pc":3,
"op":"PUSH1",
"gas":16493360,
"gasCost":3,
"depth":2
},
{
"pc":5,
"op":"ADD",
"gas":16493357,
"gasCost":3,
"depth":2
},
{
"pc":6,
"op":"PUSH1",
"gas":16493354,
"gasCost":3,
"depth":2
},
{
"pc":8,
"op":"MSTORE",
"gas":16493351,
"gasCost":6,
"depth":2
},
{
"pc":9,
"op":"PUSH1",
"gas":16493345,
"gasCost":3,
"depth":2
},
{
"pc":11,
"op":"PUSH1",
"gas":16493342,
"gasCost":3,
"depth":2
},
{
"pc":13,
"op":"RETURN",
"gas":16493339,
"gasCost":0,
"depth":2
},
{
"pc":22,
"op":"PUSH1",
"gas":16755138,
"gasCost":3,
"depth":1
},
{
"pc":24,
"op":"PUSH1",
"gas":16755135,
"gasCost":3,
"depth":1
},
{
"pc":26,
"op":"RETURN",
"gas":16755132,
"gasCost":0,
"depth":1
}
]
}
},
"statusCode": 200

View File

@@ -14,202 +14,335 @@
"id" : 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 22070,
"failed" : false,
"returnValue" : "f000000000000000000000000000000000000000000000000000000000000002",
"structLogs" : [ {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16755910,
"gasCost" : 3,
"depth" : 1,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "PUSH1",
"gas" : 16755907,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20" ]
}, {
"pc" : 4,
"op" : "PUSH1",
"gas" : 16755904,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0" ]
}, {
"pc" : 6,
"op" : "CALLDATASIZE",
"gas" : 16755901,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 7,
"op" : "SUB",
"gas" : 16755899,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x40" ]
}, {
"pc" : 8,
"op" : "DUP1",
"gas" : 16755896,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16755893,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20" ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16755890,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20" ]
}, {
"pc" : 13,
"op" : "CALLDATACOPY",
"gas" : 16755887,
"gasCost" : 9,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20", "0x0" ]
}, {
"pc" : 14,
"op" : "PUSH1",
"gas" : 16755878,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 16,
"op" : "CALLVALUE",
"gas" : 16755875,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0" ]
}, {
"pc" : 17,
"op" : "PUSH1",
"gas" : 16755873,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0" ]
}, {
"pc" : 19,
"op" : "CALLDATALOAD",
"gas" : 16755870,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x0" ]
}, {
"pc" : 20,
"op" : "GAS",
"gas" : 16755867,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000" ]
}, {
"pc" : 21,
"op" : "CALLCODE",
"gas" : 16755865,
"gasCost" : 16494066,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000", "0xffac99" ]
}, {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16493366,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "CALLDATALOAD",
"gas" : 16493363,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x0" ]
}, {
"pc" : 3,
"op" : "PUSH1",
"gas" : 16493360,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 5,
"op" : "ADD",
"gas" : 16493357,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001", "0x1" ]
}, {
"pc" : 6,
"op" : "PUSH1",
"gas" : 16493354,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 8,
"op" : "MSTORE",
"gas" : 16493351,
"gasCost" : 6,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002", "0x0" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16493345,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16493342,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x20" ]
}, {
"pc" : 13,
"op" : "RETURN",
"gas" : 16493339,
"gasCost" : 0,
"depth" : 2,
"stack" : [ "0x20", "0x0" ]
}, {
"pc" : 22,
"op" : "PUSH1",
"gas" : 16755138,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1" ]
}, {
"pc" : 24,
"op" : "PUSH1",
"gas" : 16755135,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1", "0x20" ]
}, {
"pc" : 26,
"op" : "RETURN",
"gas" : 16755132,
"gasCost" : 0,
"depth" : 1,
"stack" : [ "0x1", "0x20", "0x0" ]
} ]
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":22070,
"failed":false,
"returnValue":"f000000000000000000000000000000000000000000000000000000000000002",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755910,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"PUSH1",
"gas":16755907,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":4,
"op":"PUSH1",
"gas":16755904,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0"
]
},
{
"pc":6,
"op":"CALLDATASIZE",
"gas":16755901,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":7,
"op":"SUB",
"gas":16755899,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x40"
]
},
{
"pc":8,
"op":"DUP1",
"gas":16755896,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16755893,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20"
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16755890,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20"
]
},
{
"pc":13,
"op":"CALLDATACOPY",
"gas":16755887,
"gasCost":9,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20",
"0x0"
]
},
{
"pc":14,
"op":"PUSH1",
"gas":16755878,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":16,
"op":"CALLVALUE",
"gas":16755875,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0"
]
},
{
"pc":17,
"op":"PUSH1",
"gas":16755873,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0"
]
},
{
"pc":19,
"op":"CALLDATALOAD",
"gas":16755870,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x0"
]
},
{
"pc":20,
"op":"GAS",
"gas":16755867,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000"
]
},
{
"pc":21,
"op":"CALLCODE",
"gas":16755865,
"gasCost":16494066,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000",
"0xffac99"
]
},
{
"pc":0,
"op":"PUSH1",
"gas":16493366,
"gasCost":3,
"depth":2,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16493363,
"gasCost":3,
"depth":2,
"stack":[
"0x0"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16493360,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":5,
"op":"ADD",
"gas":16493357,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001",
"0x1"
]
},
{
"pc":6,
"op":"PUSH1",
"gas":16493354,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":8,
"op":"MSTORE",
"gas":16493351,
"gasCost":6,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002",
"0x0"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16493345,
"gasCost":3,
"depth":2,
"stack":[
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16493342,
"gasCost":3,
"depth":2,
"stack":[
"0x20"
]
},
{
"pc":13,
"op":"RETURN",
"gas":16493339,
"gasCost":0,
"depth":2,
"stack":[
"0x20",
"0x0"
]
},
{
"pc":22,
"op":"PUSH1",
"gas":16755138,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
]
},
{
"pc":24,
"op":"PUSH1",
"gas":16755135,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x20"
]
},
{
"pc":26,
"op":"RETURN",
"gas":16755132,
"gasCost":0,
"depth":1,
"stack":[
"0x1",
"0x20",
"0x0"
]
}
]
}
},
"statusCode": 200

View File

@@ -17,202 +17,335 @@
"id" : 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 22070,
"failed" : false,
"returnValue" : "f000000000000000000000000000000000000000000000000000000000000002",
"structLogs" : [ {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16755910,
"gasCost" : 3,
"depth" : 1,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "PUSH1",
"gas" : 16755907,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20" ]
}, {
"pc" : 4,
"op" : "PUSH1",
"gas" : 16755904,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0" ]
}, {
"pc" : 6,
"op" : "CALLDATASIZE",
"gas" : 16755901,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 7,
"op" : "SUB",
"gas" : 16755899,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x40" ]
}, {
"pc" : 8,
"op" : "DUP1",
"gas" : 16755896,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16755893,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20" ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16755890,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20" ]
}, {
"pc" : 13,
"op" : "CALLDATACOPY",
"gas" : 16755887,
"gasCost" : 9,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20", "0x0" ]
}, {
"pc" : 14,
"op" : "PUSH1",
"gas" : 16755878,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 16,
"op" : "CALLVALUE",
"gas" : 16755875,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0" ]
}, {
"pc" : 17,
"op" : "PUSH1",
"gas" : 16755873,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0" ]
}, {
"pc" : 19,
"op" : "CALLDATALOAD",
"gas" : 16755870,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x0" ]
}, {
"pc" : 20,
"op" : "GAS",
"gas" : 16755867,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000" ]
}, {
"pc" : 21,
"op" : "CALLCODE",
"gas" : 16755865,
"gasCost" : 16494066,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000", "0xffac99" ]
}, {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16493366,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "CALLDATALOAD",
"gas" : 16493363,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x0" ]
}, {
"pc" : 3,
"op" : "PUSH1",
"gas" : 16493360,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 5,
"op" : "ADD",
"gas" : 16493357,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001", "0x1" ]
}, {
"pc" : 6,
"op" : "PUSH1",
"gas" : 16493354,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 8,
"op" : "MSTORE",
"gas" : 16493351,
"gasCost" : 6,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002", "0x0" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16493345,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16493342,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x20" ]
}, {
"pc" : 13,
"op" : "RETURN",
"gas" : 16493339,
"gasCost" : 0,
"depth" : 2,
"stack" : [ "0x20", "0x0" ]
}, {
"pc" : 22,
"op" : "PUSH1",
"gas" : 16755138,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1" ]
}, {
"pc" : 24,
"op" : "PUSH1",
"gas" : 16755135,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1", "0x20" ]
}, {
"pc" : 26,
"op" : "RETURN",
"gas" : 16755132,
"gasCost" : 0,
"depth" : 1,
"stack" : [ "0x1", "0x20", "0x0" ]
} ]
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":22070,
"failed":false,
"returnValue":"f000000000000000000000000000000000000000000000000000000000000002",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755910,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"PUSH1",
"gas":16755907,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":4,
"op":"PUSH1",
"gas":16755904,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0"
]
},
{
"pc":6,
"op":"CALLDATASIZE",
"gas":16755901,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":7,
"op":"SUB",
"gas":16755899,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x40"
]
},
{
"pc":8,
"op":"DUP1",
"gas":16755896,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16755893,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20"
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16755890,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20"
]
},
{
"pc":13,
"op":"CALLDATACOPY",
"gas":16755887,
"gasCost":9,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20",
"0x0"
]
},
{
"pc":14,
"op":"PUSH1",
"gas":16755878,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":16,
"op":"CALLVALUE",
"gas":16755875,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0"
]
},
{
"pc":17,
"op":"PUSH1",
"gas":16755873,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0"
]
},
{
"pc":19,
"op":"CALLDATALOAD",
"gas":16755870,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x0"
]
},
{
"pc":20,
"op":"GAS",
"gas":16755867,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000"
]
},
{
"pc":21,
"op":"CALLCODE",
"gas":16755865,
"gasCost":16494066,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000",
"0xffac99"
]
},
{
"pc":0,
"op":"PUSH1",
"gas":16493366,
"gasCost":3,
"depth":2,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16493363,
"gasCost":3,
"depth":2,
"stack":[
"0x0"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16493360,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":5,
"op":"ADD",
"gas":16493357,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001",
"0x1"
]
},
{
"pc":6,
"op":"PUSH1",
"gas":16493354,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":8,
"op":"MSTORE",
"gas":16493351,
"gasCost":6,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002",
"0x0"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16493345,
"gasCost":3,
"depth":2,
"stack":[
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16493342,
"gasCost":3,
"depth":2,
"stack":[
"0x20"
]
},
{
"pc":13,
"op":"RETURN",
"gas":16493339,
"gasCost":0,
"depth":2,
"stack":[
"0x20",
"0x0"
]
},
{
"pc":22,
"op":"PUSH1",
"gas":16755138,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
]
},
{
"pc":24,
"op":"PUSH1",
"gas":16755135,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x20"
]
},
{
"pc":26,
"op":"RETURN",
"gas":16755132,
"gasCost":0,
"depth":1,
"stack":[
"0x1",
"0x20",
"0x0"
]
}
]
}
},
"statusCode": 200

View File

@@ -16,190 +16,246 @@
} ],
"id" : 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 22070,
"failed" : false,
"returnValue" : "f000000000000000000000000000000000000000000000000000000000000002",
"structLogs" : [ {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16755910,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 2,
"op" : "PUSH1",
"gas" : 16755907,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 4,
"op" : "PUSH1",
"gas" : 16755904,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 6,
"op" : "CALLDATASIZE",
"gas" : 16755901,
"gasCost" : 2,
"depth" : 1
}, {
"pc" : 7,
"op" : "SUB",
"gas" : 16755899,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 8,
"op" : "DUP1",
"gas" : 16755896,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16755893,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16755890,
"gasCost" : 3,
"depth" : 1
}, {
"pc" : 13,
"op" : "CALLDATACOPY",
"gas" : 16755887,
"gasCost" : 9,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 14,
"op" : "PUSH1",
"gas" : 16755878,
"gasCost" : 3,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 16,
"op" : "CALLVALUE",
"gas" : 16755875,
"gasCost" : 2,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 17,
"op" : "PUSH1",
"gas" : 16755873,
"gasCost" : 3,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 19,
"op" : "CALLDATALOAD",
"gas" : 16755870,
"gasCost" : 3,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 20,
"op" : "GAS",
"gas" : 16755867,
"gasCost" : 2,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 21,
"op" : "CALLCODE",
"gas" : 16755865,
"gasCost" : 16494066,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16493366,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 2,
"op" : "CALLDATALOAD",
"gas" : 16493363,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 3,
"op" : "PUSH1",
"gas" : 16493360,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 5,
"op" : "ADD",
"gas" : 16493357,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 6,
"op" : "PUSH1",
"gas" : 16493354,
"gasCost" : 3,
"depth" : 2
}, {
"pc" : 8,
"op" : "MSTORE",
"gas" : 16493351,
"gasCost" : 6,
"depth" : 2,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16493345,
"gasCost" : 3,
"depth" : 2,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16493342,
"gasCost" : 3,
"depth" : 2,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 13,
"op" : "RETURN",
"gas" : 16493339,
"gasCost" : 0,
"depth" : 2,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 22,
"op" : "PUSH1",
"gas" : 16755138,
"gasCost" : 3,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 24,
"op" : "PUSH1",
"gas" : 16755135,
"gasCost" : 3,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 26,
"op" : "RETURN",
"gas" : 16755132,
"gasCost" : 0,
"depth" : 1,
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
} ]
"response":{
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":22070,
"failed":false,
"returnValue":"f000000000000000000000000000000000000000000000000000000000000002",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755910,
"gasCost":3,
"depth":1
},
{
"pc":2,
"op":"PUSH1",
"gas":16755907,
"gasCost":3,
"depth":1
},
{
"pc":4,
"op":"PUSH1",
"gas":16755904,
"gasCost":3,
"depth":1
},
{
"pc":6,
"op":"CALLDATASIZE",
"gas":16755901,
"gasCost":2,
"depth":1
},
{
"pc":7,
"op":"SUB",
"gas":16755899,
"gasCost":3,
"depth":1
},
{
"pc":8,
"op":"DUP1",
"gas":16755896,
"gasCost":3,
"depth":1
},
{
"pc":9,
"op":"PUSH1",
"gas":16755893,
"gasCost":3,
"depth":1
},
{
"pc":11,
"op":"PUSH1",
"gas":16755890,
"gasCost":3,
"depth":1
},
{
"pc":13,
"op":"CALLDATACOPY",
"gas":16755887,
"gasCost":9,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":14,
"op":"PUSH1",
"gas":16755878,
"gasCost":3,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":16,
"op":"CALLVALUE",
"gas":16755875,
"gasCost":2,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":17,
"op":"PUSH1",
"gas":16755873,
"gasCost":3,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":19,
"op":"CALLDATALOAD",
"gas":16755870,
"gasCost":3,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":20,
"op":"GAS",
"gas":16755867,
"gasCost":2,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":21,
"op":"CALLCODE",
"gas":16755865,
"gasCost":16494066,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":0,
"op":"PUSH1",
"gas":16493366,
"gasCost":3,
"depth":2
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16493363,
"gasCost":3,
"depth":2
},
{
"pc":3,
"op":"PUSH1",
"gas":16493360,
"gasCost":3,
"depth":2
},
{
"pc":5,
"op":"ADD",
"gas":16493357,
"gasCost":3,
"depth":2
},
{
"pc":6,
"op":"PUSH1",
"gas":16493354,
"gasCost":3,
"depth":2
},
{
"pc":8,
"op":"MSTORE",
"gas":16493351,
"gasCost":6,
"depth":2,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16493345,
"gasCost":3,
"depth":2,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16493342,
"gasCost":3,
"depth":2,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":13,
"op":"RETURN",
"gas":16493339,
"gasCost":0,
"depth":2,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":22,
"op":"PUSH1",
"gas":16755138,
"gasCost":3,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":24,
"op":"PUSH1",
"gas":16755135,
"gasCost":3,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":26,
"op":"RETURN",
"gas":16755132,
"gasCost":0,
"depth":1,
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
}
]
}
},
"statusCode": 200

View File

@@ -17,216 +17,377 @@
"id" : 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 22070,
"failed" : false,
"returnValue" : "f000000000000000000000000000000000000000000000000000000000000002",
"structLogs" : [ {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16755910,
"gasCost" : 3,
"depth" : 1,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "PUSH1",
"gas" : 16755907,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20" ]
}, {
"pc" : 4,
"op" : "PUSH1",
"gas" : 16755904,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0" ]
}, {
"pc" : 6,
"op" : "CALLDATASIZE",
"gas" : 16755901,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 7,
"op" : "SUB",
"gas" : 16755899,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x40" ]
}, {
"pc" : 8,
"op" : "DUP1",
"gas" : 16755896,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16755893,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20" ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16755890,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20" ]
}, {
"pc" : 13,
"op" : "CALLDATACOPY",
"gas" : 16755887,
"gasCost" : 9,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x20", "0x20", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 14,
"op" : "PUSH1",
"gas" : 16755878,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 16,
"op" : "CALLVALUE",
"gas" : 16755875,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 17,
"op" : "PUSH1",
"gas" : 16755873,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 19,
"op" : "CALLDATALOAD",
"gas" : 16755870,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 20,
"op" : "GAS",
"gas" : 16755867,
"gasCost" : 2,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 21,
"op" : "CALLCODE",
"gas" : 16755865,
"gasCost" : 16494066,
"depth" : 1,
"stack" : [ "0x20", "0x0", "0x20", "0x0", "0x0", "0x30000000000000000000000000000000000000", "0xffac99" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 0,
"op" : "PUSH1",
"gas" : 16493366,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ]
}, {
"pc" : 2,
"op" : "CALLDATALOAD",
"gas" : 16493363,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x0" ]
}, {
"pc" : 3,
"op" : "PUSH1",
"gas" : 16493360,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001" ]
}, {
"pc" : 5,
"op" : "ADD",
"gas" : 16493357,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000001", "0x1" ]
}, {
"pc" : 6,
"op" : "PUSH1",
"gas" : 16493354,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 8,
"op" : "MSTORE",
"gas" : 16493351,
"gasCost" : 6,
"depth" : 2,
"stack" : [ "0xf000000000000000000000000000000000000000000000000000000000000002", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 9,
"op" : "PUSH1",
"gas" : 16493345,
"gasCost" : 3,
"depth" : 2,
"stack" : [ ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 11,
"op" : "PUSH1",
"gas" : 16493342,
"gasCost" : 3,
"depth" : 2,
"stack" : [ "0x20" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 13,
"op" : "RETURN",
"gas" : 16493339,
"gasCost" : 0,
"depth" : 2,
"stack" : [ "0x20", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 22,
"op" : "PUSH1",
"gas" : 16755138,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 24,
"op" : "PUSH1",
"gas" : 16755135,
"gasCost" : 3,
"depth" : 1,
"stack" : [ "0x1", "0x20" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
}, {
"pc" : 26,
"op" : "RETURN",
"gas" : 16755132,
"gasCost" : 0,
"depth" : 1,
"stack" : [ "0x1", "0x20", "0x0" ],
"memory" : [ "0xf000000000000000000000000000000000000000000000000000000000000002" ]
} ]
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":22070,
"failed":false,
"returnValue":"f000000000000000000000000000000000000000000000000000000000000002",
"structLogs":[
{
"pc":0,
"op":"PUSH1",
"gas":16755910,
"gasCost":3,
"depth":1,
"stack":[
]
},
{
"pc":2,
"op":"PUSH1",
"gas":16755907,
"gasCost":3,
"depth":1,
"stack":[
"0x20"
]
},
{
"pc":4,
"op":"PUSH1",
"gas":16755904,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0"
]
},
{
"pc":6,
"op":"CALLDATASIZE",
"gas":16755901,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":7,
"op":"SUB",
"gas":16755899,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x40"
]
},
{
"pc":8,
"op":"DUP1",
"gas":16755896,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16755893,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20"
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16755890,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20"
]
},
{
"pc":13,
"op":"CALLDATACOPY",
"gas":16755887,
"gasCost":9,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x20",
"0x20",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":14,
"op":"PUSH1",
"gas":16755878,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":16,
"op":"CALLVALUE",
"gas":16755875,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":17,
"op":"PUSH1",
"gas":16755873,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":19,
"op":"CALLDATALOAD",
"gas":16755870,
"gasCost":3,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":20,
"op":"GAS",
"gas":16755867,
"gasCost":2,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":21,
"op":"CALLCODE",
"gas":16755865,
"gasCost":16494066,
"depth":1,
"stack":[
"0x20",
"0x0",
"0x20",
"0x0",
"0x0",
"0x30000000000000000000000000000000000000",
"0xffac99"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":0,
"op":"PUSH1",
"gas":16493366,
"gasCost":3,
"depth":2,
"stack":[
]
},
{
"pc":2,
"op":"CALLDATALOAD",
"gas":16493363,
"gasCost":3,
"depth":2,
"stack":[
"0x0"
]
},
{
"pc":3,
"op":"PUSH1",
"gas":16493360,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001"
]
},
{
"pc":5,
"op":"ADD",
"gas":16493357,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000001",
"0x1"
]
},
{
"pc":6,
"op":"PUSH1",
"gas":16493354,
"gasCost":3,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":8,
"op":"MSTORE",
"gas":16493351,
"gasCost":6,
"depth":2,
"stack":[
"0xf000000000000000000000000000000000000000000000000000000000000002",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":9,
"op":"PUSH1",
"gas":16493345,
"gasCost":3,
"depth":2,
"stack":[
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":11,
"op":"PUSH1",
"gas":16493342,
"gasCost":3,
"depth":2,
"stack":[
"0x20"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":13,
"op":"RETURN",
"gas":16493339,
"gasCost":0,
"depth":2,
"stack":[
"0x20",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":22,
"op":"PUSH1",
"gas":16755138,
"gasCost":3,
"depth":1,
"stack":[
"0x1"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":24,
"op":"PUSH1",
"gas":16755135,
"gasCost":3,
"depth":1,
"stack":[
"0x1",
"0x20"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
},
{
"pc":26,
"op":"RETURN",
"gas":16755132,
"gasCost":0,
"depth":1,
"stack":[
"0x1",
"0x20",
"0x0"
],
"memory":[
"0xf000000000000000000000000000000000000000000000000000000000000002"
]
}
]
}
},
"statusCode": 200

View File

@@ -17,19 +17,21 @@
"id": 1
},
"response": {
"jsonrpc": "2.0",
"id": 1,
"result": {
"gas" : 21164,
"failed" : false,
"returnValue" : "",
"structLogs" : [ {
"pc" : 0,
"op" : "STOP",
"gas" : 17592186023252,
"gasCost" : 0,
"depth" : 1
} ]
"jsonrpc":"2.0",
"id":1,
"result":{
"gas":21164,
"failed":false,
"returnValue":"",
"structLogs":[
{
"pc":0,
"op":"STOP",
"gas":17592186023252,
"gasCost":0,
"depth":1
}
]
}
},
"statusCode": 200