mirror of https://github.com/ethereum/go-ethereum
eth/tracers: add native flatCallTracer (aka parity style tracer) (#26377)
Adds support for a native call tracer with the Parity format, which outputs call frames in a flat array. This tracer accepts the following options: - `convertParityErrors: true` will convert error messages to match those of Parity - `includePrecompiles: true` will report all calls to precompiles. The default matches Parity's behavior where CALL and STATICCALLs to precompiles are excluded Incompatibilities with Parity include: - Parity removes the result object in case of failure. This behavior is maintained with the exception of reverts. Revert output usually contains useful information, i.e. Solidity revert reason. - The `gasUsed` field accounts for intrinsic gas (e.g. 21000 for simple transfers) and refunds unlike Parity - Block rewards are not reported Co-authored-by: Sina Mahmoodi <itz.s1na@gmail.com>pull/26779/head
parent
c155c8e179
commit
2ad150d986
@ -0,0 +1,213 @@ |
|||||||
|
package tracetest |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/json" |
||||||
|
"fmt" |
||||||
|
"math/big" |
||||||
|
"os" |
||||||
|
"path/filepath" |
||||||
|
"reflect" |
||||||
|
"strings" |
||||||
|
"testing" |
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common" |
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil" |
||||||
|
"github.com/ethereum/go-ethereum/core" |
||||||
|
"github.com/ethereum/go-ethereum/core/rawdb" |
||||||
|
"github.com/ethereum/go-ethereum/core/types" |
||||||
|
"github.com/ethereum/go-ethereum/core/vm" |
||||||
|
"github.com/ethereum/go-ethereum/rlp" |
||||||
|
"github.com/ethereum/go-ethereum/tests" |
||||||
|
|
||||||
|
// Force-load the native, to trigger registration
|
||||||
|
"github.com/ethereum/go-ethereum/eth/tracers" |
||||||
|
) |
||||||
|
|
||||||
|
// flatCallTrace is the result of a callTracerParity run.
|
||||||
|
type flatCallTrace struct { |
||||||
|
Action flatCallTraceAction `json:"action"` |
||||||
|
BlockHash common.Hash `json:"-"` |
||||||
|
BlockNumber uint64 `json:"-"` |
||||||
|
Error string `json:"error,omitempty"` |
||||||
|
Result flatCallTraceResult `json:"result,omitempty"` |
||||||
|
Subtraces int `json:"subtraces"` |
||||||
|
TraceAddress []int `json:"traceAddress"` |
||||||
|
TransactionHash common.Hash `json:"-"` |
||||||
|
TransactionPosition uint64 `json:"-"` |
||||||
|
Type string `json:"type"` |
||||||
|
Time string `json:"-"` |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallTraceAction struct { |
||||||
|
Author common.Address `json:"author,omitempty"` |
||||||
|
RewardType string `json:"rewardType,omitempty"` |
||||||
|
SelfDestructed common.Address `json:"address,omitempty"` |
||||||
|
Balance hexutil.Big `json:"balance,omitempty"` |
||||||
|
CallType string `json:"callType,omitempty"` |
||||||
|
CreationMethod string `json:"creationMethod,omitempty"` |
||||||
|
From common.Address `json:"from,omitempty"` |
||||||
|
Gas hexutil.Uint64 `json:"gas,omitempty"` |
||||||
|
Init hexutil.Bytes `json:"init,omitempty"` |
||||||
|
Input hexutil.Bytes `json:"input,omitempty"` |
||||||
|
RefundAddress common.Address `json:"refundAddress,omitempty"` |
||||||
|
To common.Address `json:"to,omitempty"` |
||||||
|
Value hexutil.Big `json:"value,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallTraceResult struct { |
||||||
|
Address common.Address `json:"address,omitempty"` |
||||||
|
Code hexutil.Bytes `json:"code,omitempty"` |
||||||
|
GasUsed hexutil.Uint64 `json:"gasUsed,omitempty"` |
||||||
|
Output hexutil.Bytes `json:"output,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// flatCallTracerTest defines a single test to check the call tracer against.
|
||||||
|
type flatCallTracerTest struct { |
||||||
|
Genesis core.Genesis `json:"genesis"` |
||||||
|
Context callContext `json:"context"` |
||||||
|
Input string `json:"input"` |
||||||
|
TracerConfig json.RawMessage `json:"tracerConfig"` |
||||||
|
Result []flatCallTrace `json:"result"` |
||||||
|
} |
||||||
|
|
||||||
|
func flatCallTracerTestRunner(tracerName string, filename string, dirPath string, t testing.TB) error { |
||||||
|
// Call tracer test found, read if from disk
|
||||||
|
blob, err := os.ReadFile(filepath.Join("testdata", dirPath, filename)) |
||||||
|
if err != nil { |
||||||
|
return fmt.Errorf("failed to read testcase: %v", err) |
||||||
|
} |
||||||
|
test := new(flatCallTracerTest) |
||||||
|
if err := json.Unmarshal(blob, test); err != nil { |
||||||
|
return fmt.Errorf("failed to parse testcase: %v", err) |
||||||
|
} |
||||||
|
// Configure a blockchain with the given prestate
|
||||||
|
tx := new(types.Transaction) |
||||||
|
if err := rlp.DecodeBytes(common.FromHex(test.Input), tx); err != nil { |
||||||
|
return fmt.Errorf("failed to parse testcase input: %v", err) |
||||||
|
} |
||||||
|
signer := types.MakeSigner(test.Genesis.Config, new(big.Int).SetUint64(uint64(test.Context.Number))) |
||||||
|
origin, _ := signer.Sender(tx) |
||||||
|
txContext := vm.TxContext{ |
||||||
|
Origin: origin, |
||||||
|
GasPrice: tx.GasPrice(), |
||||||
|
} |
||||||
|
context := vm.BlockContext{ |
||||||
|
CanTransfer: core.CanTransfer, |
||||||
|
Transfer: core.Transfer, |
||||||
|
Coinbase: test.Context.Miner, |
||||||
|
BlockNumber: new(big.Int).SetUint64(uint64(test.Context.Number)), |
||||||
|
Time: uint64(test.Context.Time), |
||||||
|
Difficulty: (*big.Int)(test.Context.Difficulty), |
||||||
|
GasLimit: uint64(test.Context.GasLimit), |
||||||
|
} |
||||||
|
_, statedb := tests.MakePreState(rawdb.NewMemoryDatabase(), test.Genesis.Alloc, false) |
||||||
|
|
||||||
|
// Create the tracer, the EVM environment and run it
|
||||||
|
tracer, err := tracers.DefaultDirectory.New(tracerName, new(tracers.Context), test.TracerConfig) |
||||||
|
if err != nil { |
||||||
|
return fmt.Errorf("failed to create call tracer: %v", err) |
||||||
|
} |
||||||
|
evm := vm.NewEVM(context, txContext, statedb, test.Genesis.Config, vm.Config{Debug: true, Tracer: tracer}) |
||||||
|
|
||||||
|
msg, err := tx.AsMessage(signer, nil) |
||||||
|
if err != nil { |
||||||
|
return fmt.Errorf("failed to prepare transaction for tracing: %v", err) |
||||||
|
} |
||||||
|
st := core.NewStateTransition(evm, msg, new(core.GasPool).AddGas(tx.Gas())) |
||||||
|
|
||||||
|
if _, err = st.TransitionDb(); err != nil { |
||||||
|
return fmt.Errorf("failed to execute transaction: %v", err) |
||||||
|
} |
||||||
|
|
||||||
|
// Retrieve the trace result and compare against the etalon
|
||||||
|
res, err := tracer.GetResult() |
||||||
|
if err != nil { |
||||||
|
return fmt.Errorf("failed to retrieve trace result: %v", err) |
||||||
|
} |
||||||
|
ret := new([]flatCallTrace) |
||||||
|
if err := json.Unmarshal(res, ret); err != nil { |
||||||
|
return fmt.Errorf("failed to unmarshal trace result: %v", err) |
||||||
|
} |
||||||
|
if !jsonEqualFlat(ret, test.Result) { |
||||||
|
t.Logf("tracer name: %s", tracerName) |
||||||
|
|
||||||
|
// uncomment this for easier debugging
|
||||||
|
// have, _ := json.MarshalIndent(ret, "", " ")
|
||||||
|
// want, _ := json.MarshalIndent(test.Result, "", " ")
|
||||||
|
// t.Logf("trace mismatch: \nhave %+v\nwant %+v", string(have), string(want))
|
||||||
|
|
||||||
|
// uncomment this for harder debugging <3 meowsbits
|
||||||
|
// lines := deep.Equal(ret, test.Result)
|
||||||
|
// for _, l := range lines {
|
||||||
|
// t.Logf("%s", l)
|
||||||
|
// t.FailNow()
|
||||||
|
// }
|
||||||
|
|
||||||
|
t.Fatalf("trace mismatch: \nhave %+v\nwant %+v", ret, test.Result) |
||||||
|
} |
||||||
|
return nil |
||||||
|
} |
||||||
|
|
||||||
|
// Iterates over all the input-output datasets in the tracer parity test harness and
|
||||||
|
// runs the Native tracer against them.
|
||||||
|
func TestFlatCallTracerNative(t *testing.T) { |
||||||
|
testFlatCallTracer("flatCallTracer", "call_tracer_flat", t) |
||||||
|
} |
||||||
|
|
||||||
|
func testFlatCallTracer(tracerName string, dirPath string, t *testing.T) { |
||||||
|
files, err := os.ReadDir(filepath.Join("testdata", dirPath)) |
||||||
|
if err != nil { |
||||||
|
t.Fatalf("failed to retrieve tracer test suite: %v", err) |
||||||
|
} |
||||||
|
for _, file := range files { |
||||||
|
if !strings.HasSuffix(file.Name(), ".json") { |
||||||
|
continue |
||||||
|
} |
||||||
|
file := file // capture range variable
|
||||||
|
t.Run(camel(strings.TrimSuffix(file.Name(), ".json")), func(t *testing.T) { |
||||||
|
t.Parallel() |
||||||
|
|
||||||
|
err := flatCallTracerTestRunner(tracerName, file.Name(), dirPath, t) |
||||||
|
if err != nil { |
||||||
|
t.Fatal(err) |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// jsonEqual is similar to reflect.DeepEqual, but does a 'bounce' via json prior to
|
||||||
|
// comparison
|
||||||
|
func jsonEqualFlat(x, y interface{}) bool { |
||||||
|
xTrace := new([]flatCallTrace) |
||||||
|
yTrace := new([]flatCallTrace) |
||||||
|
if xj, err := json.Marshal(x); err == nil { |
||||||
|
json.Unmarshal(xj, xTrace) |
||||||
|
} else { |
||||||
|
return false |
||||||
|
} |
||||||
|
if yj, err := json.Marshal(y); err == nil { |
||||||
|
json.Unmarshal(yj, yTrace) |
||||||
|
} else { |
||||||
|
return false |
||||||
|
} |
||||||
|
return reflect.DeepEqual(xTrace, yTrace) |
||||||
|
} |
||||||
|
|
||||||
|
func BenchmarkFlatCallTracer(b *testing.B) { |
||||||
|
files, err := filepath.Glob("testdata/call_tracer_flat/*.json") |
||||||
|
if err != nil { |
||||||
|
b.Fatalf("failed to read testdata: %v", err) |
||||||
|
} |
||||||
|
|
||||||
|
for _, file := range files { |
||||||
|
filename := strings.TrimPrefix(file, "testdata/call_tracer_flat/") |
||||||
|
b.Run(camel(strings.TrimSuffix(filename, ".json")), func(b *testing.B) { |
||||||
|
for n := 0; n < b.N; n++ { |
||||||
|
err := flatCallTracerTestRunner("flatCallTracer", filename, "call_tracer_flat", b) |
||||||
|
if err != nil { |
||||||
|
b.Fatal(err) |
||||||
|
} |
||||||
|
} |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "50486697699375", |
||||||
|
"extraData": "0xd783010406844765746887676f312e362e32856c696e7578", |
||||||
|
"gasLimit": "4788482", |
||||||
|
"hash": "0xf6bbc5bbe34d5c93fd5b4712cd498d1026b8b0f586efefe7fe30231ed6b8a1a5", |
||||||
|
"miner": "0xbcdfc35b86bedf72f0cda046a3c16829a2ef41d1", |
||||||
|
"mixHash": "0xabca93555584c0463ee5c212251dd002bb3a93a157e06614276f93de53d4fdb8", |
||||||
|
"nonce": "0xa64136fcb9c2d4ca", |
||||||
|
"number": "1719576", |
||||||
|
"stateRoot": "0xab5eec2177a92d633e282936af66c46e24cfa8f2fdc2b8155f33885f483d06f3", |
||||||
|
"timestamp": "1466150166", |
||||||
|
"totalDifficulty": "28295412423546970038", |
||||||
|
"alloc": { |
||||||
|
"0xf8bda96b67036ee48107f2a0695ea673479dda56": { |
||||||
|
"balance": "0x1529e844f9ecdeec", |
||||||
|
"nonce": "33", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 1, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 3000000, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 1150000, |
||||||
|
"byzantiumBlock": 8772000, |
||||||
|
"constantinopleBlock": 9573000, |
||||||
|
"petersburgBlock": 10500839, |
||||||
|
"istanbulBlock": 10500839 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1719577", |
||||||
|
"difficulty": "50486697732143", |
||||||
|
"timestamp": "1466150178", |
||||||
|
"gasLimit": "4788484", |
||||||
|
"miner": "0x2a65aca4d5fc5b5c859090a6c34d164135398226" |
||||||
|
}, |
||||||
|
"input": "0xf874218504a817c800832318608080a35b620186a05a131560135760016020526000565b600080601f600039601f565b6000f31ba0575fa000a1f06659a7b6d3c7877601519a4997f04293f0dfa0eee6d8cd840c77a04c52ce50719ee2ff7a0c5753f4ee69c0340666f582dbb5148845a354ca726e4a", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"from": "0xf8bda96b67036ee48107f2a0695ea673479dda56", |
||||||
|
"gas": "0x22410c", |
||||||
|
"init": "0x5b620186a05a131560135760016020526000565b600080601f600039601f565b6000f3", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockNumber": 1719577, |
||||||
|
"result": { |
||||||
|
"address": "0xb2e6a2546c45889427757171ab05b8b438525b42", |
||||||
|
"code": "0x", |
||||||
|
"gasUsed": "0x219202" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [], |
||||||
|
"type": "create" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,74 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4671584", |
||||||
|
"extraData": "0xd683010b05846765746886676f312e3133856c696e7578", |
||||||
|
"gasLimit": "9435026", |
||||||
|
"hash": "0x755bd54de4b2f5a7a589a10d69888b4ead48a6311d5d69f2f69ca85ec35fbe0b", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"mixHash": "0x3a44525624571c31344ba57780f7664098fe7cbeafe532bcdee76a23fc474ba0", |
||||||
|
"nonce": "0x6dca647c00c72bbf", |
||||||
|
"number": "1555278", |
||||||
|
"stateRoot": "0x5f56d8323ee384b0c8d1de49d63e150e17283eea813483698362bc0ec9e0242a", |
||||||
|
"timestamp": "1590795319", |
||||||
|
"totalDifficulty": "2242614315030", |
||||||
|
"alloc": { |
||||||
|
"0x0000000000000000000000000000000000000004": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x62436e941792f02a5fb1", |
||||||
|
"nonce": "265356", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555279", |
||||||
|
"difficulty": "4669303", |
||||||
|
"timestamp": "1590795340", |
||||||
|
"gasLimit": "9444238", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf86f83040c8c843b9aca0083019f7880809b60206000600060006013600462030d40f26002556000516000550081a2a086ad228c89ad9664287b12a5602a635a803506904f4ce39795990ac4f945cd57a025b30ea8042d773f6c5b13d7cc1b3979f9f10ee674410b6a2112ce840d0302dc", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x60206000600060006013600462030d40f260025560005160005500" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0xf3bc", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x5f8a7e007172ba80afbff1b15f800eb0b260f224" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 74, |
||||||
|
"transactionHash": "0x5ef60b27ac971c22a7d484e546e50093ca62300c8986d165154e47773764b6a4", |
||||||
|
"blockNumber": 1555279, |
||||||
|
"blockHash": "0xd6c98d1b87dfa92a210d99bad2873adaf0c9e51fe43addc63fd9cca03a5c6f46", |
||||||
|
"time": "209.346µs" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,94 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4671584", |
||||||
|
"extraData": "0xd883010b05846765746888676f312e31342e33856c696e7578", |
||||||
|
"gasLimit": "9425823", |
||||||
|
"hash": "0x27dd7d052dbc8a29cc5b9487e1e41d842e7a643fcaea4964caa22b834964acaf", |
||||||
|
"miner": "0x73f26d124436b0791169d63a3af29c2ae47765a3", |
||||||
|
"mixHash": "0xb4a050624f5d147fdf02857cbfd55da3ddc1451743acc5c163861584589c3034", |
||||||
|
"nonce": "0x3c255875b17e0573", |
||||||
|
"number": "1555277", |
||||||
|
"stateRoot": "0x6290d79215a2eebc25d5e456b35876c6d78ffc1ea47bdd70e375ebb3cf325620", |
||||||
|
"timestamp": "1590795308", |
||||||
|
"totalDifficulty": "2242609643446", |
||||||
|
"alloc": { |
||||||
|
"0x0000000000000000000000000000000000000001": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x624329308610ab365fb1", |
||||||
|
"nonce": "265194", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555278", |
||||||
|
"difficulty": "4671584", |
||||||
|
"timestamp": "1590795319", |
||||||
|
"gasLimit": "9435026", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf8ee83040bea843b9aca008301a7588080b8997f18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c600052601c6020527f73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f6040527feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549606052602060806080600060006001610bb7f260025560a060020a6080510660005560005432146001550081a1a05b9a162d84bfe84faa7c176e21c26c0083645d4dd0d566547b7be2c2da0b4259a05b37ff12a4c27634cb0da6008d9b69726d415ff4694f9bc38c7806eb1fb60ae9", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x7f18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c600052601c6020527f73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75f6040527feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549606052602060806080600060006001610bb7f260025560a060020a60805106600055600054321460015500" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0xf3e9", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x568c19ecb14b87e4aec29b4d2d700a3ad3fd0613" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 141, |
||||||
|
"transactionHash": "0x1592cbda0d928b8d18eed98857942b91ade32d088e55b8bf63418917cb0231f1", |
||||||
|
"blockNumber": 1555278, |
||||||
|
"blockHash": "0x755bd54de4b2f5a7a589a10d69888b4ead48a6311d5d69f2f69ca85ec35fbe0b", |
||||||
|
"time": "300.9µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0x568c19ecb14b87e4aec29b4d2d700a3ad3fd0613", |
||||||
|
"to": "0x0000000000000000000000000000000000000001", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xbb7", |
||||||
|
"input": "0x18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549", |
||||||
|
"callType": "callcode" |
||||||
|
}, |
||||||
|
"error": "out of gas", |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 141, |
||||||
|
"transactionHash": "0x1592cbda0d928b8d18eed98857942b91ade32d088e55b8bf63418917cb0231f1", |
||||||
|
"blockNumber": 1555278, |
||||||
|
"blockHash": "0x755bd54de4b2f5a7a589a10d69888b4ead48a6311d5d69f2f69ca85ec35fbe0b" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,90 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4683014", |
||||||
|
"extraData": "0x537465762d63676574682d76312e31312e34", |
||||||
|
"gasLimit": "9435044", |
||||||
|
"hash": "0x3452ca5005cb73cd60dfa488a7b124251168e564491f80eb66765e79d78cfd95", |
||||||
|
"miner": "0x415aa6292d1db797a467b22139704956c030e62f", |
||||||
|
"mixHash": "0x6037612618507ae70c74a72bc2580253662971db959cfbc06d3f8527d4d01575", |
||||||
|
"nonce": "0x314fc90dee5e39a2", |
||||||
|
"number": "1555274", |
||||||
|
"stateRoot": "0x795751f3f96a5de1fd3944ddd78cbfe4ef10491e1086be47609869a30929d0e5", |
||||||
|
"timestamp": "1590795228", |
||||||
|
"totalDifficulty": "2242595605834", |
||||||
|
"alloc": { |
||||||
|
"0x0000000000000000000000000000000000000009": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x6242e3ccf48e66425fb1", |
||||||
|
"nonce": "264981", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555275", |
||||||
|
"difficulty": "4683014", |
||||||
|
"timestamp": "1590795244", |
||||||
|
"gasLimit": "9444256", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf87a83040b15843b9aca008301a0348080a636600060003760406103e8366000600060095af26001556103e851600255610408516003550081a1a0dd883fbbb489b640dadc8c1bf151767155228d0a1321f687f070f35f14374b05a02dd0ccb16a8de39bc8ee61381bbbbb54f0ab18422afd7b03c6163da1f5023934", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x36600060003760406103e8366000600060095af26001556103e8516002556104085160035500" |
||||||
|
}, |
||||||
|
"error": "out of gas", |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 117, |
||||||
|
"transactionHash": "0x7fe4dec901e1a62c1a1d96b8267bb9ff9dc1f75def43aa45b998743455eff8f9", |
||||||
|
"blockNumber": 1555275, |
||||||
|
"blockHash": "0x80945caaff2fc67253cbb0217d2e5a307afde943929e97d8b36e58b88cbb02fd", |
||||||
|
"time": "332.877µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0x8832ef498070145c3a5b30f47fbca71fd7b1de9f", |
||||||
|
"to": "0x0000000000000000000000000000000000000009", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xc897", |
||||||
|
"input": "0x", |
||||||
|
"callType": "callcode" |
||||||
|
}, |
||||||
|
"error": "invalid input length", |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 117, |
||||||
|
"transactionHash": "0x7fe4dec901e1a62c1a1d96b8267bb9ff9dc1f75def43aa45b998743455eff8f9", |
||||||
|
"blockNumber": 1555275, |
||||||
|
"blockHash": "0x80945caaff2fc67253cbb0217d2e5a307afde943929e97d8b36e58b88cbb02fd" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,67 @@ |
|||||||
|
{ |
||||||
|
"context": { |
||||||
|
"difficulty": "3755480783", |
||||||
|
"gasLimit": "5401723", |
||||||
|
"miner": "0xd049bfd667cb46aa3ef5df0da3e57db3be39e511", |
||||||
|
"number": "2294702", |
||||||
|
"timestamp": "1513676146" |
||||||
|
}, |
||||||
|
"genesis": { |
||||||
|
"alloc": { |
||||||
|
"0x13e4acefe6a6700604929946e70e6443e4e73447": { |
||||||
|
"balance": "0xcf3e0938579f000", |
||||||
|
"code": "0x", |
||||||
|
"nonce": "9", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x7dc9c9730689ff0b0fd506c67db815f12d90a448": { |
||||||
|
"balance": "0x0", |
||||||
|
"code": "0x", |
||||||
|
"nonce": "0", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"byzantiumBlock": 1700000, |
||||||
|
"chainId": 3, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 10, |
||||||
|
"eip158Block": 10, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0 |
||||||
|
}, |
||||||
|
"difficulty": "3757315409", |
||||||
|
"extraData": "0x566961425443", |
||||||
|
"gasLimit": "5406414", |
||||||
|
"hash": "0xae107f592eebdd9ff8d6ba00363676096e6afb0e1007a7d3d0af88173077378d", |
||||||
|
"miner": "0xd049bfd667cb46aa3ef5df0da3e57db3be39e511", |
||||||
|
"mixHash": "0xc927aa05a38bc3de864e95c33b3ae559d3f39c4ccd51cef6f113f9c50ba0caf1", |
||||||
|
"nonce": "0x93363bbd2c95f410", |
||||||
|
"number": "2294701", |
||||||
|
"stateRoot": "0x6b6737d5bde8058990483e915866bd1578014baeff57bd5e4ed228a2bfad635c", |
||||||
|
"timestamp": "1513676127", |
||||||
|
"totalDifficulty": "7160808139332585" |
||||||
|
}, |
||||||
|
"input": "0xf907ef098504e3b29200830897be8080b9079c606060405260405160208061077c83398101604052808051906020019091905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555050610653806101296000396000f300606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e4382a146100855780631c02708d146100ae5780632e1a7d4d146100c35780635114cb52146100e6578063a37dda2c146100fe578063ae200e7914610153578063b5769f70146101a8575b005b341561009057600080fd5b6100986101d1565b6040518082815260200191505060405180910390f35b34156100b957600080fd5b6100c16101d7565b005b34156100ce57600080fd5b6100e460048080359060200190919050506102eb565b005b6100fc6004808035906020019091905050610513565b005b341561010957600080fd5b6101116105d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015e57600080fd5b6101666105fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b357600080fd5b6101bb610621565b6040518082815260200191505060405180910390f35b60025481565b60011515600460009054906101000a900460ff1615151415156101f957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102a15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156102ac57600080fd5b6000600460006101000a81548160ff0219169083151502179055506003543073ffffffffffffffffffffffffffffffffffffffff163103600281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103935750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561039e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561048357600060025411801561040757506002548111155b151561041257600080fd5b80600254036002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561047e57600080fd5b610510565b600060035411801561049757506003548111155b15156104a257600080fd5b8060035403600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561050f57600080fd5b5b50565b60011515600460009054906101000a900460ff16151514151561053557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561059657506003548160035401115b80156105bd575080600354013073ffffffffffffffffffffffffffffffffffffffff163110155b15156105c857600080fd5b806003540160038190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600354815600a165627a7a72305820c3b849e8440987ce43eae3097b77672a69234d516351368b03fe5b7de03807910029000000000000000000000000c65e620a3a55451316168d57e268f5702ef56a1129a01060f46676a5dff6f407f0f51eb6f37f5c8c54e238c70221e18e65fc29d3ea65a0557b01c50ff4ffaac8ed6e5d31237a4ecbac843ab1bfe8bb0165a0060df7c54f", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"from": "0x13e4acefe6a6700604929946e70e6443e4e73447", |
||||||
|
"gas": "0x5e106", |
||||||
|
"init": "0x606060405260405160208061077c83398101604052808051906020019091905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555050610653806101296000396000f300606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e4382a146100855780631c02708d146100ae5780632e1a7d4d146100c35780635114cb52146100e6578063a37dda2c146100fe578063ae200e7914610153578063b5769f70146101a8575b005b341561009057600080fd5b6100986101d1565b6040518082815260200191505060405180910390f35b34156100b957600080fd5b6100c16101d7565b005b34156100ce57600080fd5b6100e460048080359060200190919050506102eb565b005b6100fc6004808035906020019091905050610513565b005b341561010957600080fd5b6101116105d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015e57600080fd5b6101666105fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b357600080fd5b6101bb610621565b6040518082815260200191505060405180910390f35b60025481565b60011515600460009054906101000a900460ff1615151415156101f957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102a15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156102ac57600080fd5b6000600460006101000a81548160ff0219169083151502179055506003543073ffffffffffffffffffffffffffffffffffffffff163103600281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103935750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561039e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561048357600060025411801561040757506002548111155b151561041257600080fd5b80600254036002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561047e57600080fd5b610510565b600060035411801561049757506003548111155b15156104a257600080fd5b8060035403600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561050f57600080fd5b5b50565b60011515600460009054906101000a900460ff16151514151561053557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561059657506003548160035401115b80156105bd575080600354013073ffffffffffffffffffffffffffffffffffffffff163110155b15156105c857600080fd5b806003540160038190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600354815600a165627a7a72305820c3b849e8440987ce43eae3097b77672a69234d516351368b03fe5b7de03807910029000000000000000000000000c65e620a3a55451316168d57e268f5702ef56a11", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockNumber": 2294702, |
||||||
|
"result": { |
||||||
|
"address": "0x7dc9c9730689ff0b0fd506c67db815f12d90a448", |
||||||
|
"code": "0x606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305e4382a146100855780631c02708d146100ae5780632e1a7d4d146100c35780635114cb52146100e6578063a37dda2c146100fe578063ae200e7914610153578063b5769f70146101a8575b005b341561009057600080fd5b6100986101d1565b6040518082815260200191505060405180910390f35b34156100b957600080fd5b6100c16101d7565b005b34156100ce57600080fd5b6100e460048080359060200190919050506102eb565b005b6100fc6004808035906020019091905050610513565b005b341561010957600080fd5b6101116105d6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015e57600080fd5b6101666105fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b357600080fd5b6101bb610621565b6040518082815260200191505060405180910390f35b60025481565b60011515600460009054906101000a900460ff1615151415156101f957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102a15750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156102ac57600080fd5b6000600460006101000a81548160ff0219169083151502179055506003543073ffffffffffffffffffffffffffffffffffffffff163103600281905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806103935750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561039e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561048357600060025411801561040757506002548111155b151561041257600080fd5b80600254036002819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561047e57600080fd5b610510565b600060035411801561049757506003548111155b15156104a257600080fd5b8060035403600381905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561050f57600080fd5b5b50565b60011515600460009054906101000a900460ff16151514151561053557600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561059657506003548160035401115b80156105bd575080600354013073ffffffffffffffffffffffffffffffffffffffff163110155b15156105c857600080fd5b806003540160038190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600354815600a165627a7a72305820c3b849e8440987ce43eae3097b77672a69234d516351368b03fe5b7de03807910029", |
||||||
|
"gasUsed": "0x897be" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [], |
||||||
|
"type": "create" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,103 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"number": "566098", |
||||||
|
"hash": "0xba134562590a59291892395a29c5088899c2c64d720135dad88f7f076cf55f5f", |
||||||
|
"nonce": "0x4b281be9594e3eb3", |
||||||
|
"mixHash": "0xdb4ec386166d9c0dc9ba147755ecbb87af9f0a22563cbda02c799efa4e29db6e", |
||||||
|
"stateRoot": "0xfc01993ad96a8fb8790a093cea4f505f8db1b0e1143c5f57bb1d173db0baa9e3", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"difficulty": "1926740", |
||||||
|
"totalDifficulty": "482216286599", |
||||||
|
"extraData": "0xd883010906846765746888676f312e31332e35856c696e7578", |
||||||
|
"gasLimit": "19388354", |
||||||
|
"timestamp": "1577558314", |
||||||
|
"alloc": { |
||||||
|
"0x6ab9dd83108698b9ca8d03af3c7eb91c0e54c3fc": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0xcbd5b9b25d1c38c2aad", |
||||||
|
"nonce": "134969", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x91765918420bcb5ad22ee0997abed04056705798": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "1", |
||||||
|
"code": "0x366000803760206000366000736ab9dd83108698b9ca8d03af3c7eb91c0e54c3fc60325a03f41560015760206000f3", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "566099", |
||||||
|
"difficulty": "1927680", |
||||||
|
"timestamp": "1577558317", |
||||||
|
"gasLimit": "19369422", |
||||||
|
"miner": "0x774c398d763161f55b66a646f17edda4addad2ca" |
||||||
|
}, |
||||||
|
"input": "0xf87983020f3985746a52880083015f909491765918420bcb5ad22ee0997abed04056705798888ac7230489e80000884e45375a4741394181a1a04b7260723fd02830754916b3bdf1537b6a851a7ae27c7e9296cfe1fc8275ec08a049d32158988eb717d61b4503b27c7583037c067daba1eb56f4bdfafc1b0045f6", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"gas": "0x10b68", |
||||||
|
"input": "0x4e45375a47413941", |
||||||
|
"to": "0x91765918420bcb5ad22ee0997abed04056705798", |
||||||
|
"value": "0x8ac7230489e80000" |
||||||
|
}, |
||||||
|
"blockHash": "0xb05cc5c8f11df2b5d53ced342ee79e2805785f04c2f40add4539f27bd349f74e", |
||||||
|
"blockNumber": 566099, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x5721", |
||||||
|
"output": "0x4e45375a47413941000000000000000000000000000000000000000000000000" |
||||||
|
}, |
||||||
|
"subtraces": 1, |
||||||
|
"traceAddress": [], |
||||||
|
"transactionHash": "0x6e26dffe2f66186f03a2c36a16a4cd9724d07622c83746f1e35f988515713d4b", |
||||||
|
"transactionPosition": 10, |
||||||
|
"type": "call" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "delegatecall", |
||||||
|
"from": "0x91765918420bcb5ad22ee0997abed04056705798", |
||||||
|
"gas": "0x10463", |
||||||
|
"input": "0x4e45375a47413941", |
||||||
|
"to": "0x6ab9dd83108698b9ca8d03af3c7eb91c0e54c3fc", |
||||||
|
"value": "0x8ac7230489e80000" |
||||||
|
}, |
||||||
|
"blockHash": "0xb05cc5c8f11df2b5d53ced342ee79e2805785f04c2f40add4539f27bd349f74e", |
||||||
|
"blockNumber": 566099, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x0", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"transactionHash": "0x6e26dffe2f66186f03a2c36a16a4cd9724d07622c83746f1e35f988515713d4b", |
||||||
|
"transactionPosition": 10, |
||||||
|
"type": "call" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,95 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4683014", |
||||||
|
"extraData": "0x537465762d63676574682d76312e31312e34", |
||||||
|
"gasLimit": "9435044", |
||||||
|
"hash": "0x3452ca5005cb73cd60dfa488a7b124251168e564491f80eb66765e79d78cfd95", |
||||||
|
"miner": "0x415aa6292d1db797a467b22139704956c030e62f", |
||||||
|
"mixHash": "0x6037612618507ae70c74a72bc2580253662971db959cfbc06d3f8527d4d01575", |
||||||
|
"nonce": "0x314fc90dee5e39a2", |
||||||
|
"number": "1555274", |
||||||
|
"stateRoot": "0x795751f3f96a5de1fd3944ddd78cbfe4ef10491e1086be47609869a30929d0e5", |
||||||
|
"timestamp": "1590795228", |
||||||
|
"totalDifficulty": "2242595605834", |
||||||
|
"alloc": { |
||||||
|
"0x0000000000000000000000000000000000000001": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x6242e3ccf48e66425fb1", |
||||||
|
"nonce": "264882", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555275", |
||||||
|
"difficulty": "4683014", |
||||||
|
"timestamp": "1590795244", |
||||||
|
"gasLimit": "9444256", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf9011583040ab2843b9aca008301a9c88080b8c0601b565b6000555b005b630badf00d6003565b63c001f00d6003565b7319e7e376e7c213b7e7e7e46cc70a5dd086daff2a7f22ae6da6b482f9b1b19b0b897c3fd43884180a1c5ee361e1107a1bc635649dda600052601b603f537f16433dce375ce6dc8151d3f0a22728bc4a1d9fd6ed39dfd18b4609331937367f6040527f306964c0cf5d74f04129fdc60b54d35b596dde1bf89ad92cb4123318f4c0e40060605260206080607f60006000600161fffff2156007576080511460125760095681a1a07682fc43dbe1fb13c6474f5e70e121c826dd996168d8bb1d8ca7a63470127b46a00a25b308ba417b7770899e8f98a3f0c14aa9bf7db0edacfe4e78d00dbbd3c31e", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x601b565b6000555b005b630badf00d6003565b63c001f00d6003565b7319e7e376e7c213b7e7e7e46cc70a5dd086daff2a7f22ae6da6b482f9b1b19b0b897c3fd43884180a1c5ee361e1107a1bc635649dda600052601b603f537f16433dce375ce6dc8151d3f0a22728bc4a1d9fd6ed39dfd18b4609331937367f6040527f306964c0cf5d74f04129fdc60b54d35b596dde1bf89ad92cb4123318f4c0e40060605260206080607f60006000600161fffff21560075760805114601257600956" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x137e5", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x1a05d76017ca02010533a470e05e8925a0380d8f" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 18, |
||||||
|
"transactionHash": "0xc1c42a325856d513523aec464811923b2e2926f54015c7ba37877064cf889803", |
||||||
|
"blockNumber": 1555275, |
||||||
|
"blockHash": "0x80945caaff2fc67253cbb0217d2e5a307afde943929e97d8b36e58b88cbb02fd", |
||||||
|
"time": "453.925µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0x1a05d76017ca02010533a470e05e8925a0380d8f", |
||||||
|
"to": "0x0000000000000000000000000000000000000001", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xc8c6", |
||||||
|
"input": "0x22ae6da6b482f9b1b19b0b897c3fd43884180a1c5ee361e1107a1bc635649dda000000000000000000000000000000000000000000000000000000000000001b16433dce375ce6dc8151d3f0a22728bc4a1d9fd6ed39dfd18b4609331937367f306964c0cf5d74f04129fdc60b54d35b596dde1bf89ad92cb4123318f4c0e4", |
||||||
|
"callType": "callcode" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0xbb8", |
||||||
|
"output": "0x00000000000000000000000019e7e376e7c213b7e7e7e46cc70a5dd086daff2a" |
||||||
|
}, |
||||||
|
"traceAddress": [0], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 18, |
||||||
|
"transactionHash": "0xc1c42a325856d513523aec464811923b2e2926f54015c7ba37877064cf889803", |
||||||
|
"blockNumber": 1555275, |
||||||
|
"blockHash": "0x80945caaff2fc67253cbb0217d2e5a307afde943929e97d8b36e58b88cbb02fd" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,72 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "117067574", |
||||||
|
"extraData": "0xd783010502846765746887676f312e372e33856c696e7578", |
||||||
|
"gasLimit": "4712380", |
||||||
|
"hash": "0xe05db05eeb3f288041ecb10a787df121c0ed69499355716e17c307de313a4486", |
||||||
|
"miner": "0x0c062b329265c965deef1eede55183b3acb8f611", |
||||||
|
"mixHash": "0xb669ae39118a53d2c65fd3b1e1d3850dd3f8c6842030698ed846a2762d68b61d", |
||||||
|
"nonce": "0x2b469722b8e28c45", |
||||||
|
"number": "24973", |
||||||
|
"stateRoot": "0x532a5c3f75453a696428db078e32ae283c85cb97e4d8560dbdf022adac6df369", |
||||||
|
"timestamp": "1479891145", |
||||||
|
"totalDifficulty": "1892250259406", |
||||||
|
"alloc": { |
||||||
|
"0x6c06b16512b332e6cd8293a2974872674716ce18": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "1", |
||||||
|
"code": "0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900480632e1a7d4d146036575b6000565b34600057604e60048080359060200190919050506050565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051809050600060405180830381858888f19350505050505b5056", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x66fdfd05e46126a07465ad24e40cc0597bc1ef31": { |
||||||
|
"balance": "0x229ebbb36c3e0f20", |
||||||
|
"nonce": "3", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 3, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 10, |
||||||
|
"eip158Block": 10, |
||||||
|
"byzantiumBlock": 1700000, |
||||||
|
"constantinopleBlock": 4230000, |
||||||
|
"petersburgBlock": 4939394, |
||||||
|
"istanbulBlock": 6485846, |
||||||
|
"muirGlacierBlock": 7117117, |
||||||
|
"ethash": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "24974", |
||||||
|
"difficulty": "117067574", |
||||||
|
"timestamp": "1479891162", |
||||||
|
"gasLimit": "4712388", |
||||||
|
"miner": "0xc822ef32e6d26e170b70cf761e204c1806265914" |
||||||
|
}, |
||||||
|
"input": "0xf889038504a81557008301f97e946c06b16512b332e6cd8293a2974872674716ce1880a42e1a7d4d00000000000000000000000000000000000000000000000014d1120d7b1600002aa0e2a6558040c5d72bc59f2fb62a38993a314c849cd22fb393018d2c5af3112095a01bdb6d7ba32263ccc2ecc880d38c49d9f0c5a72d8b7908e3122b31356d349745", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0x66fdfd05e46126a07465ad24e40cc0597bc1ef31", |
||||||
|
"gas": "0x1a466", |
||||||
|
"input": "0x2e1a7d4d00000000000000000000000000000000000000000000000014d1120d7b160000", |
||||||
|
"to": "0x6c06b16512b332e6cd8293a2974872674716ce18", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockNumber": 24974, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x72de", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [], |
||||||
|
"type": "call" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,94 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "1808543", |
||||||
|
"extraData": "0xd883010906846765746888676f312e31332e35856c696e7578", |
||||||
|
"gasLimit": "4875092", |
||||||
|
"hash": "0x3851fdc18bd5f2314cf0c90439356f9a1fe157d7fb06c20e20b77954da903671", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"mixHash": "0x3d4e702d6058acf94c9547560f05536d45d515bd4f9014564ec41b5b4ff9578b", |
||||||
|
"nonce": "0x1695153e7b16c1e7", |
||||||
|
"number": "555461", |
||||||
|
"stateRoot": "0xba8272acd0dfeb5f04376328e8bfc5b276b177697000c204a060f6f7b629ae32", |
||||||
|
"timestamp": "1577423350", |
||||||
|
"totalDifficulty": "462222992438", |
||||||
|
"alloc": { |
||||||
|
"0xcf5b3467dfa45cdc8e5358a7a1ba4deb02e5faed": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x16c102a3b09c02abdace", |
||||||
|
"nonce": "19049", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "555462", |
||||||
|
"difficulty": "1808543", |
||||||
|
"timestamp": "1577423360", |
||||||
|
"gasLimit": "4873701", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf90451824a6985746a52880083053e908080b903fb60606040525b60405161015b806102a0833901809050604051809103906000f0600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055505b610247806100596000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900480632ef9db1314610044578063e37678761461007157610042565b005b61005b6004803590602001803590602001506100ad565b6040518082815260200191505060405180910390f35b61008860048035906020018035906020015061008a565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000600060008484604051808381526020018281526020019250505060405180910390209150610120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f6164640000000000000000000000000000000000000000000000000000000000846101e3565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681868660405180807f616464000000000000000000000000000000000000000000000000000000000081526020015060200184815260200183815260200182815260200193505050506000604051808303816000866161da5a03f191505050600060005060008281526020019081526020016000206000505492506101db565b505092915050565b60004340848484604051808581526020018473ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200194505050505060405180910390209050610240565b9392505050566060604052610148806100136000396000f30060606040526000357c010000000000000000000000000000000000000000000000000000000090048063471407e614610044578063e37678761461007757610042565b005b6100616004803590602001803590602001803590602001506100b3565b6040518082815260200191505060405180910390f35b61008e600480359060200180359060200150610090565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000818301905080506100c684826100d5565b8090506100ce565b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff16828260405180807f7265676973746572496e74000000000000000000000000000000000000000000815260200150602001838152602001828152602001925050506000604051808303816000866161da5a03f1915050505b50505681a1a0b9a85df655d3b6aa081e52d8c3db52c50c2bf97d9d993a980113b2262649c125a00d51e63880ca8ef4705914a71e7ff906834a9cdcff0cbd063ff4e43a5905890d", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x3951c", |
||||||
|
"init": "0x60606040525b60405161015b806102a0833901809050604051809103906000f0600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055505b610247806100596000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900480632ef9db1314610044578063e37678761461007157610042565b005b61005b6004803590602001803590602001506100ad565b6040518082815260200191505060405180910390f35b61008860048035906020018035906020015061008a565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000600060008484604051808381526020018281526020019250505060405180910390209150610120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f6164640000000000000000000000000000000000000000000000000000000000846101e3565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681868660405180807f616464000000000000000000000000000000000000000000000000000000000081526020015060200184815260200183815260200182815260200193505050506000604051808303816000866161da5a03f191505050600060005060008281526020019081526020016000206000505492506101db565b505092915050565b60004340848484604051808581526020018473ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200194505050505060405180910390209050610240565b9392505050566060604052610148806100136000396000f30060606040526000357c010000000000000000000000000000000000000000000000000000000090048063471407e614610044578063e37678761461007757610042565b005b6100616004803590602001803590602001803590602001506100b3565b6040518082815260200191505060405180910390f35b61008e600480359060200180359060200150610090565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000818301905080506100c684826100d5565b8090506100ce565b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff16828260405180807f7265676973746572496e74000000000000000000000000000000000000000000815260200150602001838152602001828152602001925050506000604051808303816000866161da5a03f1915050505b505056" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x53e90", |
||||||
|
"code": "0x60606040526000357c0100000000000000000000000000000000000000000000000000000000900480632ef9db1314610044578063e37678761461007157610042565b005b61005b6004803590602001803590602001506100ad565b6040518082815260200191505060405180910390f35b61008860048035906020018035906020015061008a565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000600060008484604051808381526020018281526020019250505060405180910390209150610120600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f6164640000000000000000000000000000000000000000000000000000000000846101e3565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681868660405180807f616464000000000000000000000000000000000000000000000000000000000081526020015060200184815260200183815260200182815260200193505050506000604051808303816000866161da5a03f191505050600060005060008281526020019081526020016000206000505492506101db565b505092915050565b60004340848484604051808581526020018473ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183815260200182815260200194505050505060405180910390209050610240565b939250505056", |
||||||
|
"address": "0x9db7a1baf185a865ffee3824946ccd8958191e5e" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 23, |
||||||
|
"transactionHash": "0xe267552ce8437a5bc7081385c99f912de5723ad34b958db215dbc41abd5f6c03", |
||||||
|
"blockNumber": 555462, |
||||||
|
"blockHash": "0x38bba9e3965b57205097ea5ec53fc403cf3941bec2e4c933faae244de5ca4ba1", |
||||||
|
"time": "1.147715ms" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x9db7a1baf185a865ffee3824946ccd8958191e5e", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x30b34", |
||||||
|
"init": "0x6060604052610148806100136000396000f30060606040526000357c010000000000000000000000000000000000000000000000000000000090048063471407e614610044578063e37678761461007757610042565b005b6100616004803590602001803590602001803590602001506100b3565b6040518082815260200191505060405180910390f35b61008e600480359060200180359060200150610090565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000818301905080506100c684826100d5565b8090506100ce565b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff16828260405180807f7265676973746572496e74000000000000000000000000000000000000000000815260200150602001838152602001828152602001925050506000604051808303816000866161da5a03f1915050505b505056" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x1009d", |
||||||
|
"code": "0x60606040526000357c010000000000000000000000000000000000000000000000000000000090048063471407e614610044578063e37678761461007757610042565b005b6100616004803590602001803590602001803590602001506100b3565b6040518082815260200191505060405180910390f35b61008e600480359060200180359060200150610090565b005b8060006000506000848152602001908152602001600020600050819055505b5050565b6000818301905080506100c684826100d5565b8090506100ce565b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff16828260405180807f7265676973746572496e74000000000000000000000000000000000000000000815260200150602001838152602001828152602001925050506000604051808303816000866161da5a03f1915050505b505056", |
||||||
|
"address": "0xcf5b3467dfa45cdc8e5358a7a1ba4deb02e5faed" |
||||||
|
}, |
||||||
|
"traceAddress": [0], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 23, |
||||||
|
"transactionHash": "0xe267552ce8437a5bc7081385c99f912de5723ad34b958db215dbc41abd5f6c03", |
||||||
|
"blockNumber": 555462, |
||||||
|
"blockHash": "0x38bba9e3965b57205097ea5ec53fc403cf3941bec2e4c933faae244de5ca4ba1" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,94 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4635413", |
||||||
|
"extraData": "0xd683010b05846765746886676f312e3133856c696e7578", |
||||||
|
"gasLimit": "9289294", |
||||||
|
"hash": "0x359775cf1a2ae2400e26ec68bf33bcfe38b7979c76b7e616f42c4ca7e7605e39", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"mixHash": "0x4b2a0ef121a9c7d732fa0fbd4166a0e1041d2da2b8cb677c61edabf8b7183b64", |
||||||
|
"nonce": "0x2a8a64ad9757be55", |
||||||
|
"number": "1555160", |
||||||
|
"stateRoot": "0x95067c12148e2362fcd4a89df286ff0b1739ef097a40ca42ae7f698af9a9d913", |
||||||
|
"timestamp": "1590793999", |
||||||
|
"totalDifficulty": "2242063623471", |
||||||
|
"alloc": { |
||||||
|
"0x8785e369f0ef0a4e5c5a5f929680427dc75273a5": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x623145b285b3f551fa3f", |
||||||
|
"nonce": "260617", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555161", |
||||||
|
"difficulty": "4633150", |
||||||
|
"timestamp": "1590794020", |
||||||
|
"gasLimit": "9298364", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf85e8303fa09843b9aca0083019ed880808a6000600060006000f50081a2a0485ea410e210740eef8e6f6de11c530f46f8da80eecb02afbb6c5f61749ac015a068d72f1b0f1d3cb4e214d5def79b49a73e6ee91db2df83499a54c656c144600f", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf6c", |
||||||
|
"init": "0x6000600060006000f500" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x14c78", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x2e8eded627eead210cb6143eb39ef7a3e44e4f00" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 31, |
||||||
|
"transactionHash": "0x1257b698c5833c54ce786734087002b097275abc3877af082b5c2a538e894a41", |
||||||
|
"blockNumber": 1555161, |
||||||
|
"blockHash": "0xb0793dd508dd106a19794b8ce1dfc0ff8d98c76aab61bf32a11799854149a171", |
||||||
|
"time": "889.048µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x2e8eded627eead210cb6143eb39ef7a3e44e4f00", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x5117", |
||||||
|
"init": "0x" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x0", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x8785e369f0ef0a4e5c5a5f929680427dc75273a5" |
||||||
|
}, |
||||||
|
"traceAddress": [0], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 31, |
||||||
|
"transactionHash": "0x1257b698c5833c54ce786734087002b097275abc3877af082b5c2a538e894a41", |
||||||
|
"blockNumber": 1555161, |
||||||
|
"blockHash": "0xb0793dd508dd106a19794b8ce1dfc0ff8d98c76aab61bf32a11799854149a171" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,90 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4639933", |
||||||
|
"extraData": "0xd883010b05846765746888676f312e31342e33856c696e7578", |
||||||
|
"gasLimit": "9280188", |
||||||
|
"hash": "0x9a5f3a98eb1c60f6e3f450658a9cea190157e7021d04f927b752ad6482cf9194", |
||||||
|
"miner": "0x73f26d124436b0791169d63a3af29c2ae47765a3", |
||||||
|
"mixHash": "0x6b6f8fcaa54b8565c4c1ae7cf0a020e938a53007f4561e758b17bc05c9044d78", |
||||||
|
"nonce": "0x773aba50dc51b462", |
||||||
|
"number": "1555169", |
||||||
|
"stateRoot": "0xc4b9703de3e59ff795baae2c3afa010cf039c37244a7a6af7f3f491a10601348", |
||||||
|
"timestamp": "1590794111", |
||||||
|
"totalDifficulty": "2242105342155", |
||||||
|
"alloc": { |
||||||
|
"0x5ac5599fc9df172c89ee7ec55ad9104ccbfed40d": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x62325b40cbbd0915c4b9", |
||||||
|
"nonce": "260875", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555170", |
||||||
|
"difficulty": "4642198", |
||||||
|
"timestamp": "1590794112", |
||||||
|
"gasLimit": "9289249", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf8658303fb0b843b9aca0083019ee48080915a600055600060006000f0505a6001550081a2a01a7deb3a16d967b766459ef486b00656c6581e5ad58968184a33701e27e0eb8aa07162ccdfe2018d64360a605310a62c399dd586c7282dd42a88c54f02f51d451f", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x5a600055600060006000f0505a60015500" |
||||||
|
}, |
||||||
|
"error": "out of gas", |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 63, |
||||||
|
"transactionHash": "0x60e881fae3884657b5430925c5d0053535b45cce0b8188f2a6be1feee8bcc650", |
||||||
|
"blockNumber": 1555170, |
||||||
|
"blockHash": "0xea46fbf941d51bf1e4180fbf26d22fda3896f49c7f371d109c226de95dd7b02e", |
||||||
|
"time": "952.736µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x9c5cfe45b15eaff4ad617af4250189e26024a4f8", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x3cb", |
||||||
|
"init": "0x" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x0", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x5ac5599fc9df172c89ee7ec55ad9104ccbfed40d" |
||||||
|
}, |
||||||
|
"traceAddress": [0], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 63, |
||||||
|
"transactionHash": "0x60e881fae3884657b5430925c5d0053535b45cce0b8188f2a6be1feee8bcc650", |
||||||
|
"blockNumber": 1555170, |
||||||
|
"blockHash": "0xea46fbf941d51bf1e4180fbf26d22fda3896f49c7f371d109c226de95dd7b02e" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "3244991", |
||||||
|
"extraData": "0x", |
||||||
|
"gasLimit": "7968787", |
||||||
|
"hash": "0x62bbf18c203068a8793af8d8360d054f95a63bc62b87ade550861ed490af3f15", |
||||||
|
"miner": "0x9f2659ffe7b3b467e46dcec3623392cf51635079", |
||||||
|
"mixHash": "0xc8dec711fd1e03972b6a279a09dc0cd29c5171b60f42c4ce37c7c51ff445f776", |
||||||
|
"nonce": "0x40b1bbcc25ddb804", |
||||||
|
"number": "839246", |
||||||
|
"stateRoot": "0x4bb3b02ec70b837651233957fb61a6ea3fc6a4244c1f55df7a713c154829ec0a", |
||||||
|
"timestamp": "1581179375", |
||||||
|
"totalDifficulty": "1023985623933", |
||||||
|
"alloc": { |
||||||
|
"0x76554b33410b6d90b7dc889bfed0451ad195f27e": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "1", |
||||||
|
"code": "0x6080604052348015600f57600080fd5b506004361060505760003560e01c8063391521f414605557806355313dea14605d5780636d3d14161460655780638da5cb5b14606d578063b9d1e5aa1460b5575b600080fd5b605b60bd565b005b606360c8565b005b606b60ca565b005b607360cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60bb60f4565b005b6020610123600af050565b005b600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565bfefea165627a7a723058202094d5aa5dbbd493e9a2c64c50b62eba4b109b2a12d2bb73a5d0d54982651fc80029", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0xed69ab7145a9bae7152406d062c077c6ecc6ae18": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0xa3b31cbd5168d3c99756660d4b7625d679e12573": { |
||||||
|
"balance": "0x569bc6535d3083fce", |
||||||
|
"nonce": "26", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "839247", |
||||||
|
"difficulty": "3213311", |
||||||
|
"timestamp": "1581179571", |
||||||
|
"gasLimit": "7961006", |
||||||
|
"miner": "0x9f2659ffe7b3b467e46dcec3623392cf51635079" |
||||||
|
}, |
||||||
|
"input": "0xf86a1a8509502f9000830334509476554b33410b6d90b7dc889bfed0451ad195f27e8084391521f481a2a02e4ff0d171a860c8c7de2283978e2f225f9ba3ed4dec446b773c6b2d73ef22dea02a6a517528b491cb71b204f534db11a1c8059035f54d5bae347d1cab536bde2c", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0xa3b31cbd5168d3c99756660d4b7625d679e12573", |
||||||
|
"to": "0x76554b33410b6d90b7dc889bfed0451ad195f27e", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x2e138", |
||||||
|
"input": "0x391521f4", |
||||||
|
"callType": "call" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0xd0b5", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 26, |
||||||
|
"transactionHash": "0xcb1090fa85d2a3da8326b75333e92b3dca89963c895d9c981bfdaa64643135e4", |
||||||
|
"blockNumber": 839247, |
||||||
|
"blockHash": "0xce7ff7d84ca97f0f89d6065e2c12409a795c9f607cdb14aef0713cad5d7e311c", |
||||||
|
"time": "182.267µs" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,111 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "1911202", |
||||||
|
"extraData": "0xd883010906846765746888676f312e31332e35856c696e7578", |
||||||
|
"gasLimit": "7842876", |
||||||
|
"hash": "0x4d7bc82e0d56307094378e1a8fbfa6260986f621de95b5fe68a95248b3ba8efe", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"mixHash": "0xc102ad52677c391edab82cc895ca7a7e9fff3eed4fa966ecf7fb61ec1e84bb6b", |
||||||
|
"nonce": "0x39f5b074e3437f3f", |
||||||
|
"number": "553415", |
||||||
|
"stateRoot": "0x8f89e79109c19fa00e72b400502448540dc4773ad92dddd341dbba20c710a3b5", |
||||||
|
"timestamp": "1577396195", |
||||||
|
"totalDifficulty": "458361299240", |
||||||
|
"alloc": { |
||||||
|
"0x531f76bad925f6a925474996c7d738c1008045f6": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "1", |
||||||
|
"code": "0x6060604052361561008a576000357c01000000000000000000000000000000000000000000000000000000009004806301cb3b20146102bf57806329dcb0cf146102cc57806338af3eed146102ed5780636e66f6e9146103245780637a3a0e841461035b5780637b3e5e7b1461037c578063a035b1fe1461039d578063dc0d3dff146103be5761008a565b6102bd5b60003490506040604051908101604052803381526020018281526020015060066000506006600050805480919060010190908154818355818115116101365760020281600202836000526020600020918201910161013591906100ec565b808211156101315760006000820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160005060009055506001016100ec565b5090565b5b505050815481101561000257906000526020600020906002020160005060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff0219169083021790555060208201518160010160005055905050806002600082828250540192505081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166390b98a11336004600050548404604051837c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750505060405151507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf633826001604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15b50565b005b6102ca6004506104c8565b005b6102d760045061043a565b6040518082815260200191505060405180910390f35b6102f8600450610402565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61032f60045061044c565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610366600450610428565b6040518082815260200191505060405180910390f35b610387600450610431565b6040518082815260200191505060405180910390f35b6103a8600450610443565b6040518082815260200191505060405180910390f35b6103cf600480359060200150610472565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000505481565b60026000505481565b60036000505481565b60046000505481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066000508181548110156100025790600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160005054905082565b6000600360005054421015156107d8576001600050546002600050541015156105cf57600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000600260005054604051809050600060405180830381858888f19350505050507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600050546000604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a161079d565b7fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf66000600b600060405180848152602001838152602001828152602001935050505060405180910390a1600090505b60066000505481101561079c57600660005081815481101561000257906000526020600020906002020160005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000600660005083815481101561000257906000526020600020906002020160005060010160005054604051809050600060405180830381858888f19350505050507fe842aea7a5f1b01049d752008c53c52890b1a6daf660cf39e8eec506112bbdf6600660005082815481101561000257906000526020600020906002020160005060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166006600050838154811015610002579060005260206000209060020201600050600101600050546000604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15b806001019050805061061e565b5b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b5056", |
||||||
|
"storage": { |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000006": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"0xf652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d40": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000005": "0x000000000000000000000000b49180d443dc4ca6028de0031ac09337891fd8ce", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000004": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000" |
||||||
|
} |
||||||
|
}, |
||||||
|
"0xb49180d443dc4ca6028de0031ac09337891fd8ce": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x193e9986e2e3f0c58988", |
||||||
|
"nonce": "2585", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "553416", |
||||||
|
"difficulty": "1909336", |
||||||
|
"timestamp": "1577396224", |
||||||
|
"gasLimit": "7835218", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf870820a1985e8d4a5100083040b2894531f76bad925f6a925474996c7d738c1008045f6880de0b6b3a76400008081a2a08693170f040d9501b831b404d9e40fba040c5aef4b8974aedc20b3844aea7c32a0476861058ff9b8030c58bcba8be320acc855e4694a633c493fb50fbdb9455489", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"to": "0x531f76bad925f6a925474996c7d738c1008045f6", |
||||||
|
"value": "0xde0b6b3a7640000", |
||||||
|
"gas": "0x3b920", |
||||||
|
"input": "0x", |
||||||
|
"callType": "call" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x19c3e", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 5, |
||||||
|
"transactionHash": "0x04d2029a5cbbed30969cdc0a2ca9e9fc6b719e323af0802b52466f07ee0ecada", |
||||||
|
"blockNumber": 553416, |
||||||
|
"blockHash": "0x8df024322173d225a09681d35edeaa528aca60743a11a70f854c158862bf5282", |
||||||
|
"time": "617.42µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "call", |
||||||
|
"action": { |
||||||
|
"from": "0x531f76bad925f6a925474996c7d738c1008045f6", |
||||||
|
"to": "0xb49180d443dc4ca6028de0031ac09337891fd8ce", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0x2164e", |
||||||
|
"input": "0x90b98a11000000000000000000000000877bd459c9b7d8576b44e59e09d076c25946f4430000000000000000000000000000000000000000000000000000000000000001", |
||||||
|
"callType": "call" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x0", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 5, |
||||||
|
"transactionHash": "0x04d2029a5cbbed30969cdc0a2ca9e9fc6b719e323af0802b52466f07ee0ecada", |
||||||
|
"blockNumber": 553416, |
||||||
|
"blockHash": "0x8df024322173d225a09681d35edeaa528aca60743a11a70f854c158862bf5282" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,68 @@ |
|||||||
|
{ |
||||||
|
"context": { |
||||||
|
"difficulty": "3665057456", |
||||||
|
"gasLimit": "5232723", |
||||||
|
"miner": "0xf4d8e706cfb25c0decbbdd4d2e2cc10c66376a3f", |
||||||
|
"number": "2294501", |
||||||
|
"timestamp": "1513673601" |
||||||
|
}, |
||||||
|
"genesis": { |
||||||
|
"alloc": { |
||||||
|
"0x0f6cef2b7fbb504782e35aa82a2207e816a2b7a9": { |
||||||
|
"balance": "0x2a3fc32bcc019283", |
||||||
|
"code": "0x", |
||||||
|
"nonce": "10", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0xabbcd5b340c80b5f1c0545c04c987b87310296ae": { |
||||||
|
"balance": "0x0", |
||||||
|
"code": "0x606060405236156100755763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632d0335ab811461007a578063548db174146100ab5780637f649783146100fc578063b092145e1461014d578063c3f44c0a14610186578063c47cf5de14610203575b600080fd5b341561008557600080fd5b610099600160a060020a0360043516610270565b60405190815260200160405180910390f35b34156100b657600080fd5b6100fa600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061028f95505050505050565b005b341561010757600080fd5b6100fa600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284375094965061029e95505050505050565b005b341561015857600080fd5b610172600160a060020a03600435811690602435166102ad565b604051901515815260200160405180910390f35b341561019157600080fd5b6100fa6004803560ff1690602480359160443591606435600160a060020a0316919060a49060843590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965050509235600160a060020a031692506102cd915050565b005b341561020e57600080fd5b61025460046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061056a95505050505050565b604051600160a060020a03909116815260200160405180910390f35b600160a060020a0381166000908152602081905260409020545b919050565b61029a816000610594565b5b50565b61029a816001610594565b5b50565b600160209081526000928352604080842090915290825290205460ff1681565b60008080600160a060020a038416158061030d5750600160a060020a038085166000908152600160209081526040808320339094168352929052205460ff165b151561031857600080fd5b6103218561056a565b600160a060020a038116600090815260208190526040808220549295507f19000000000000000000000000000000000000000000000000000000000000009230918891908b908b90517fff000000000000000000000000000000000000000000000000000000000000008089168252871660018201526c01000000000000000000000000600160a060020a038088168202600284015286811682026016840152602a8301869052841602604a820152605e810182805190602001908083835b6020831061040057805182525b601f1990920191602091820191016103e0565b6001836020036101000a0380198251168184511617909252505050919091019850604097505050505050505051809103902091506001828a8a8a6040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561049957600080fd5b5050602060405103519050600160a060020a03838116908216146104bc57600080fd5b600160a060020a0380841660009081526020819052604090819020805460010190559087169086905180828051906020019080838360005b8381101561050d5780820151818401525b6020016104f4565b50505050905090810190601f16801561053a5780820380516001836020036101000a031916815260200191505b5091505060006040518083038160008661646e5a03f1915050151561055e57600080fd5b5b505050505050505050565b600060248251101561057e5750600061028a565b600160a060020a0360248301511690505b919050565b60005b825181101561060157600160a060020a033316600090815260016020526040812083918584815181106105c657fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790555b600101610597565b5b5050505600a165627a7a723058200027e8b695e9d2dea9f3629519022a69f3a1d23055ce86406e686ea54f31ee9c0029", |
||||||
|
"nonce": "1", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"byzantiumBlock": 1700000, |
||||||
|
"chainId": 3, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 10, |
||||||
|
"eip158Block": 10, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0 |
||||||
|
}, |
||||||
|
"difficulty": "3672229776", |
||||||
|
"extraData": "0x4554482e45544846414e532e4f52472d4641313738394444", |
||||||
|
"gasLimit": "5227619", |
||||||
|
"hash": "0xa07b3d6c6bf63f5f981016db9f2d1d93033833f2c17e8bf7209e85f1faf08076", |
||||||
|
"miner": "0xbbf5029fd710d227630c8b7d338051b8e76d50b3", |
||||||
|
"mixHash": "0x806e151ce2817be922e93e8d5921fa0f0d0fd213d6b2b9a3fa17458e74a163d0", |
||||||
|
"nonce": "0xbc5d43adc2c30c7d", |
||||||
|
"number": "2294500", |
||||||
|
"stateRoot": "0xca645b335888352ef9d8b1ef083e9019648180b259026572e3139717270de97d", |
||||||
|
"timestamp": "1513673552", |
||||||
|
"totalDifficulty": "7160066586979149" |
||||||
|
}, |
||||||
|
"input": "0xf9018b0a8505d21dba00832dc6c094abbcd5b340c80b5f1c0545c04c987b87310296ae80b9012473b40a5c000000000000000000000000400de2e016bda6577407dfc379faba9899bc73ef0000000000000000000000002cc31912b2b0f3075a87b3640923d45a26cef3ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d79d8e6c7265636f76657279416464726573730000000000000000000000000000000000000000000000000000000000383e3ec32dc0f66d8fe60dbdc2f6815bdf73a988383e3ec32dc0f66d8fe60dbdc2f6815bdf73a988000000000000000000000000000000000000000000000000000000000000000000000000000000001ba0fd659d76a4edbd2a823e324c93f78ad6803b30ff4a9c8bce71ba82798975c70ca06571eecc0b765688ec6c78942c5ee8b585e00988c0141b518287e9be919bc48a", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0x0f6cef2b7fbb504782e35aa82a2207e816a2b7a9", |
||||||
|
"gas": "0x2d55e8", |
||||||
|
"input": "0x73b40a5c000000000000000000000000400de2e016bda6577407dfc379faba9899bc73ef0000000000000000000000002cc31912b2b0f3075a87b3640923d45a26cef3ee000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d79d8e6c7265636f76657279416464726573730000000000000000000000000000000000000000000000000000000000383e3ec32dc0f66d8fe60dbdc2f6815bdf73a988383e3ec32dc0f66d8fe60dbdc2f6815bdf73a98800000000000000000000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
"to": "0xabbcd5b340c80b5f1c0545c04c987b87310296ae", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockNumber": 2294501, |
||||||
|
"error": "execution reverted", |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x719b" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [], |
||||||
|
"type": "call" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,91 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4628640", |
||||||
|
"extraData": "0xd883010b05846765746888676f312e31342e33856c696e7578", |
||||||
|
"gasLimit": "9244120", |
||||||
|
"hash": "0x5a1f551897cc91265225b0453136ad8c7eef1c1c8b06139da4f2e6e710c1f4df", |
||||||
|
"miner": "0x73f26d124436b0791169d63a3af29c2ae47765a3", |
||||||
|
"mixHash": "0xd6735e63f8937fe0c5491e0d5836ec28467363be7ada5a2f979f9d107e2c831e", |
||||||
|
"nonce": "0x7c35e34d2e328d7d", |
||||||
|
"number": "1555145", |
||||||
|
"stateRoot": "0x565873b05f71b98595133e37a52d79c3476ce820c05ebedaddd35541b0e894a3", |
||||||
|
"timestamp": "1590793819", |
||||||
|
"totalDifficulty": "2241994078605", |
||||||
|
"alloc": { |
||||||
|
"0x119f569a45e9d0089d51d7f9529f5ea9bf5785e2": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x622e8fced69d43eb8d97", |
||||||
|
"nonce": "260140", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555146", |
||||||
|
"difficulty": "4630900", |
||||||
|
"timestamp": "1590793820", |
||||||
|
"gasLimit": "9253146", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf8628303f82c843b9aca0083019ecc80808e605a600053600160006001f0ff0081a2a077f539ae2a58746bbfa6370fc423f946870efa32753d697d3729d361a428623aa0384ef9a5650d6630f5c1ddef616bffa5fc72a95a9314361d0918de066aa4475a", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xcf08", |
||||||
|
"init": "0x605a600053600160006001f0ff00" |
||||||
|
}, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x102a1", |
||||||
|
"code": "0x", |
||||||
|
"address": "0x1d99a1a3efa9181f540f9e24fa6e4e08eb7844ca" |
||||||
|
}, |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 1, |
||||||
|
"transactionPosition": 14, |
||||||
|
"transactionHash": "0xdd76f02407e2f8329303ba688e111cae4f7008ad0d14d6e42c5698424ea36d79", |
||||||
|
"blockNumber": 1555146, |
||||||
|
"blockHash": "0xafb4f1dd27b9054c805acb81a88ed04384788cb31d84164c21874935c81e5c7e", |
||||||
|
"time": "187.145µs" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"type": "suicide", |
||||||
|
"action": { |
||||||
|
"address": "0x1d99a1a3efa9181f540f9e24fa6e4e08eb7844ca", |
||||||
|
"refundAddress": "0x0000000000000000000000000000000000000000", |
||||||
|
"balance": "0x0" |
||||||
|
}, |
||||||
|
"result": null, |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 14, |
||||||
|
"transactionHash": "0xdd76f02407e2f8329303ba688e111cae4f7008ad0d14d6e42c5698424ea36d79", |
||||||
|
"blockNumber": 1555146, |
||||||
|
"blockHash": "0xafb4f1dd27b9054c805acb81a88ed04384788cb31d84164c21874935c81e5c7e" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,97 @@ |
|||||||
|
{ |
||||||
|
"context": { |
||||||
|
"difficulty": "3502894804", |
||||||
|
"gasLimit": "4722976", |
||||||
|
"miner": "0x1585936b53834b021f68cc13eeefdec2efc8e724", |
||||||
|
"number": "2289806", |
||||||
|
"timestamp": "1513601314" |
||||||
|
}, |
||||||
|
"genesis": { |
||||||
|
"alloc": { |
||||||
|
"0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5": { |
||||||
|
"balance": "0x0", |
||||||
|
"code": "0x", |
||||||
|
"nonce": "22", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe": { |
||||||
|
"balance": "0x4d87094125a369d9bd5", |
||||||
|
"code": "0x606060405236156100935763ffffffff60e060020a60003504166311ee8382811461009c57806313af4035146100be5780631f5e8f4c146100ee57806324daddc5146101125780634921a91a1461013b57806363e4bff414610157578063764978f91461017f578063893d20e8146101a1578063ba40aaa1146101cd578063cebc9a82146101f4578063e177246e14610216575b61009a5b5b565b005b34156100a457fe5b6100ac61023d565b60408051918252519081900360200190f35b34156100c657fe5b6100da600160a060020a0360043516610244565b604080519115158252519081900360200190f35b34156100f657fe5b6100da610307565b604080519115158252519081900360200190f35b341561011a57fe5b6100da6004351515610318565b604080519115158252519081900360200190f35b6100da6103d6565b604080519115158252519081900360200190f35b6100da600160a060020a0360043516610420565b604080519115158252519081900360200190f35b341561018757fe5b6100ac61046c565b60408051918252519081900360200190f35b34156101a957fe5b6101b1610473565b60408051600160a060020a039092168252519081900360200190f35b34156101d557fe5b6100da600435610483565b604080519115158252519081900360200190f35b34156101fc57fe5b6100ac61050d565b60408051918252519081900360200190f35b341561021e57fe5b6100da600435610514565b604080519115158252519081900360200190f35b6003545b90565b60006000610250610473565b600160a060020a031633600160a060020a03161415156102705760006000fd5b600160a060020a03831615156102865760006000fd5b50600054600160a060020a0390811690831681146102fb57604051600160a060020a0380851691908316907ffcf23a92150d56e85e3a3d33b357493246e55783095eb6a733eb8439ffc752c890600090a360008054600160a060020a031916600160a060020a03851617905560019150610300565b600091505b5b50919050565b60005460a060020a900460ff165b90565b60006000610324610473565b600160a060020a031633600160a060020a03161415156103445760006000fd5b5060005460a060020a900460ff16801515831515146102fb576000546040805160a060020a90920460ff1615158252841515602083015280517fe6cd46a119083b86efc6884b970bfa30c1708f53ba57b86716f15b2f4551a9539281900390910190a16000805460a060020a60ff02191660a060020a8515150217905560019150610300565b600091505b5b50919050565b60006103e0610307565b801561040557506103ef610473565b600160a060020a031633600160a060020a031614155b156104105760006000fd5b610419336105a0565b90505b5b90565b600061042a610307565b801561044f5750610439610473565b600160a060020a031633600160a060020a031614155b1561045a5760006000fd5b610463826105a0565b90505b5b919050565b6001545b90565b600054600160a060020a03165b90565b6000600061048f610473565b600160a060020a031633600160a060020a03161415156104af5760006000fd5b506001548281146102fb57604080518281526020810185905281517f79a3746dde45672c9e8ab3644b8bb9c399a103da2dc94b56ba09777330a83509929181900390910190a160018381559150610300565b600091505b5b50919050565b6002545b90565b60006000610520610473565b600160a060020a031633600160a060020a03161415156105405760006000fd5b506002548281146102fb57604080518281526020810185905281517ff6991a728965fedd6e927fdf16bdad42d8995970b4b31b8a2bf88767516e2494929181900390910190a1600283905560019150610300565b600091505b5b50919050565b60006000426105ad61023d565b116102fb576105c46105bd61050d565b4201610652565b6105cc61046c565b604051909150600160a060020a038416908290600081818185876187965a03f1925050501561063d57604080518281529051600160a060020a038516917f9bca65ce52fdef8a470977b51f247a2295123a4807dfa9e502edf0d30722da3b919081900360200190a260019150610300565b6102fb42610652565b5b600091505b50919050565b60038190555b505600a165627a7a72305820f3c973c8b7ed1f62000b6701bd5b708469e19d0f1d73fde378a56c07fd0b19090029", |
||||||
|
"nonce": "1", |
||||||
|
"storage": { |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000001b436ba50d378d4bbc8660d312a13df6af6e89dfb", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x00000000000000000000000000000000000000000000000006f05b59d3b20000", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x000000000000000000000000000000000000000000000000000000000000003c", |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000003": "0x000000000000000000000000000000000000000000000000000000005a37b834" |
||||||
|
} |
||||||
|
}, |
||||||
|
"0xb436ba50d378d4bbc8660d312a13df6af6e89dfb": { |
||||||
|
"balance": "0x1780d77678137ac1b775", |
||||||
|
"code": "0x", |
||||||
|
"nonce": "29072", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"byzantiumBlock": 1700000, |
||||||
|
"chainId": 3, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 10, |
||||||
|
"eip158Block": 10, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0 |
||||||
|
}, |
||||||
|
"difficulty": "3509749784", |
||||||
|
"extraData": "0x4554482e45544846414e532e4f52472d4641313738394444", |
||||||
|
"gasLimit": "4727564", |
||||||
|
"hash": "0x609948ac3bd3c00b7736b933248891d6c901ee28f066241bddb28f4e00a9f440", |
||||||
|
"miner": "0xbbf5029fd710d227630c8b7d338051b8e76d50b3", |
||||||
|
"mixHash": "0xb131e4507c93c7377de00e7c271bf409ec7492767142ff0f45c882f8068c2ada", |
||||||
|
"nonce": "0x4eb12e19c16d43da", |
||||||
|
"number": "2289805", |
||||||
|
"stateRoot": "0xc7f10f352bff82fac3c2999d3085093d12652e19c7fd32591de49dc5d91b4f1f", |
||||||
|
"timestamp": "1513601261", |
||||||
|
"totalDifficulty": "7143276353481064" |
||||||
|
}, |
||||||
|
"input": "0xf88b8271908506fc23ac0083015f90943b873a919aa0512d5a0f09e6dcceaa4a6727fafe80a463e4bff40000000000000000000000000024f658a46fbb89d8ac105e98d7ac7cbbaf27c52aa0bdce0b59e8761854e857fe64015f06dd08a4fbb7624f6094893a79a72e6ad6bea01d9dde033cff7bb235a3163f348a6d7ab8d6b52bc0963a95b91612e40ca766a4", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0xb436ba50d378d4bbc8660d312a13df6af6e89dfb", |
||||||
|
"gas": "0x10738", |
||||||
|
"input": "0x63e4bff40000000000000000000000000024f658a46fbb89d8ac105e98d7ac7cbbaf27c5", |
||||||
|
"to": "0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockNumber": 2289806, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x9751", |
||||||
|
"output": "0x0000000000000000000000000000000000000000000000000000000000000001" |
||||||
|
}, |
||||||
|
"subtraces": 1, |
||||||
|
"traceAddress": [], |
||||||
|
"type": "call" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0x3b873a919aa0512d5a0f09e6dcceaa4a6727fafe", |
||||||
|
"gas": "0x6d05", |
||||||
|
"input": "0x", |
||||||
|
"to": "0x0024f658a46fbb89d8ac105e98d7ac7cbbaf27c5", |
||||||
|
"value": "0x6f05b59d3b20000" |
||||||
|
}, |
||||||
|
"blockNumber": 0, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x0", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [0], |
||||||
|
"type": "call" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
@ -0,0 +1,70 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"difficulty": "4673862", |
||||||
|
"extraData": "0xd683010b05846765746886676f312e3133856c696e7578", |
||||||
|
"gasLimit": "9471919", |
||||||
|
"hash": "0x7f072150c5905c214966e3432d418910badcdbe510aceaac295b1d7059cc0ffc", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"mixHash": "0x113ced8fedb939fdc862008da7bdddde726f997c0e6dfba0e55613994757b489", |
||||||
|
"nonce": "0x0f411a2e5552c5b7", |
||||||
|
"number": "1555284", |
||||||
|
"stateRoot": "0x9fe125b361b72d5479b24ad9be9964b74228c73a2dfb0065060a79b4a6dfaa1e", |
||||||
|
"timestamp": "1590795374", |
||||||
|
"totalDifficulty": "2242642335405", |
||||||
|
"alloc": { |
||||||
|
"0xe85df1413eebe1b191c26260e19783a274a6b041": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "0", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x6244c985ef1e48e84531", |
||||||
|
"nonce": "265775", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "1555285", |
||||||
|
"difficulty": "4676144", |
||||||
|
"timestamp": "1590795378", |
||||||
|
"gasLimit": "9481167", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf9014083040e2f843b9aca008301aab08080b8eb7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5547f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000037f05581a2a09db45e7846f193471f6d897fb6ff58b7ec41a9c6f63d10aca47d821c365981cba052ec320875625e16141a1a9e8b7993de863698fb699f93ae2cab26149bbb144f", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"type": "create", |
||||||
|
"action": { |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"value": "0x0", |
||||||
|
"gas": "0xd550", |
||||||
|
"init": "0x7f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b57f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000945304eb96065b2a98b57a48a06ae28d285a71b5547f000000000000000000000000000000000000000000000000000000000000c3507f000000000000000000000000000000000000000000000000000000000000c3507f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000037f055" |
||||||
|
}, |
||||||
|
"error": "out of gas", |
||||||
|
"traceAddress": [], |
||||||
|
"subtraces": 0, |
||||||
|
"transactionPosition": 16, |
||||||
|
"transactionHash": "0x384487e5ae8d2997aece8e28403d393cb9752425e6de358891bed981c5af1c05", |
||||||
|
"blockNumber": 1555285, |
||||||
|
"blockHash": "0x93231d8e9662adb4c5c703583a92c7b3112cd5448f43ab4fa1f0f00a0183ed3f", |
||||||
|
"time": "665.278µs" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,92 @@ |
|||||||
|
{ |
||||||
|
"genesis": { |
||||||
|
"number": "553153", |
||||||
|
"hash": "0x88bde20840880a1f3fba92121912a3cc0d3b26d76e4d914fbd85fc2e43da3b3f", |
||||||
|
"nonce": "0x7be554ffe4b82fc2", |
||||||
|
"mixHash": "0xf73d2ff3c16599c3b8a24b9ebde6c09583b5ee3f747d3cd37845d564f4c8d87a", |
||||||
|
"stateRoot": "0x40b5f53d610108947688a04fb68838ff9c0aa0dd6e54156b682537192171ff5c", |
||||||
|
"miner": "0x774c398d763161f55b66a646f17edda4addad2ca", |
||||||
|
"difficulty": "1928226", |
||||||
|
"totalDifficulty": "457857582215", |
||||||
|
"extraData": "0xd983010907846765746888676f312e31332e358664617277696e", |
||||||
|
"gasLimit": "7999473", |
||||||
|
"timestamp": "1577392669", |
||||||
|
"alloc": { |
||||||
|
"0x877bd459c9b7d8576b44e59e09d076c25946f443": { |
||||||
|
"balance": "0x19bb4ac611ca7a1fc881", |
||||||
|
"nonce": "701", |
||||||
|
"code": "0x", |
||||||
|
"storage": {} |
||||||
|
}, |
||||||
|
"0x8ee79c5b3f6e1d214d2c4fcf7ea4092a32e26e91": { |
||||||
|
"balance": "0x0", |
||||||
|
"nonce": "1", |
||||||
|
"code": "0x60606040526000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b514610044578063cfae32171461005157610042565b005b61004f6004506100ca565b005b61005c60045061015e565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156100bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561015b57600060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b5b565b60206040519081016040528060008152602001506001600050805480601f016020809104026020016040519081016040528092919081815260200182805480156101cd57820191906000526020600020905b8154815290600101906020018083116101b057829003601f168201915b505050505090506101d9565b9056", |
||||||
|
"storage": { |
||||||
|
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
"config": { |
||||||
|
"chainId": 63, |
||||||
|
"daoForkSupport": true, |
||||||
|
"eip150Block": 0, |
||||||
|
"eip150Hash": "0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d", |
||||||
|
"eip155Block": 0, |
||||||
|
"eip158Block": 0, |
||||||
|
"ethash": {}, |
||||||
|
"homesteadBlock": 0, |
||||||
|
"byzantiumBlock": 0, |
||||||
|
"constantinopleBlock": 301243, |
||||||
|
"petersburgBlock": 999983, |
||||||
|
"istanbulBlock": 999983 |
||||||
|
} |
||||||
|
}, |
||||||
|
"context": { |
||||||
|
"number": "553154", |
||||||
|
"difficulty": "1929167", |
||||||
|
"timestamp": "1577392670", |
||||||
|
"gasLimit": "8000000", |
||||||
|
"miner": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"input": "0xf86c8202bd850ee6b280008344aa20948ee79c5b3f6e1d214d2c4fcf7ea4092a32e26e91808441c0e1b581a2a03f95ca5cdf7fd727630341c4c6aa1b64ccd9949bd9ecc72cfdd7ce17a2013a69a06d34795ef7fb0108a6dbee4ae0a1bdc48dcd2a4ee53bb6a33d45515af07bb9a8", |
||||||
|
"result": [ |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"callType": "call", |
||||||
|
"from": "0x877bd459c9b7d8576b44e59e09d076c25946f443", |
||||||
|
"gas": "0x445708", |
||||||
|
"input": "0x41c0e1b5", |
||||||
|
"to": "0x8ee79c5b3f6e1d214d2c4fcf7ea4092a32e26e91", |
||||||
|
"value": "0x0" |
||||||
|
}, |
||||||
|
"blockHash": "0xf641c3b0f82b07cd3a528adb9927dd83eeb4f1682e2bd523ed36888e0d82c9a9", |
||||||
|
"blockNumber": 553154, |
||||||
|
"result": { |
||||||
|
"gasUsed": "0x347a", |
||||||
|
"output": "0x" |
||||||
|
}, |
||||||
|
"subtraces": 1, |
||||||
|
"traceAddress": [], |
||||||
|
"transactionHash": "0x6af0a5c3188ffacae4d340d4a17e14fdb5a54187683a80ef241bde248189882b", |
||||||
|
"transactionPosition": 15, |
||||||
|
"type": "call" |
||||||
|
}, |
||||||
|
{ |
||||||
|
"action": { |
||||||
|
"address": "0x8ee79c5b3f6e1d214d2c4fcf7ea4092a32e26e91", |
||||||
|
"balance": "0x0", |
||||||
|
"refundAddress": "0x877bd459c9b7d8576b44e59e09d076c25946f443" |
||||||
|
}, |
||||||
|
"blockHash": "0xf641c3b0f82b07cd3a528adb9927dd83eeb4f1682e2bd523ed36888e0d82c9a9", |
||||||
|
"blockNumber": 553154, |
||||||
|
"subtraces": 0, |
||||||
|
"traceAddress": [ |
||||||
|
0 |
||||||
|
], |
||||||
|
"transactionHash": "0x6af0a5c3188ffacae4d340d4a17e14fdb5a54187683a80ef241bde248189882b", |
||||||
|
"transactionPosition": 15, |
||||||
|
"type": "suicide" |
||||||
|
} |
||||||
|
] |
||||||
|
} |
File diff suppressed because one or more lines are too long
@ -0,0 +1,379 @@ |
|||||||
|
// Copyright 2022 The go-ethereum Authors
|
||||||
|
// This file is part of the go-ethereum library.
|
||||||
|
//
|
||||||
|
// The go-ethereum library is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// The go-ethereum library is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public License
|
||||||
|
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package native |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/json" |
||||||
|
"errors" |
||||||
|
"fmt" |
||||||
|
"math/big" |
||||||
|
"strings" |
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common" |
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil" |
||||||
|
"github.com/ethereum/go-ethereum/core/vm" |
||||||
|
"github.com/ethereum/go-ethereum/eth/tracers" |
||||||
|
) |
||||||
|
|
||||||
|
//go:generate go run github.com/fjl/gencodec -type flatCallAction -field-override flatCallActionMarshaling -out gen_flatcallaction_json.go
|
||||||
|
//go:generate go run github.com/fjl/gencodec -type flatCallResult -field-override flatCallResultMarshaling -out gen_flatcallresult_json.go
|
||||||
|
|
||||||
|
func init() { |
||||||
|
tracers.DefaultDirectory.Register("flatCallTracer", newFlatCallTracer, false) |
||||||
|
} |
||||||
|
|
||||||
|
var parityErrorMapping = map[string]string{ |
||||||
|
"contract creation code storage out of gas": "Out of gas", |
||||||
|
"out of gas": "Out of gas", |
||||||
|
"gas uint64 overflow": "Out of gas", |
||||||
|
"max code size exceeded": "Out of gas", |
||||||
|
"invalid jump destination": "Bad jump destination", |
||||||
|
"execution reverted": "Reverted", |
||||||
|
"return data out of bounds": "Out of bounds", |
||||||
|
"stack limit reached 1024 (1023)": "Out of stack", |
||||||
|
"precompiled failed": "Built-in failed", |
||||||
|
"invalid input length": "Built-in failed", |
||||||
|
} |
||||||
|
|
||||||
|
var parityErrorMappingStartingWith = map[string]string{ |
||||||
|
"invalid opcode:": "Bad instruction", |
||||||
|
"stack underflow": "Stack underflow", |
||||||
|
} |
||||||
|
|
||||||
|
// flatCallFrame is a standalone callframe.
|
||||||
|
type flatCallFrame struct { |
||||||
|
Action flatCallAction `json:"action"` |
||||||
|
BlockHash *common.Hash `json:"blockHash"` |
||||||
|
BlockNumber uint64 `json:"blockNumber"` |
||||||
|
Error string `json:"error,omitempty"` |
||||||
|
Result *flatCallResult `json:"result,omitempty"` |
||||||
|
Subtraces int `json:"subtraces"` |
||||||
|
TraceAddress []int `json:"traceAddress"` |
||||||
|
TransactionHash *common.Hash `json:"transactionHash"` |
||||||
|
TransactionPosition uint64 `json:"transactionPosition"` |
||||||
|
Type string `json:"type"` |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallAction struct { |
||||||
|
Author *common.Address `json:"author,omitempty"` |
||||||
|
RewardType string `json:"rewardType,omitempty"` |
||||||
|
SelfDestructed *common.Address `json:"address,omitempty"` |
||||||
|
Balance *big.Int `json:"balance,omitempty"` |
||||||
|
CallType string `json:"callType,omitempty"` |
||||||
|
CreationMethod string `json:"creationMethod,omitempty"` |
||||||
|
From *common.Address `json:"from,omitempty"` |
||||||
|
Gas *uint64 `json:"gas,omitempty"` |
||||||
|
Init *[]byte `json:"init,omitempty"` |
||||||
|
Input *[]byte `json:"input,omitempty"` |
||||||
|
RefundAddress *common.Address `json:"refundAddress,omitempty"` |
||||||
|
To *common.Address `json:"to,omitempty"` |
||||||
|
Value *big.Int `json:"value,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallActionMarshaling struct { |
||||||
|
Balance *hexutil.Big |
||||||
|
Gas *hexutil.Uint64 |
||||||
|
Init *hexutil.Bytes |
||||||
|
Input *hexutil.Bytes |
||||||
|
Value *hexutil.Big |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallResult struct { |
||||||
|
Address *common.Address `json:"address,omitempty"` |
||||||
|
Code *[]byte `json:"code,omitempty"` |
||||||
|
GasUsed *uint64 `json:"gasUsed,omitempty"` |
||||||
|
Output *[]byte `json:"output,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
type flatCallResultMarshaling struct { |
||||||
|
Code *hexutil.Bytes |
||||||
|
GasUsed *hexutil.Uint64 |
||||||
|
Output *hexutil.Bytes |
||||||
|
} |
||||||
|
|
||||||
|
// flatCallTracer reports call frame information of a tx in a flat format, i.e.
|
||||||
|
// as opposed to the nested format of `callTracer`.
|
||||||
|
type flatCallTracer struct { |
||||||
|
tracer *callTracer |
||||||
|
config flatCallTracerConfig |
||||||
|
ctx *tracers.Context // Holds tracer context data
|
||||||
|
reason error // Textual reason for the interruption
|
||||||
|
activePrecompiles []common.Address // Updated on CaptureStart based on given rules
|
||||||
|
} |
||||||
|
|
||||||
|
type flatCallTracerConfig struct { |
||||||
|
ConvertParityErrors bool `json:"convertParityErrors"` // If true, call tracer converts errors to parity format
|
||||||
|
IncludePrecompiles bool `json:"includePrecompiles"` // If true, call tracer includes calls to precompiled contracts
|
||||||
|
} |
||||||
|
|
||||||
|
// newFlatCallTracer returns a new flatCallTracer.
|
||||||
|
func newFlatCallTracer(ctx *tracers.Context, cfg json.RawMessage) (tracers.Tracer, error) { |
||||||
|
var config flatCallTracerConfig |
||||||
|
if cfg != nil { |
||||||
|
if err := json.Unmarshal(cfg, &config); err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
tracer, err := tracers.DefaultDirectory.New("callTracer", ctx, cfg) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
t, ok := tracer.(*callTracer) |
||||||
|
if !ok { |
||||||
|
return nil, errors.New("internal error: embedded tracer has wrong type") |
||||||
|
} |
||||||
|
|
||||||
|
return &flatCallTracer{tracer: t, ctx: ctx, config: config}, nil |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureStart implements the EVMLogger interface to initialize the tracing operation.
|
||||||
|
func (t *flatCallTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) { |
||||||
|
t.tracer.CaptureStart(env, from, to, create, input, gas, value) |
||||||
|
// Update list of precompiles based on current block
|
||||||
|
rules := env.ChainConfig().Rules(env.Context.BlockNumber, env.Context.Random != nil, env.Context.Time) |
||||||
|
t.activePrecompiles = vm.ActivePrecompiles(rules) |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureEnd is called after the call finishes to finalize the tracing.
|
||||||
|
func (t *flatCallTracer) CaptureEnd(output []byte, gasUsed uint64, err error) { |
||||||
|
t.tracer.CaptureEnd(output, gasUsed, err) |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureState implements the EVMLogger interface to trace a single step of VM execution.
|
||||||
|
func (t *flatCallTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error) { |
||||||
|
t.tracer.CaptureState(pc, op, gas, cost, scope, rData, depth, err) |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureFault implements the EVMLogger interface to trace an execution fault.
|
||||||
|
func (t *flatCallTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error) { |
||||||
|
t.tracer.CaptureFault(pc, op, gas, cost, scope, depth, err) |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureEnter is called when EVM enters a new scope (via call, create or selfdestruct).
|
||||||
|
func (t *flatCallTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int) { |
||||||
|
t.tracer.CaptureEnter(typ, from, to, input, gas, value) |
||||||
|
|
||||||
|
// Child calls must have a value, even if it's zero.
|
||||||
|
// Practically speaking, only STATICCALL has nil value. Set it to zero.
|
||||||
|
if t.tracer.callstack[len(t.tracer.callstack)-1].Value == nil && value == nil { |
||||||
|
t.tracer.callstack[len(t.tracer.callstack)-1].Value = big.NewInt(0) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// CaptureExit is called when EVM exits a scope, even if the scope didn't
|
||||||
|
// execute any code.
|
||||||
|
func (t *flatCallTracer) CaptureExit(output []byte, gasUsed uint64, err error) { |
||||||
|
t.tracer.CaptureExit(output, gasUsed, err) |
||||||
|
|
||||||
|
// Parity traces don't include CALL/STATICCALLs to precompiles.
|
||||||
|
// By default we remove them from the callstack.
|
||||||
|
if t.config.IncludePrecompiles { |
||||||
|
return |
||||||
|
} |
||||||
|
var ( |
||||||
|
// call has been nested in parent
|
||||||
|
parent = t.tracer.callstack[len(t.tracer.callstack)-1] |
||||||
|
call = parent.Calls[len(parent.Calls)-1] |
||||||
|
typ = call.Type |
||||||
|
to = call.To |
||||||
|
) |
||||||
|
if typ == vm.CALL || typ == vm.STATICCALL { |
||||||
|
if t.isPrecompiled(to) { |
||||||
|
t.tracer.callstack[len(t.tracer.callstack)-1].Calls = parent.Calls[:len(parent.Calls)-1] |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func (t *flatCallTracer) CaptureTxStart(gasLimit uint64) { |
||||||
|
t.tracer.CaptureTxStart(gasLimit) |
||||||
|
} |
||||||
|
|
||||||
|
func (t *flatCallTracer) CaptureTxEnd(restGas uint64) { |
||||||
|
t.tracer.CaptureTxEnd(restGas) |
||||||
|
} |
||||||
|
|
||||||
|
// GetResult returns an empty json object.
|
||||||
|
func (t *flatCallTracer) GetResult() (json.RawMessage, error) { |
||||||
|
if len(t.tracer.callstack) < 1 { |
||||||
|
return nil, errors.New("invalid number of calls") |
||||||
|
} |
||||||
|
|
||||||
|
flat, err := flatFromNested(&t.tracer.callstack[0], []int{}, t.config.ConvertParityErrors, t.ctx) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
|
||||||
|
res, err := json.Marshal(flat) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
return res, t.reason |
||||||
|
} |
||||||
|
|
||||||
|
// Stop terminates execution of the tracer at the first opportune moment.
|
||||||
|
func (t *flatCallTracer) Stop(err error) { |
||||||
|
t.tracer.Stop(err) |
||||||
|
} |
||||||
|
|
||||||
|
// isPrecompiled returns whether the addr is a precompile.
|
||||||
|
func (t *flatCallTracer) isPrecompiled(addr common.Address) bool { |
||||||
|
for _, p := range t.activePrecompiles { |
||||||
|
if p == addr { |
||||||
|
return true |
||||||
|
} |
||||||
|
} |
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
func flatFromNested(input *callFrame, traceAddress []int, convertErrs bool, ctx *tracers.Context) (output []flatCallFrame, err error) { |
||||||
|
var frame *flatCallFrame |
||||||
|
switch input.Type { |
||||||
|
case vm.CREATE, vm.CREATE2: |
||||||
|
frame = newFlatCreate(input) |
||||||
|
case vm.SELFDESTRUCT: |
||||||
|
frame = newFlatSuicide(input) |
||||||
|
case vm.CALL, vm.STATICCALL, vm.CALLCODE, vm.DELEGATECALL: |
||||||
|
frame = newFlatCall(input) |
||||||
|
default: |
||||||
|
return nil, fmt.Errorf("unrecognized call frame type: %s", input.Type) |
||||||
|
} |
||||||
|
|
||||||
|
frame.TraceAddress = traceAddress |
||||||
|
frame.Error = input.Error |
||||||
|
frame.Subtraces = len(input.Calls) |
||||||
|
fillCallFrameFromContext(frame, ctx) |
||||||
|
if convertErrs { |
||||||
|
convertErrorToParity(frame) |
||||||
|
} |
||||||
|
|
||||||
|
// Revert output contains useful information (revert reason).
|
||||||
|
// Otherwise discard result.
|
||||||
|
if input.Error != "" && input.Error != vm.ErrExecutionReverted.Error() { |
||||||
|
frame.Result = nil |
||||||
|
} |
||||||
|
|
||||||
|
output = append(output, *frame) |
||||||
|
if len(input.Calls) > 0 { |
||||||
|
for i, childCall := range input.Calls { |
||||||
|
childAddr := childTraceAddress(traceAddress, i) |
||||||
|
childCallCopy := childCall |
||||||
|
flat, err := flatFromNested(&childCallCopy, childAddr, convertErrs, ctx) |
||||||
|
if err != nil { |
||||||
|
return nil, err |
||||||
|
} |
||||||
|
output = append(output, flat...) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return output, nil |
||||||
|
} |
||||||
|
|
||||||
|
func newFlatCreate(input *callFrame) *flatCallFrame { |
||||||
|
var ( |
||||||
|
actionInit = input.Input[:] |
||||||
|
resultCode = input.Output[:] |
||||||
|
) |
||||||
|
|
||||||
|
return &flatCallFrame{ |
||||||
|
Type: strings.ToLower(vm.CREATE.String()), |
||||||
|
Action: flatCallAction{ |
||||||
|
From: &input.From, |
||||||
|
Gas: &input.Gas, |
||||||
|
Value: input.Value, |
||||||
|
Init: &actionInit, |
||||||
|
}, |
||||||
|
Result: &flatCallResult{ |
||||||
|
GasUsed: &input.GasUsed, |
||||||
|
Address: &input.To, |
||||||
|
Code: &resultCode, |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func newFlatCall(input *callFrame) *flatCallFrame { |
||||||
|
var ( |
||||||
|
actionInput = input.Input[:] |
||||||
|
resultOutput = input.Output[:] |
||||||
|
) |
||||||
|
|
||||||
|
return &flatCallFrame{ |
||||||
|
Type: strings.ToLower(vm.CALL.String()), |
||||||
|
Action: flatCallAction{ |
||||||
|
From: &input.From, |
||||||
|
To: &input.To, |
||||||
|
Gas: &input.Gas, |
||||||
|
Value: input.Value, |
||||||
|
CallType: strings.ToLower(input.Type.String()), |
||||||
|
Input: &actionInput, |
||||||
|
}, |
||||||
|
Result: &flatCallResult{ |
||||||
|
GasUsed: &input.GasUsed, |
||||||
|
Output: &resultOutput, |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func newFlatSuicide(input *callFrame) *flatCallFrame { |
||||||
|
return &flatCallFrame{ |
||||||
|
Type: "suicide", |
||||||
|
Action: flatCallAction{ |
||||||
|
SelfDestructed: &input.From, |
||||||
|
Balance: input.Value, |
||||||
|
RefundAddress: &input.To, |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func fillCallFrameFromContext(callFrame *flatCallFrame, ctx *tracers.Context) { |
||||||
|
if ctx == nil { |
||||||
|
return |
||||||
|
} |
||||||
|
if ctx.BlockHash != (common.Hash{}) { |
||||||
|
callFrame.BlockHash = &ctx.BlockHash |
||||||
|
} |
||||||
|
if ctx.BlockNumber != nil { |
||||||
|
callFrame.BlockNumber = ctx.BlockNumber.Uint64() |
||||||
|
} |
||||||
|
if ctx.TxHash != (common.Hash{}) { |
||||||
|
callFrame.TransactionHash = &ctx.TxHash |
||||||
|
} |
||||||
|
callFrame.TransactionPosition = uint64(ctx.TxIndex) |
||||||
|
} |
||||||
|
|
||||||
|
func convertErrorToParity(call *flatCallFrame) { |
||||||
|
if call.Error == "" { |
||||||
|
return |
||||||
|
} |
||||||
|
|
||||||
|
if parityError, ok := parityErrorMapping[call.Error]; ok { |
||||||
|
call.Error = parityError |
||||||
|
} else { |
||||||
|
for gethError, parityError := range parityErrorMappingStartingWith { |
||||||
|
if strings.HasPrefix(call.Error, gethError) { |
||||||
|
call.Error = parityError |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
func childTraceAddress(a []int, i int) []int { |
||||||
|
child := make([]int, 0, len(a)+1) |
||||||
|
child = append(child, a...) |
||||||
|
child = append(child, i) |
||||||
|
return child |
||||||
|
} |
@ -0,0 +1,110 @@ |
|||||||
|
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
|
||||||
|
|
||||||
|
package native |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/json" |
||||||
|
"math/big" |
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common" |
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil" |
||||||
|
) |
||||||
|
|
||||||
|
var _ = (*flatCallActionMarshaling)(nil) |
||||||
|
|
||||||
|
// MarshalJSON marshals as JSON.
|
||||||
|
func (f flatCallAction) MarshalJSON() ([]byte, error) { |
||||||
|
type flatCallAction struct { |
||||||
|
Author *common.Address `json:"author,omitempty"` |
||||||
|
RewardType string `json:"rewardType,omitempty"` |
||||||
|
SelfDestructed *common.Address `json:"address,omitempty"` |
||||||
|
Balance *hexutil.Big `json:"balance,omitempty"` |
||||||
|
CallType string `json:"callType,omitempty"` |
||||||
|
CreationMethod string `json:"creationMethod,omitempty"` |
||||||
|
From *common.Address `json:"from,omitempty"` |
||||||
|
Gas *hexutil.Uint64 `json:"gas,omitempty"` |
||||||
|
Init *hexutil.Bytes `json:"init,omitempty"` |
||||||
|
Input *hexutil.Bytes `json:"input,omitempty"` |
||||||
|
RefundAddress *common.Address `json:"refundAddress,omitempty"` |
||||||
|
To *common.Address `json:"to,omitempty"` |
||||||
|
Value *hexutil.Big `json:"value,omitempty"` |
||||||
|
} |
||||||
|
var enc flatCallAction |
||||||
|
enc.Author = f.Author |
||||||
|
enc.RewardType = f.RewardType |
||||||
|
enc.SelfDestructed = f.SelfDestructed |
||||||
|
enc.Balance = (*hexutil.Big)(f.Balance) |
||||||
|
enc.CallType = f.CallType |
||||||
|
enc.CreationMethod = f.CreationMethod |
||||||
|
enc.From = f.From |
||||||
|
enc.Gas = (*hexutil.Uint64)(f.Gas) |
||||||
|
enc.Init = (*hexutil.Bytes)(f.Init) |
||||||
|
enc.Input = (*hexutil.Bytes)(f.Input) |
||||||
|
enc.RefundAddress = f.RefundAddress |
||||||
|
enc.To = f.To |
||||||
|
enc.Value = (*hexutil.Big)(f.Value) |
||||||
|
return json.Marshal(&enc) |
||||||
|
} |
||||||
|
|
||||||
|
// UnmarshalJSON unmarshals from JSON.
|
||||||
|
func (f *flatCallAction) UnmarshalJSON(input []byte) error { |
||||||
|
type flatCallAction struct { |
||||||
|
Author *common.Address `json:"author,omitempty"` |
||||||
|
RewardType *string `json:"rewardType,omitempty"` |
||||||
|
SelfDestructed *common.Address `json:"address,omitempty"` |
||||||
|
Balance *hexutil.Big `json:"balance,omitempty"` |
||||||
|
CallType *string `json:"callType,omitempty"` |
||||||
|
CreationMethod *string `json:"creationMethod,omitempty"` |
||||||
|
From *common.Address `json:"from,omitempty"` |
||||||
|
Gas *hexutil.Uint64 `json:"gas,omitempty"` |
||||||
|
Init *hexutil.Bytes `json:"init,omitempty"` |
||||||
|
Input *hexutil.Bytes `json:"input,omitempty"` |
||||||
|
RefundAddress *common.Address `json:"refundAddress,omitempty"` |
||||||
|
To *common.Address `json:"to,omitempty"` |
||||||
|
Value *hexutil.Big `json:"value,omitempty"` |
||||||
|
} |
||||||
|
var dec flatCallAction |
||||||
|
if err := json.Unmarshal(input, &dec); err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
if dec.Author != nil { |
||||||
|
f.Author = dec.Author |
||||||
|
} |
||||||
|
if dec.RewardType != nil { |
||||||
|
f.RewardType = *dec.RewardType |
||||||
|
} |
||||||
|
if dec.SelfDestructed != nil { |
||||||
|
f.SelfDestructed = dec.SelfDestructed |
||||||
|
} |
||||||
|
if dec.Balance != nil { |
||||||
|
f.Balance = (*big.Int)(dec.Balance) |
||||||
|
} |
||||||
|
if dec.CallType != nil { |
||||||
|
f.CallType = *dec.CallType |
||||||
|
} |
||||||
|
if dec.CreationMethod != nil { |
||||||
|
f.CreationMethod = *dec.CreationMethod |
||||||
|
} |
||||||
|
if dec.From != nil { |
||||||
|
f.From = dec.From |
||||||
|
} |
||||||
|
if dec.Gas != nil { |
||||||
|
f.Gas = (*uint64)(dec.Gas) |
||||||
|
} |
||||||
|
if dec.Init != nil { |
||||||
|
f.Init = (*[]byte)(dec.Init) |
||||||
|
} |
||||||
|
if dec.Input != nil { |
||||||
|
f.Input = (*[]byte)(dec.Input) |
||||||
|
} |
||||||
|
if dec.RefundAddress != nil { |
||||||
|
f.RefundAddress = dec.RefundAddress |
||||||
|
} |
||||||
|
if dec.To != nil { |
||||||
|
f.To = dec.To |
||||||
|
} |
||||||
|
if dec.Value != nil { |
||||||
|
f.Value = (*big.Int)(dec.Value) |
||||||
|
} |
||||||
|
return nil |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
|
||||||
|
|
||||||
|
package native |
||||||
|
|
||||||
|
import ( |
||||||
|
"encoding/json" |
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common" |
||||||
|
"github.com/ethereum/go-ethereum/common/hexutil" |
||||||
|
) |
||||||
|
|
||||||
|
var _ = (*flatCallResultMarshaling)(nil) |
||||||
|
|
||||||
|
// MarshalJSON marshals as JSON.
|
||||||
|
func (f flatCallResult) MarshalJSON() ([]byte, error) { |
||||||
|
type flatCallResult struct { |
||||||
|
Address *common.Address `json:"address,omitempty"` |
||||||
|
Code *hexutil.Bytes `json:"code,omitempty"` |
||||||
|
GasUsed *hexutil.Uint64 `json:"gasUsed,omitempty"` |
||||||
|
Output *hexutil.Bytes `json:"output,omitempty"` |
||||||
|
} |
||||||
|
var enc flatCallResult |
||||||
|
enc.Address = f.Address |
||||||
|
enc.Code = (*hexutil.Bytes)(f.Code) |
||||||
|
enc.GasUsed = (*hexutil.Uint64)(f.GasUsed) |
||||||
|
enc.Output = (*hexutil.Bytes)(f.Output) |
||||||
|
return json.Marshal(&enc) |
||||||
|
} |
||||||
|
|
||||||
|
// UnmarshalJSON unmarshals from JSON.
|
||||||
|
func (f *flatCallResult) UnmarshalJSON(input []byte) error { |
||||||
|
type flatCallResult struct { |
||||||
|
Address *common.Address `json:"address,omitempty"` |
||||||
|
Code *hexutil.Bytes `json:"code,omitempty"` |
||||||
|
GasUsed *hexutil.Uint64 `json:"gasUsed,omitempty"` |
||||||
|
Output *hexutil.Bytes `json:"output,omitempty"` |
||||||
|
} |
||||||
|
var dec flatCallResult |
||||||
|
if err := json.Unmarshal(input, &dec); err != nil { |
||||||
|
return err |
||||||
|
} |
||||||
|
if dec.Address != nil { |
||||||
|
f.Address = dec.Address |
||||||
|
} |
||||||
|
if dec.Code != nil { |
||||||
|
f.Code = (*[]byte)(dec.Code) |
||||||
|
} |
||||||
|
if dec.GasUsed != nil { |
||||||
|
f.GasUsed = (*uint64)(dec.GasUsed) |
||||||
|
} |
||||||
|
if dec.Output != nil { |
||||||
|
f.Output = (*[]byte)(dec.Output) |
||||||
|
} |
||||||
|
return nil |
||||||
|
} |
Loading…
Reference in new issue