mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 14:46:42 +00:00
Added code to generate prestate test from RPC nodes
Alchemy and QuickNode offers `debug_traceTransaction` that we need, use one of them with a paid plan to generate prestate tests.
This commit is contained in:
parent
b567b08329
commit
9bf4d2482f
4 changed files with 542 additions and 294 deletions
|
|
@ -0,0 +1,257 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"math/big"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum"
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
|
"github.com/ethereum/go-ethereum/common/math"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
|
"github.com/ethereum/go-ethereum/params"
|
||||||
|
"github.com/ethereum/go-ethereum/rlp"
|
||||||
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
|
"golang.org/x/exp/maps"
|
||||||
|
)
|
||||||
|
|
||||||
|
var configByName = map[string]*params.ChainConfig{
|
||||||
|
"mainnet": params.MainnetChainConfig,
|
||||||
|
"goerli": params.GoerliChainConfig,
|
||||||
|
"sepolia": params.SepoliaChainConfig,
|
||||||
|
"holesky": params.HoleskyChainConfig,
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
ensure(len(os.Args) == 3, "Usage: generate-prestate <network> <tx-hash>")
|
||||||
|
|
||||||
|
config, found := configByName[os.Args[1]]
|
||||||
|
ensure(found, "Unknown network %q, valid networks are %q", os.Args[1], strings.Join(maps.Keys(configByName), ", "))
|
||||||
|
|
||||||
|
endpoint := os.Getenv("ARCHIVE_ENDPOINT")
|
||||||
|
ensure(endpoint != "", "ARCHIVE_ENDPOINT environment variable is not set")
|
||||||
|
|
||||||
|
txHash := common.HexToHash(os.Args[2])
|
||||||
|
ensure(txHash.Big().Sign() != 0, "Argument %q is not a valid transaction hash", os.Args[1])
|
||||||
|
|
||||||
|
client, err := rpc.DialOptions(context.Background(), endpoint)
|
||||||
|
noError(err, "Failed to connect to RPC server")
|
||||||
|
|
||||||
|
log("Fetching transaction %q...", txHash.Hex())
|
||||||
|
tx, blockHash, err := transactionByHash(context.Background(), client, txHash)
|
||||||
|
noError(err, "Failed to get transaction %q by hash", txHash)
|
||||||
|
|
||||||
|
log("Fetching block %q...", txHash.Hex())
|
||||||
|
block, err := blockByHash(context.Background(), client, blockHash)
|
||||||
|
noError(err, "Failed to get block %q by hash", blockHash)
|
||||||
|
|
||||||
|
log("Fetching parent block %q...", txHash.Hex())
|
||||||
|
parentBlock, err := blockByHash(context.Background(), client, block.ParentHash())
|
||||||
|
noError(err, "Failed to get parent block %q by hash", block.ParentHash())
|
||||||
|
|
||||||
|
log("Collecting transaction prestate trace...")
|
||||||
|
var prestateTrace types.GenesisAlloc
|
||||||
|
err = client.Call(&prestateTrace, "debug_traceTransaction", txHash, map[string]interface{}{
|
||||||
|
"tracer": "prestateTracer",
|
||||||
|
})
|
||||||
|
noError(err, "Failed to trace transaction %q with prestateTracer", txHash)
|
||||||
|
|
||||||
|
prestateTest := &PrestateTest{
|
||||||
|
// Our genesis block is the parent block
|
||||||
|
Genesis: parentBlock,
|
||||||
|
Block: block,
|
||||||
|
Alloc: prestateTrace,
|
||||||
|
Config: config,
|
||||||
|
Tx: tx,
|
||||||
|
}
|
||||||
|
|
||||||
|
output, err := json.MarshalIndent(prestateTest, "", " ")
|
||||||
|
noError(err, "Failed to marshal prestate test to JSON")
|
||||||
|
|
||||||
|
fmt.Println(string(output))
|
||||||
|
}
|
||||||
|
|
||||||
|
type PrestateTest struct {
|
||||||
|
Genesis *rpcBlock
|
||||||
|
Block *rpcBlock
|
||||||
|
Alloc types.GenesisAlloc
|
||||||
|
Config *params.ChainConfig
|
||||||
|
Tx *types.Transaction
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *PrestateTest) MarshalJSON() ([]byte, error) {
|
||||||
|
genesis := b.Genesis.Fields
|
||||||
|
|
||||||
|
for k, v := range genesis {
|
||||||
|
if v == nil {
|
||||||
|
delete(genesis, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(genesis, "gasUsed")
|
||||||
|
delete(genesis, "logsBloom")
|
||||||
|
delete(genesis, "parentHash")
|
||||||
|
delete(genesis, "receiptsRoot")
|
||||||
|
delete(genesis, "sha3Uncles")
|
||||||
|
delete(genesis, "size")
|
||||||
|
delete(genesis, "transactions")
|
||||||
|
delete(genesis, "transactionsRoot")
|
||||||
|
delete(genesis, "uncles")
|
||||||
|
|
||||||
|
genesis["gasLimit"] = hexToIntegerString(genesis["gasLimit"].(string))
|
||||||
|
genesis["number"] = hexToIntegerString(genesis["number"].(string))
|
||||||
|
genesis["timestamp"] = hexToIntegerString(genesis["timestamp"].(string))
|
||||||
|
genesis["difficulty"] = hexToIntegerString(genesis["difficulty"].(string))
|
||||||
|
genesis["totalDifficulty"] = hexToIntegerString(genesis["totalDifficulty"].(string))
|
||||||
|
|
||||||
|
if found := genesis["baseFeePerGas"]; found != nil {
|
||||||
|
genesis["baseFeePerGas"] = hexToIntegerString(genesis["baseFeePerGas"].(string))
|
||||||
|
}
|
||||||
|
|
||||||
|
marshaledAlloc, err := json.Marshal(b.Alloc)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var allocOut map[string]any
|
||||||
|
if err = json.Unmarshal(marshaledAlloc, &allocOut); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, account := range allocOut {
|
||||||
|
details := account.(map[string]any)
|
||||||
|
for k, v := range details {
|
||||||
|
if k == "nonce" {
|
||||||
|
details["nonce"] = hexToIntegerString(v.(string))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
genesis["alloc"] = allocOut
|
||||||
|
genesis["config"] = b.Config
|
||||||
|
|
||||||
|
context := map[string]any{
|
||||||
|
"number": hexToIntegerString(b.Block.Fields["number"].(string)),
|
||||||
|
"difficulty": hexToIntegerString(b.Block.Fields["difficulty"].(string)),
|
||||||
|
"timestamp": hexToIntegerString(b.Block.Fields["timestamp"].(string)),
|
||||||
|
"gasLimit": hexToIntegerString(b.Block.Fields["gasLimit"].(string)),
|
||||||
|
"miner": b.Block.Fields["miner"],
|
||||||
|
}
|
||||||
|
|
||||||
|
if found := b.Block.Fields["baseFeePerGas"]; found != nil {
|
||||||
|
context["baseFeePerGas"] = hexToIntegerString(b.Block.Fields["baseFeePerGas"].(string))
|
||||||
|
}
|
||||||
|
|
||||||
|
txBuffer := bytes.NewBuffer(nil)
|
||||||
|
rlp.Encode(txBuffer, b.Tx)
|
||||||
|
|
||||||
|
out := map[string]any{}
|
||||||
|
out["genesis"] = genesis
|
||||||
|
out["context"] = context
|
||||||
|
out["input"] = "0x" + hex.EncodeToString(txBuffer.Bytes())
|
||||||
|
|
||||||
|
return json.Marshal(out)
|
||||||
|
}
|
||||||
|
|
||||||
|
func hexToIntegerString(in string) string {
|
||||||
|
value := math.HexOrDecimal256{}
|
||||||
|
noError(value.UnmarshalText([]byte(in)), "Failed to parse hex value %q", in)
|
||||||
|
|
||||||
|
return (*big.Int)(&value).String()
|
||||||
|
}
|
||||||
|
|
||||||
|
type CallTrace struct {
|
||||||
|
From string `json:"from"`
|
||||||
|
Gas string `json:"gas"`
|
||||||
|
GasUsed string `json:"gasUsed"`
|
||||||
|
To string `json:"to"`
|
||||||
|
Input string `json:"input"`
|
||||||
|
Value string `json:"value"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Output string `json:"output,omitempty"`
|
||||||
|
|
||||||
|
Calls []CallTrace `json:"calls"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func blockByHash(ctx context.Context, ec *rpc.Client, hash common.Hash) (*rpcBlock, error) {
|
||||||
|
var out rpcBlock
|
||||||
|
err := ec.CallContext(ctx, &out.Fields, "eth_getBlockByHash", hash, false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if out.Fields == nil {
|
||||||
|
return nil, ethereum.NotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
return &out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type rpcBlock struct {
|
||||||
|
Fields map[string]any
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *rpcBlock) ParentHash() common.Hash {
|
||||||
|
return common.HexToHash(b.Fields["parentHash"].(string))
|
||||||
|
}
|
||||||
|
|
||||||
|
func transactionByHash(ctx context.Context, ec *rpc.Client, hash common.Hash) (tx *types.Transaction, blockHash common.Hash, err error) {
|
||||||
|
var json *rpcTransaction
|
||||||
|
err = ec.CallContext(ctx, &json, "eth_getTransactionByHash", hash)
|
||||||
|
if err != nil {
|
||||||
|
return nil, common.Hash{}, err
|
||||||
|
} else if json == nil {
|
||||||
|
return nil, common.Hash{}, ethereum.NotFound
|
||||||
|
} else if _, r, _ := json.tx.RawSignatureValues(); r == nil {
|
||||||
|
return nil, common.Hash{}, errors.New("server returned transaction without signature")
|
||||||
|
}
|
||||||
|
|
||||||
|
if json.BlockHash == nil {
|
||||||
|
return nil, common.Hash{}, errors.New("server returned transaction without block hash")
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.tx, *json.BlockHash, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type rpcTransaction struct {
|
||||||
|
tx *types.Transaction
|
||||||
|
txExtraInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
type txExtraInfo struct {
|
||||||
|
BlockNumber *string `json:"blockNumber,omitempty"`
|
||||||
|
BlockHash *common.Hash `json:"blockHash,omitempty"`
|
||||||
|
From *common.Address `json:"from,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (tx *rpcTransaction) UnmarshalJSON(msg []byte) error {
|
||||||
|
if err := json.Unmarshal(msg, &tx.tx); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return json.Unmarshal(msg, &tx.txExtraInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
func log(message string, args ...interface{}) {
|
||||||
|
fmt.Fprintf(os.Stderr, message+"\n", args...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ensure(condition bool, message string, args ...interface{}) {
|
||||||
|
if !condition {
|
||||||
|
quit(message, args...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func noError(err error, message string, args ...interface{}) {
|
||||||
|
if err != nil {
|
||||||
|
quit(message+": "+err.Error(), args...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func quit(message string, args ...interface{}) {
|
||||||
|
fmt.Printf(message+"\n", args...)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
@ -1,64 +1,64 @@
|
||||||
{
|
{
|
||||||
"hash": "jm7ksQVNlN8dilH7mDRH3C4nqFRZDDrABh+ZQoS+gVA=",
|
"hash": "jm7ksQVNlN8dilH7mDRH3C4nqFRZDDrABh+ZQoS+gVA=",
|
||||||
"number": "1",
|
"number": "1",
|
||||||
"size": "541",
|
"size": "541",
|
||||||
"header": {
|
"header": {
|
||||||
"parentHash": "hFutUVaUpBa6tLjUTiLPl6jIlKhQIRCrgHiDlA4YXOA=",
|
"parentHash": "hFutUVaUpBa6tLjUTiLPl6jIlKhQIRCrgHiDlA4YXOA=",
|
||||||
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
|
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
|
||||||
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
"transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
||||||
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
||||||
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||||
"difficulty": {
|
"difficulty": {
|
||||||
"bytes": "Ag=="
|
"bytes": "Ag=="
|
||||||
},
|
},
|
||||||
"totalDifficulty": {
|
"totalDifficulty": {
|
||||||
"bytes": "Aw=="
|
"bytes": "Aw=="
|
||||||
},
|
},
|
||||||
"number": "1",
|
"number": "1",
|
||||||
"gasLimit": "1000000",
|
"gasLimit": "1000000",
|
||||||
"timestamp": "1970-01-01T00:00:01Z",
|
"timestamp": "1970-01-01T00:00:01Z",
|
||||||
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"hash": "jm7ksQVNlN8dilH7mDRH3C4nqFRZDDrABh+ZQoS+gVA=",
|
"hash": "jm7ksQVNlN8dilH7mDRH3C4nqFRZDDrABh+ZQoS+gVA=",
|
||||||
"baseFeePerGas": {
|
"baseFeePerGas": {
|
||||||
"bytes": "CA=="
|
"bytes": "CA=="
|
||||||
},
|
},
|
||||||
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
},
|
},
|
||||||
"balanceChanges": [
|
"balanceChanges": [
|
||||||
{
|
{
|
||||||
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"newValue": {
|
"newValue": {
|
||||||
"bytes": "G8FtZ07IAAA="
|
"bytes": "G8FtZ07IAAA="
|
||||||
},
|
},
|
||||||
"reason": "REASON_REWARD_MINE_BLOCK",
|
"reason": "REASON_REWARD_MINE_BLOCK",
|
||||||
"ordinal": "5"
|
"ordinal": "5"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"systemCalls": [
|
"systemCalls": [
|
||||||
{
|
{
|
||||||
"index": 1,
|
"index": 1,
|
||||||
"callType": "CALL",
|
"callType": "CALL",
|
||||||
"caller": "//////////////////////////4=",
|
"caller": "//////////////////////////4=",
|
||||||
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
|
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
|
||||||
"gasLimit": "30000000",
|
"gasLimit": "30000000",
|
||||||
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"gasChanges": [
|
"gasChanges": [
|
||||||
{
|
{
|
||||||
"newValue": "30000000",
|
"newValue": "30000000",
|
||||||
"reason": "REASON_CALL_INITIAL_BALANCE",
|
"reason": "REASON_CALL_INITIAL_BALANCE",
|
||||||
"ordinal": "2"
|
"ordinal": "2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"oldValue": "30000000",
|
"oldValue": "30000000",
|
||||||
"reason": "REASON_CALL_LEFT_OVER_RETURNED",
|
"reason": "REASON_CALL_LEFT_OVER_RETURNED",
|
||||||
"ordinal": "3"
|
"ordinal": "3"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"beginOrdinal": "1",
|
"beginOrdinal": "1",
|
||||||
"endOrdinal": "4"
|
"endOrdinal": "4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ver": 4
|
"ver": 4
|
||||||
}
|
}
|
||||||
|
|
@ -1,167 +1,167 @@
|
||||||
{
|
{
|
||||||
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
|
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
|
||||||
"number": "3727495",
|
"number": "3727495",
|
||||||
"size": "723",
|
"size": "723",
|
||||||
"header": {
|
"header": {
|
||||||
"parentHash": "aYf8zdg87hj7kTMGYReWUn8vvkT0i92fQ04NAsNDcDc=",
|
"parentHash": "aYf8zdg87hj7kTMGYReWUn8vvkT0i92fQ04NAsNDcDc=",
|
||||||
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
|
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
|
||||||
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
|
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
|
||||||
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"transactionsRoot": "bDCtoar4SKuDMt3K7Ay0vDV8FJj/S9YTAtfuy7yJYL0=",
|
"transactionsRoot": "bDCtoar4SKuDMt3K7Ay0vDV8FJj/S9YTAtfuy7yJYL0=",
|
||||||
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
|
||||||
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
|
||||||
"difficulty": {
|
"difficulty": {
|
||||||
"bytes": "AA=="
|
"bytes": "AA=="
|
||||||
},
|
},
|
||||||
"totalDifficulty": {
|
"totalDifficulty": {
|
||||||
"bytes": "PGVtIwKasA=="
|
"bytes": "PGVtIwKasA=="
|
||||||
},
|
},
|
||||||
"number": "3727495",
|
"number": "3727495",
|
||||||
"gasLimit": "30000000",
|
"gasLimit": "30000000",
|
||||||
"timestamp": "2023-06-19T23:23:48Z",
|
"timestamp": "2023-06-19T23:23:48Z",
|
||||||
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
|
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
|
||||||
"baseFeePerGas": {
|
"baseFeePerGas": {
|
||||||
"bytes": "DQ=="
|
"bytes": "DQ=="
|
||||||
},
|
},
|
||||||
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
|
||||||
},
|
},
|
||||||
"transactionTraces": [
|
"transactionTraces": [
|
||||||
{
|
{
|
||||||
"to": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"to": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"nonce": "5",
|
"nonce": "5",
|
||||||
"gasPrice": {
|
"gasPrice": {
|
||||||
"bytes": "AoQ="
|
"bytes": "AoQ="
|
||||||
},
|
},
|
||||||
"gasLimit": "200000",
|
"gasLimit": "200000",
|
||||||
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"v": "AVRtcg==",
|
"v": "AVRtcg==",
|
||||||
"r": "Xww4NKZlcXSDEHF8P5UnXU9PLqL6aBoOU5VFipWpVaM=",
|
"r": "Xww4NKZlcXSDEHF8P5UnXU9PLqL6aBoOU5VFipWpVaM=",
|
||||||
"s": "BOdJVNNAB7fPBAA48slaL2uQd1vOwb423lDacpucotM=",
|
"s": "BOdJVNNAB7fPBAA48slaL2uQd1vOwb423lDacpucotM=",
|
||||||
"gasUsed": "69865",
|
"gasUsed": "69865",
|
||||||
"hash": "tF3PNXHZNWA+icLD8DyDTxT8x76iGVd8sDejy7wEQx8=",
|
"hash": "tF3PNXHZNWA+icLD8DyDTxT8x76iGVd8sDejy7wEQx8=",
|
||||||
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
||||||
"beginOrdinal": "1",
|
"beginOrdinal": "1",
|
||||||
"endOrdinal": "13",
|
"endOrdinal": "13",
|
||||||
"status": "SUCCEEDED",
|
"status": "SUCCEEDED",
|
||||||
"receipt": {
|
"receipt": {
|
||||||
"cumulativeGasUsed": "69865",
|
"cumulativeGasUsed": "69865",
|
||||||
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAIAAAAAAAAAAAAIAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA==",
|
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAIAAAAAAAAAAAAIAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA==",
|
||||||
"logs": [
|
"logs": [
|
||||||
{
|
{
|
||||||
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"topics": [
|
"topics": [
|
||||||
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
|
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
|
||||||
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
|
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
|
||||||
],
|
],
|
||||||
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"ordinal": "9"
|
"ordinal": "9"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"calls": [
|
"calls": [
|
||||||
{
|
{
|
||||||
"index": 1,
|
"index": 1,
|
||||||
"callType": "CALL",
|
"callType": "CALL",
|
||||||
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
||||||
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"gasLimit": "178428",
|
"gasLimit": "178428",
|
||||||
"gasConsumed": "48293",
|
"gasConsumed": "48293",
|
||||||
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"executedCode": true,
|
"executedCode": true,
|
||||||
"keccakPreimages": {
|
"keccakPreimages": {
|
||||||
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000"
|
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000"
|
||||||
},
|
},
|
||||||
"storageChanges": [
|
"storageChanges": [
|
||||||
{
|
{
|
||||||
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
|
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
|
||||||
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"ordinal": "6"
|
"ordinal": "6"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
|
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
|
||||||
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"ordinal": "7"
|
"ordinal": "7"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"balanceChanges": [
|
"balanceChanges": [
|
||||||
{
|
{
|
||||||
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
||||||
"oldValue": {
|
"oldValue": {
|
||||||
"bytes": "B5sluWe3fF0="
|
"bytes": "B5sluWe3fF0="
|
||||||
},
|
},
|
||||||
"newValue": {
|
"newValue": {
|
||||||
"bytes": "B5sluWAKJ10="
|
"bytes": "B5sluWAKJ10="
|
||||||
},
|
},
|
||||||
"reason": "REASON_GAS_BUY",
|
"reason": "REASON_GAS_BUY",
|
||||||
"ordinal": "2"
|
"ordinal": "2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
||||||
"oldValue": {
|
"oldValue": {
|
||||||
"bytes": "B5sluWAKJ10="
|
"bytes": "B5sluWAKJ10="
|
||||||
},
|
},
|
||||||
"newValue": {
|
"newValue": {
|
||||||
"bytes": "B5sluWUI8jk="
|
"bytes": "B5sluWUI8jk="
|
||||||
},
|
},
|
||||||
"reason": "REASON_GAS_REFUND",
|
"reason": "REASON_GAS_REFUND",
|
||||||
"ordinal": "11"
|
"ordinal": "11"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
|
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
|
||||||
"oldValue": {
|
"oldValue": {
|
||||||
"bytes": "AecopRVH6fvBC6c="
|
"bytes": "AecopRVH6fvBC6c="
|
||||||
},
|
},
|
||||||
"newValue": {
|
"newValue": {
|
||||||
"bytes": "AecopRVH6f5hufY="
|
"bytes": "AecopRVH6f5hufY="
|
||||||
},
|
},
|
||||||
"reason": "REASON_REWARD_TRANSACTION_FEE",
|
"reason": "REASON_REWARD_TRANSACTION_FEE",
|
||||||
"ordinal": "12"
|
"ordinal": "12"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"nonceChanges": [
|
"nonceChanges": [
|
||||||
{
|
{
|
||||||
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
|
||||||
"oldValue": "5",
|
"oldValue": "5",
|
||||||
"newValue": "6",
|
"newValue": "6",
|
||||||
"ordinal": "4"
|
"ordinal": "4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"logs": [
|
"logs": [
|
||||||
{
|
{
|
||||||
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
|
||||||
"topics": [
|
"topics": [
|
||||||
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
|
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
|
||||||
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||||||
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
|
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
|
||||||
],
|
],
|
||||||
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
|
||||||
"ordinal": "9"
|
"ordinal": "9"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"gasChanges": [
|
"gasChanges": [
|
||||||
{
|
{
|
||||||
"oldValue": "200000",
|
"oldValue": "200000",
|
||||||
"newValue": "178428",
|
"newValue": "178428",
|
||||||
"reason": "REASON_INTRINSIC_GAS",
|
"reason": "REASON_INTRINSIC_GAS",
|
||||||
"ordinal": "3"
|
"ordinal": "3"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"oldValue": "131897",
|
"oldValue": "131897",
|
||||||
"newValue": "130141",
|
"newValue": "130141",
|
||||||
"reason": "REASON_EVENT_LOG",
|
"reason": "REASON_EVENT_LOG",
|
||||||
"ordinal": "8"
|
"ordinal": "8"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"endOrdinal": "10"
|
"endOrdinal": "10"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ver": 3
|
"ver": 3
|
||||||
}
|
}
|
||||||
|
|
@ -1,116 +1,13 @@
|
||||||
{
|
{
|
||||||
"genesis": {
|
"context": {
|
||||||
"baseFeePerGas": "14",
|
"baseFeePerGas": "13",
|
||||||
"difficulty": "0",
|
"difficulty": "0",
|
||||||
"extraData": "0x6769756c696f207761732068657265",
|
|
||||||
"gasLimit": "30000000",
|
"gasLimit": "30000000",
|
||||||
"hash": "0xff41623ef4e84cea4e957676a0b7e5868f1480e343ad533914133c448157764c",
|
"miner": "0x0000006916a87b82333f4245046623b23794c65c",
|
||||||
"miner": "0x008b3b2f992c0e14edaa6e2c662bec549caa8df1",
|
"number": "3727495",
|
||||||
"mixHash": "0xf04431d1d4ccb65f5d1b2e88ec010737ae82d68426b287a7158b9b16aa45a0bc",
|
"timestamp": "1687217028"
|
||||||
"nonce": "0x0000000000000000",
|
},
|
||||||
"number": "3727494",
|
"genesis": {
|
||||||
"stateRoot": "0xe3f9e4ff1577f21330eded302784f548f6fed4d4ca7a1f6884dde9ad38743279",
|
|
||||||
"timestamp": "1687217016",
|
|
||||||
"totalDifficulty": "17000018015853232",
|
|
||||||
"withdrawals": [
|
|
||||||
{
|
|
||||||
"index": "0xb3bf91",
|
|
||||||
"validatorIndex": "0x38b",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x244a5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf92",
|
|
||||||
"validatorIndex": "0x38c",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf93",
|
|
||||||
"validatorIndex": "0x38d",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf94",
|
|
||||||
"validatorIndex": "0x38e",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf95",
|
|
||||||
"validatorIndex": "0x38f",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf96",
|
|
||||||
"validatorIndex": "0x390",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf97",
|
|
||||||
"validatorIndex": "0x391",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x244a5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf98",
|
|
||||||
"validatorIndex": "0x392",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf99",
|
|
||||||
"validatorIndex": "0x393",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x25b2b"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9a",
|
|
||||||
"validatorIndex": "0x394",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x244a5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9b",
|
|
||||||
"validatorIndex": "0x395",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9c",
|
|
||||||
"validatorIndex": "0x396",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x244a5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9d",
|
|
||||||
"validatorIndex": "0x397",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x244a5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9e",
|
|
||||||
"validatorIndex": "0x398",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bf9f",
|
|
||||||
"validatorIndex": "0x399",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2d66a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": "0xb3bfa0",
|
|
||||||
"validatorIndex": "0x39a",
|
|
||||||
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
|
||||||
"amount": "0x2ecf0"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"withdrawalsRoot": "0xceabf2dc1561db0f29da25b6282082e5353c2f594942cfdcdccfeb176542411c",
|
|
||||||
"alloc": {
|
"alloc": {
|
||||||
"0x0000006916a87b82333f4245046623b23794c65c": {
|
"0x0000006916a87b82333f4245046623b23794c65c": {
|
||||||
"balance": "0x1e728a51547e9fbc10ba7",
|
"balance": "0x1e728a51547e9fbc10ba7",
|
||||||
|
|
@ -131,44 +28,138 @@
|
||||||
"nonce": "5"
|
"nonce": "5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"baseFeePerGas": "14",
|
||||||
"config": {
|
"config": {
|
||||||
|
"berlinBlock": 0,
|
||||||
|
"byzantiumBlock": 0,
|
||||||
|
"cancunTime": 1706655072,
|
||||||
"chainId": 11155111,
|
"chainId": 11155111,
|
||||||
"homesteadBlock": 0,
|
"constantinopleBlock": 0,
|
||||||
"daoForkSupport": true,
|
"daoForkSupport": true,
|
||||||
"eip150Block": 0,
|
"eip150Block": 0,
|
||||||
"eip155Block": 0,
|
"eip155Block": 0,
|
||||||
"eip158Block": 0,
|
"eip158Block": 0,
|
||||||
"byzantiumBlock": 0,
|
"ethash": {},
|
||||||
"constantinopleBlock": 0,
|
"homesteadBlock": 0,
|
||||||
"petersburgBlock": 0,
|
|
||||||
"istanbulBlock": 0,
|
"istanbulBlock": 0,
|
||||||
"muirGlacierBlock": 0,
|
|
||||||
"berlinBlock": 0,
|
|
||||||
"londonBlock": 0,
|
"londonBlock": 0,
|
||||||
"mergeNetsplitBlock": 1735371,
|
"mergeNetsplitBlock": 1735371,
|
||||||
|
"muirGlacierBlock": 0,
|
||||||
|
"petersburgBlock": 0,
|
||||||
"shanghaiTime": 1677557088,
|
"shanghaiTime": 1677557088,
|
||||||
"cancunTime": 1706655072,
|
|
||||||
"terminalTotalDifficulty": 17000000000000000,
|
"terminalTotalDifficulty": 17000000000000000,
|
||||||
"terminalTotalDifficultyPassed": true,
|
"terminalTotalDifficultyPassed": true
|
||||||
"ethash": {}
|
},
|
||||||
}
|
|
||||||
},
|
|
||||||
"context": {
|
|
||||||
"number": "3727495",
|
|
||||||
"difficulty": "0",
|
"difficulty": "0",
|
||||||
"timestamp": "1687217028",
|
"extraData": "0x6769756c696f207761732068657265",
|
||||||
"gasLimit": "30000000",
|
"gasLimit": "30000000",
|
||||||
"miner": "0x0000006916a87b82333f4245046623b23794c65c",
|
"hash": "0xff41623ef4e84cea4e957676a0b7e5868f1480e343ad533914133c448157764c",
|
||||||
"baseFeePerGas": "13"
|
"miner": "0x008b3b2f992c0e14edaa6e2c662bec549caa8df1",
|
||||||
|
"mixHash": "0xf04431d1d4ccb65f5d1b2e88ec010737ae82d68426b287a7158b9b16aa45a0bc",
|
||||||
|
"nonce": "0x0000000000000000",
|
||||||
|
"number": "3727494",
|
||||||
|
"stateRoot": "0xe3f9e4ff1577f21330eded302784f548f6fed4d4ca7a1f6884dde9ad38743279",
|
||||||
|
"timestamp": "1687217016",
|
||||||
|
"totalDifficulty": "17000018015853232",
|
||||||
|
"withdrawals": [
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x244a5",
|
||||||
|
"index": "0xb3bf91",
|
||||||
|
"validatorIndex": "0x38b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf92",
|
||||||
|
"validatorIndex": "0x38c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf93",
|
||||||
|
"validatorIndex": "0x38d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf94",
|
||||||
|
"validatorIndex": "0x38e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf95",
|
||||||
|
"validatorIndex": "0x38f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf96",
|
||||||
|
"validatorIndex": "0x390"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x244a5",
|
||||||
|
"index": "0xb3bf97",
|
||||||
|
"validatorIndex": "0x391"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf98",
|
||||||
|
"validatorIndex": "0x392"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x25b2b",
|
||||||
|
"index": "0xb3bf99",
|
||||||
|
"validatorIndex": "0x393"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x244a5",
|
||||||
|
"index": "0xb3bf9a",
|
||||||
|
"validatorIndex": "0x394"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf9b",
|
||||||
|
"validatorIndex": "0x395"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x244a5",
|
||||||
|
"index": "0xb3bf9c",
|
||||||
|
"validatorIndex": "0x396"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x244a5",
|
||||||
|
"index": "0xb3bf9d",
|
||||||
|
"validatorIndex": "0x397"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf9e",
|
||||||
|
"validatorIndex": "0x398"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2d66a",
|
||||||
|
"index": "0xb3bf9f",
|
||||||
|
"validatorIndex": "0x399"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
|
||||||
|
"amount": "0x2ecf0",
|
||||||
|
"index": "0xb3bfa0",
|
||||||
|
"validatorIndex": "0x39a"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"withdrawalsRoot": "0xceabf2dc1561db0f29da25b6282082e5353c2f594942cfdcdccfeb176542411c"
|
||||||
},
|
},
|
||||||
"input": "0xf8ab0582028483030d4094dd9f95e2c1053a76089b5017829bb2330cb6ae4780b84440c10f19000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b700000000000000000000000000000000000000000000000000000000000000fa8401546d72a05f0c3834a66571748310717c3f95275d4f4f2ea2fa681a0e5395458a95a955a3a004e74954d34007b7cf040038f2c95a2f6b90775bcec1be36de50da729b9ca2d3",
|
"input": "0xf8ab0582028483030d4094dd9f95e2c1053a76089b5017829bb2330cb6ae4780b84440c10f19000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b700000000000000000000000000000000000000000000000000000000000000fa8401546d72a05f0c3834a66571748310717c3f95275d4f4f2ea2fa681a0e5395458a95a955a3a004e74954d34007b7cf040038f2c95a2f6b90775bcec1be36de50da729b9ca2d3"
|
||||||
"result": {
|
|
||||||
"from": "0xeb3d3d616f3e43e9ed361edd2d0e644d18d179b7",
|
|
||||||
"gas": "0x30d40",
|
|
||||||
"gasUsed": "0x110e9",
|
|
||||||
"to": "0xdd9f95e2c1053a76089b5017829bb2330cb6ae47",
|
|
||||||
"input": "0x40c10f19000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b700000000000000000000000000000000000000000000000000000000000000fa",
|
|
||||||
"value": "0x0",
|
|
||||||
"type": "CALL"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue