First pass on adding Polygon 2.0 support

This commit is contained in:
Matthieu Vachon 2025-03-02 12:56:38 -05:00
parent 85d8b9cc37
commit eb156f3e06
37 changed files with 9755 additions and 1 deletions

154
.github/workflows/docker.yml vendored Normal file
View file

@ -0,0 +1,154 @@
name: Build, push and release (if tag)
on:
push:
tags:
- "*-v*"
branches:
- "firehose-fh3.0"
- "release/*"
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
strategy:
matrix:
include:
- platform: linux/amd64
platform_suffix: amd64
runner: ubuntu-22.04
- platform: linux/arm64
platform_suffix: arm64
runner: ubuntu-22.04-arm
runs-on: [ "${{ matrix.runner }}" ]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate docker tags/labels from github build context
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=tag,prefix=
type=sha,prefix=
type=sha,prefix=,suffix=-${{ matrix.platform_suffix }}
type=edge,branch=firehose-fh3.0,priority=1
type=edge,branch=release/*,priority=1
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'beta') && !contains(github.ref, 'rc') }}
prefix=geth-,onlatest=true
- name: Extract version
id: extract-version
run: |
version="edge"
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
version=${GITHUB_REF#refs/tags/}
fi
echo "VERSION=${version} (Commit ${GITHUB_SHA::7}, Commit Date $(git show -s --format=%cI))" >> "$GITHUB_OUTPUT"
- name: Build and push Docker image (${{ matrix.platform }})
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: ${{ matrix.platform }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
provenance: false
build-args: |
BUILDNUM=""
COMMIT=${{ github.sha }}
VERSION=${{ steps.extract-version.outputs.VERSION }}
push:
needs: build
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
steps:
- name: Docker login
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate docker tags/labels from github build context
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=tag,prefix=
type=sha,prefix=
type=edge,branch=firehose-fh3.0,priority=1
type=edge,branch=release/*,priority=1
flavor: |
latest=${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, 'beta') && !contains(github.ref, 'rc') }}
prefix=geth-,onlatest=true
sep-tags: ","
- name: Extract image
id: image
run: |
echo "ID=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
- name: Create and push manifest images
uses: Noelware/docker-manifest-action@0.4.3
with:
inputs: "${{ steps.meta.outputs.tags }}"
images: "${{ steps.image.outputs.ID }}-amd64, ${{ steps.image.outputs.ID }}-arm64"
push: true
release:
if: startsWith(github.ref, 'refs/tags/')
needs: build
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: Extract image
id: image
run: |
echo "ID=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
- name: Extract assets
if: startsWith(github.ref, 'refs/tags/')
run: |
# The --platform are not really needed here, but it removes the warning
docker cp $(docker create --platform=linux/amd64 ${{ steps.image.outputs.ID }}-amd64):/usr/local/bin/geth ./geth_linux
docker cp $(docker create --platform=linux/arm64 ${{ steps.image.outputs.ID }}-arm64):/usr/local/bin/geth ./geth_linux_arm64
- name: Release
uses: softprops/action-gh-release@v2
with:
prerelease: ${{ contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
files: |
./geth_linux
./geth_linux_arm64

166
README.fh.md Normal file
View file

@ -0,0 +1,166 @@
## StreamingFast Firehose Fork of `Ethereum` (`geth` client)
This is our Firehose instrumented fork of [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) repository. In this README, you will find instructions about how to work with this repository.
### Protocols
The Firehose instrumentation have a protocol version for the messages exchanges with Firehose on Ethereum binary (`fireeth`). The
protocols we currently develop are:
- Protocol `fh2.4` using the `firehose-fh2.4` branch and `fh2.4` tag(s) suffix
- Protocol `fh3.0` using the `firehose-fh3.0` branch and `fh3.0` tag(s) suffix
Read [Branches & Workflow](#branches-&-workflow) section for more details about how we handle branching model and versions.
### Initialization
The tooling and other instructions expect the following project
structure, it's easier to work with the Firehose fork when you use
the same names and settings.
```
cd ~/work
git clone --branch="firehose-fh3.0" git@github.com:streamingfast/go-ethereum.git
cd go-ethereum
git remote rename origin sf
git checkout firehose-fh3.0
git remote add origin https://github.com/ethereum/go-ethereum.git
git remote add polygon https://github.com/maticnetwork/bor.git
git remote add bnb https://github.com/binance-chain/bsc.git
# Add other remotes as needed
git fetch origin
git fetch polygon
git fetch bnb
# Fetch other remotes as needed
git checkout release/geth-1.x-fh3.0
git checkout release/bnb-1.x-fh3.0
git checkout release/polygon-1.x-fh2.4
```
##### Assumptions
For the best result when working with this repository and the scripts it contains:
- The remote `sf` exists on main module and points to `git@github.com:streamingfast/go-ethereum.git`
- The remote `origin` exists on main module and points to https://github.com/ethereum/go-ethereum.git
### Branches & Workflow
Dealing with a big repository like Ethereum that have multiple versions for which we need
to track multiple forks (`Matic`, `BSC`) pose a branch management challenges.
Even more that we have our own set of patches to enable deep data extraction
for Firehose consumption.
We use merging of the branches into one another to make that work manageable.
The first and foremost important rule is that we always put new development
in the `firehose-fh3.0` branch.
This branch must always be tracking the lowest supported version of all. Indeed,
this is our "work" branch for our patches, **new development must go there**. If you
perform our work with newer code, the problem that will arise is that this new
firehose work will not be mergeable into forks or older release that we still
support!
The lowest supported Geth version today is `1.15.0`.
We then create `release/<identifier>` branch that tracks the version of interest
for us, versions that we will manages and deploy.
Currently supported forks & version and the release branch
- `firehose-fh3.0` - Default branch with all Firehose commits in it, based on Geth `1.15.0`.
- [release/geth-1.x-fh3.0](https://github.com/streamingfast/go-ethereum/tree/release/geth-1.x-fh3.0) - Ethereum Geth, latest update for this branch is `1.15.3` ([https://github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)).
- [release/polygon-1.x-fh2.4](https://github.com/streamingfast/go-ethereum/tree/release/polygon-1.x-fh2.4) - Polygon fork (a.k.a Matic), based on Geth `1.13.5`, latest update for this branch is `v1.3.0` ([https://github.com/maticnetwork/bor](https://github.com/maticnetwork/bor)).
- [release/bnb-1.x-fh3.0](https://github.com/streamingfast/go-ethereum/tree/release/bsc-1.x-fh2.5) - BSC fork (Binance), based on Geth `1.15.2`, latest update for this branch is `v1.5.6` ([https://github.com/binance-chain/bsc](https://github.com/binance-chain/bsc)).
> **Note** To find on which Geth version a particular fork is, you can do `git merge-base sf/release/geth-1.x-fh3.0 origin/master` where `origin/master` is the `master` branch of the original Geth repository (https://github.com/ethereum/go-ethereum).
#### Making New Firehose Changes
Making new changes should be performed on the `firehose-fh3.0` branch. When happy
with the changes, simply merge the `firehose-fh3.0` branch in all the release branches we track
and support.
git checkout firehose-fh3.0
git pull -p
# Perform necessary changes, tests and commit(s)
git checkout release/geth-1.x-fh3.0
git pull -p
git merge firehose-fh3.0
git checkout release/polygon-1.x-fh2.4
git pull -p
git merge firehose-fh2.4
git checkout release/bnb-1.x-fh3.0
git pull -p
git merge firehose-fh3.0
git push sf firehose-fh3.0 release/geth-1.x-fh3.0 release/polygon-1.x-fh3.0 release/bnb-1.x-fh3.0
### Update to New Upstream Version
We assume you are in the top directory of the repository when performing the following
operations. Here, we outline the rough idea. Extra details and command lines to use
will be completed later if missing.
We are using `v1.15.2` as the example release tag that we want to update to, assuming
`v1.15.1` was the previous latest merged tag. Change
those with your own values.
First step is to checkout the release branch of the series you are currently
updating to:
git checkout release/geth-1.x-fh3.0
git pull -p
You first fetch the origin repository new data from Git:
git fetch origin -p
Then apply the update
git merge v1.15.2
Solve conflicts if any. Once all conflicts have been resolved, commit then
create a tag with release
git tag geth-v1.15.2-fh3.0
Then push all that to the repository:
git push sf release/geth-1.x-fh3.0 geth-v1.15.2-fh3.0
> [!NOTE]
> If you need to issue a Firehose bug fix for an existing version of upstream, for example a Firehose fix on `v1.10.8`, you append `-N` at the end where `N` is 1 then increments further is newer revisions are needed, so you would got tag `geth-v1.15.2-fh3.0-1`
### Development
All the *new* development should happen in the `firehose-fh3.0` branch, this is our own branch
containing our commits.
##### Build Locally
go install ./cmd/geth
#### Release
Github actions are automatically created when creating a tag
### View only our commits
**Important** To correctly work, you need to use the right base branch, otherwise, it will be screwed up. The `firehose-fh3.0`
branch was based on `v1.15.2` at time of writing.
* From `gitk`: `gitk --first-parent v1.15.2..firehose-fh3.0`
* From terminal: `git log --decorate --pretty=oneline --abbrev-commit --first-parent=v1.15.2..firehose-fh3.0`
* From `GitHub`: [https://github.com/streamingfast/go-ethereum/compare/v1.15.2...firehose-fh3.0](https://github.com/streamingfast/go-ethereum/compare/v1.15.2...firehose-fh3.0)
* Modified files in our fork: `git diff --name-status v1.15.2..firehose-fh3.0 | grep -E "^M" | cut -d $'\t' -f 2`

View file

@ -57,6 +57,7 @@ import (
"github.com/cespare/cp" "github.com/cespare/cp"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto/signify" "github.com/ethereum/go-ethereum/crypto/signify"
"github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/internal/build" "github.com/ethereum/go-ethereum/internal/build"
"github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/params"
) )
@ -664,7 +665,7 @@ func maybeSkipArchive(env build.Environment) {
log.Printf("skipping archive creation because this is a PR build") log.Printf("skipping archive creation because this is a PR build")
os.Exit(0) os.Exit(0)
} }
if env.Branch != "master" && !strings.HasPrefix(env.Tag, "v1.") { if env.Branch != "master" && !strings.HasPrefix(env.Branch, "firehose") && !strings.HasPrefix(env.Tag, "v1.") && !strings.Contains(env.Tag, "fh") {
log.Printf("skipping archive creation because branch %q, tag %q is not on the inclusion list", env.Branch, env.Tag) log.Printf("skipping archive creation because branch %q, tag %q is not on the inclusion list", env.Branch, env.Tag)
os.Exit(0) os.Exit(0)
} }
@ -708,6 +709,10 @@ func doDocker(cmdline []string) {
tags = []string{"latest"} tags = []string{"latest"}
case strings.HasPrefix(env.Tag, "v1."): case strings.HasPrefix(env.Tag, "v1."):
tags = []string{"stable", fmt.Sprintf("release-1.%d", params.VersionMinor), "v" + params.Version} tags = []string{"stable", fmt.Sprintf("release-1.%d", params.VersionMinor), "v" + params.Version}
case strings.HasPrefix(env.Branch, "firehose"):
tags = []string{"edge-fh" + tracers.FirehoseProtocolVersion}
case strings.Contains(env.Tag, "fh"):
tags = []string{"stable-fh" + tracers.FirehoseProtocolVersion, "v" + params.Version + "-fh" + tracers.FirehoseProtocolVersion}
} }
// If architecture specific image builds are requested, build and push them // If architecture specific image builds are requested, build and push them
if *image { if *image {

View file

@ -1091,6 +1091,10 @@ func (s *StateDB) mvRecordWritten(object *stateObject) *stateObject {
// existing account with the given address, otherwise it will be silently overwritten. // existing account with the given address, otherwise it will be silently overwritten.
func (s *StateDB) createObject(addr common.Address) *stateObject { func (s *StateDB) createObject(addr common.Address) *stateObject {
obj := newObject(s, addr, nil) obj := newObject(s, addr, nil)
if s.logger != nil && s.logger.OnNewAccount != nil {
s.logger.OnNewAccount(addr)
}
s.journal.append(createObjectChange{account: &addr}) s.journal.append(createObjectChange{account: &addr})
s.setStateObject(obj) s.setStateObject(obj)
MVWrite(s, blockstm.NewAddressKey(addr)) MVWrite(s, blockstm.NewAddressKey(addr))

View file

@ -193,6 +193,13 @@ type Hooks struct {
OnCodeChange CodeChangeHook OnCodeChange CodeChangeHook
OnStorageChange StorageChangeHook OnStorageChange StorageChangeHook
OnLog LogHook OnLog LogHook
// Firehose backward compatibility
// This hook exist because some current Firehose supported chains requires it
// but this field is going to be deprecated and newer chains will not produced
// those events anymore. The hook is registered conditionally based on the
// tracer configuration.
OnNewAccount func(address common.Address)
} }
// BalanceChangeReason is used to indicate the reason for a balance change, useful // BalanceChangeReason is used to indicate the reason for a balance change, useful

View file

@ -517,7 +517,22 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64,
snapshot := evm.StateDB.Snapshot() snapshot := evm.StateDB.Snapshot()
if !evm.StateDB.Exist(address) { if !evm.StateDB.Exist(address) {
evm.StateDB.CreateAccount(address) evm.StateDB.CreateAccount(address)
} else {
// Firehose: In previous versions of the EVM, there was no `evm.StateDB.Exist`
// above and the `CreateAccount` was always called. This was leading to
// always get a `OnNewAccount` event in the tracer as we were not checking
// previous existence of the account.
//
// With the introduction of the `Exist` method, there is now cases where
// `CreateAccount` is not called if it was previously existing.
//
// To keep the same tracing behavior as before, we call the `OnNewAccount`
// manually here if the account was previously existing.
if evm.Config.Tracer != nil && evm.Config.Tracer.OnNewAccount != nil {
evm.Config.Tracer.OnNewAccount(address)
} }
}
// CreateContract means that regardless of whether the account previously existed // CreateContract means that regardless of whether the account previously existed
// in the state trie or not, it _now_ becomes created as a _contract_ account. // in the state trie or not, it _now_ becomes created as a _contract_ account.
// This is performed _prior_ to executing the initcode, since the initcode // This is performed _prior_ to executing the initcode, since the initcode

2798
eth/tracers/firehose.go Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,545 @@
package tracers
import (
"encoding/json"
"fmt"
"math"
"math/big"
"os"
"reflect"
"regexp"
"slices"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/params"
pbeth "github.com/streamingfast/firehose-ethereum/types/pb/sf/ethereum/type/v2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/exp/maps"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/timestamppb"
)
func TestFirehoseCallStack_Push(t *testing.T) {
type actionRunner func(t *testing.T, s *CallStack)
push := func(call *pbeth.Call) actionRunner { return func(_ *testing.T, s *CallStack) { s.Push(call) } }
pop := func() actionRunner { return func(_ *testing.T, s *CallStack) { s.Pop() } }
check := func(r actionRunner) actionRunner { return func(t *testing.T, s *CallStack) { r(t, s) } }
tests := []struct {
name string
actions []actionRunner
}{
{
"push/pop emtpy", []actionRunner{
push(&pbeth.Call{}),
pop(),
check(func(t *testing.T, s *CallStack) {
require.Len(t, s.stack, 0)
}),
},
},
{
"push/push/push", []actionRunner{
push(&pbeth.Call{}),
push(&pbeth.Call{}),
push(&pbeth.Call{}),
check(func(t *testing.T, s *CallStack) {
require.Len(t, s.stack, 3)
require.Equal(t, 1, int(s.stack[0].Index))
require.Equal(t, 0, int(s.stack[0].ParentIndex))
require.Equal(t, 2, int(s.stack[1].Index))
require.Equal(t, 1, int(s.stack[1].ParentIndex))
require.Equal(t, 3, int(s.stack[2].Index))
require.Equal(t, 2, int(s.stack[2].ParentIndex))
}),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s := NewCallStack()
for _, action := range tt.actions {
action(t, s)
}
})
}
}
func Test_validateKnownTransactionTypes(t *testing.T) {
tests := []struct {
name string
txType byte
knownType bool
want error
}{
{"legacy", 0, true, nil},
{"access_list", 1, true, nil},
{"inexistant", 255, false, nil},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := validateFirehoseKnownTransactionType(tt.txType, tt.knownType)
if tt.want == nil && err != nil {
t.Fatalf("Transaction of type %d expected to validate properly but received error %q", tt.txType, err)
} else if tt.want != nil && err == nil {
t.Fatalf("Transaction of type %d expected to validate improperly but generated no error", tt.txType)
} else if tt.want != nil && err != nil && tt.want.Error() != err.Error() {
t.Fatalf("Transaction of type %d expected to validate improperly but generated error %q does not match expected error %q", tt.txType, err, tt.want)
}
})
}
}
var ignorePbFieldNames = map[string]bool{
"Hash": true,
"TotalDifficulty": true,
"state": true,
"unknownFields": true,
"sizeCache": true,
// This was a Polygon specific field that existed for a while and has since been
// removed. It can be safely ignored in all protocols now.
"TxDependency": true,
}
var pbFieldNameToGethMapping = map[string]string{
"WithdrawalsRoot": "WithdrawalsHash",
"MixHash": "MixDigest",
"BaseFeePerGas": "BaseFee",
"StateRoot": "Root",
"ExtraData": "Extra",
"Timestamp": "Time",
"ReceiptRoot": "ReceiptHash",
"TransactionsRoot": "TxHash",
"LogsBloom": "Bloom",
}
var (
pbHeaderType = reflect.TypeFor[pbeth.BlockHeader]()
gethHeaderType = reflect.TypeFor[types.Header]()
)
func Test_TypesHeader_AllConsensusFieldsAreKnown(t *testing.T) {
// This exact hash varies from protocol to protocol and also sometimes from one version to the other.
// When adding support for a new hard-fork that adds new block header fields, it's normal that this value
// changes. If you are sure the two struct are the same, then you can update the expected hash below
// to the new value.
expectedHash := common.HexToHash("4ced4916132bbf6a7819a310bbac4abf354062a00efc980ea4f0bab406546ac5")
gethHeaderValue := reflect.New(gethHeaderType)
fillAllFieldsWithNonEmptyValues(t, gethHeaderValue, reflect.VisibleFields(gethHeaderType))
gethHeader := gethHeaderValue.Interface().(*types.Header)
// If you hit this assertion, it means that the fields `types.Header` of go-ethereum differs now
// versus last time this test was edited.
//
// It's important to understand that in Ethereum Block Header (e.g. `*types.Header`), the `Hash` is
// actually a computed value based on the other fields in the struct, so if you change any field,
// the hash will change also.
//
// On hard-fork, it happens that new fields are added, this test serves as a way to "detect" in code
// that the expected fields of `types.Header` changed
require.Equal(t, expectedHash, gethHeader.Hash(),
"Geth Header Hash mismatch, got %q but expecting %q on *types.Header:\n\nGeth Header (from fillNonDefault(new(*types.Header)))\n%s",
gethHeader.Hash().Hex(),
expectedHash,
asIndentedJSON(t, gethHeader),
)
}
func Test_FirehoseAndGethHeaderFieldMatches(t *testing.T) {
pbFields := filter(reflect.VisibleFields(pbHeaderType), func(f reflect.StructField) bool {
return !ignorePbFieldNames[f.Name]
})
gethFields := reflect.VisibleFields(gethHeaderType)
pbFieldCount := len(pbFields)
gethFieldCount := len(gethFields)
pbFieldNames := extractStructFieldNames(pbFields)
gethFieldNames := extractStructFieldNames(gethFields)
// If you reach this assertion, it means that the fields count in the protobuf and go-ethereum are different.
// It is super important that you properly update the mapping from pbeth.BlockHeader to go-ethereum/core/types.Header
// that is done in `codecHeaderToGethHeader` function in `executor/provider_statedb.go`.
require.Equal(
t,
pbFieldCount,
gethFieldCount,
fieldsCountMismatchMessage(t, pbFieldNames, gethFieldNames))
for pbFieldName := range pbFieldNames {
pbFieldRenamedName, found := pbFieldNameToGethMapping[pbFieldName]
if !found {
pbFieldRenamedName = pbFieldName
}
assert.Contains(t, gethFieldNames, pbFieldRenamedName, "pbField.Name=%q (original %q) not found in gethFieldNames", pbFieldRenamedName, pbFieldName)
}
}
var endsWithUnknownConstant = regexp.MustCompile(`.*\(\d+\)$`)
func TestFirehose_BalanceChangeAllMappedCorrectly(t *testing.T) {
for i := 0; i <= math.MaxUint8; i++ {
tracingReason := tracing.BalanceChangeReason(i)
if tracingReason == tracing.BalanceChangeUnspecified || tracingReason == tracing.BalanceChangeRevert {
// Should never happen in Firehose tracer, only if tracer is wrapped with [tracing.WrapWithJournal]
continue
}
// Here, we leverage the fact that the `tracing.BalanceChangeReason` Stringer will render the String
// as `<EnumName>(<indexValue>)` if the index is not mapped to a constant in the enum. If this happens,
// we know it's not a defined constant in the Geth tracing package.
//
// Otherwise, it's defined and we should have some mapping for it in the `balanceChangeReasonFromChain` function.
//
// There is a loophole of this technique and it's that if the code generator defining the enum Stringer is
// not run, we will think it's an undefined constant and will miss it.
if !endsWithUnknownConstant.MatchString(tracingReason.String()) {
require.NotPanics(t, func() {
balanceChangeReasonFromChain(tracingReason)
}, "BalanceChangeReason panicked for value %v", tracingReason)
}
}
}
func TestFirehose_GasChangeAllMappedCorrectly(t *testing.T) {
for i := 0; i <= math.MaxUint8; i++ {
tracingReason := tracing.GasChangeReason(i)
// Those are ignored and never mapped
if tracingReason == tracing.GasChangeUnspecified || tracingReason == tracing.GasChangeCallOpCode || tracingReason == tracing.GasChangeIgnored {
continue
}
// Here, we leverage the fact that the `tracing.GasChangeReason` Stringer will render the String
// as `<EnumName>(<indexValue>)` if the index is not mapped to a constant in the enum. If this happens,
// we know it's not a defined constant in the Geth tracing package.
//
// Otherwise, it's defined and we should have some mapping for it in the `gasChangeReasonFromChain` function.
//
// There is a loophole of this technique and it's that if the code generator defining the enum Stringer is
// not run, we will think it's an undefined constant and will miss it.
if !endsWithUnknownConstant.MatchString(tracingReason.String()) {
require.NotPanics(t, func() {
gasChangeReasonFromChain(tracingReason)
}, "GasChangeReason panicked for value %v", tracingReason)
}
}
}
func fillAllFieldsWithNonEmptyValues(t *testing.T, structValue reflect.Value, fields []reflect.StructField) {
t.Helper()
for _, field := range fields {
fieldValue := structValue.Elem().FieldByName(field.Name)
require.True(t, fieldValue.IsValid(), "field %q not found", field.Name)
switch fieldValue.Interface().(type) {
case []byte:
fieldValue.Set(reflect.ValueOf([]byte{1}))
case uint64:
fieldValue.Set(reflect.ValueOf(uint64(1)))
case *uint64:
var mockValue uint64 = 1
fieldValue.Set(reflect.ValueOf(&mockValue))
case *common.Hash:
var mockValue common.Hash = common.HexToHash("0x01")
fieldValue.Set(reflect.ValueOf(&mockValue))
case common.Hash:
fieldValue.Set(reflect.ValueOf(common.HexToHash("0x01")))
case common.Address:
fieldValue.Set(reflect.ValueOf(common.HexToAddress("0x01")))
case types.Bloom:
fieldValue.Set(reflect.ValueOf(types.BytesToBloom([]byte{1})))
case types.BlockNonce:
fieldValue.Set(reflect.ValueOf(types.EncodeNonce(1)))
case *big.Int:
fieldValue.Set(reflect.ValueOf(big.NewInt(1)))
case *pbeth.BigInt:
fieldValue.Set(reflect.ValueOf(&pbeth.BigInt{Bytes: []byte{1}}))
case *timestamppb.Timestamp:
fieldValue.Set(reflect.ValueOf(&timestamppb.Timestamp{Seconds: 1}))
default:
// If you reach this panic in test, simply add a case above with a sane non-default
// value for the type in question.
t.Fatalf("unsupported type %T", fieldValue.Interface())
}
}
}
func fieldsCountMismatchMessage(t *testing.T, pbFieldNames map[string]bool, gethFieldNames map[string]bool) string {
t.Helper()
pbRemappedFieldNames := make(map[string]bool, len(pbFieldNames))
for pbFieldName := range pbFieldNames {
pbFieldRenamedName, found := pbFieldNameToGethMapping[pbFieldName]
if !found {
pbFieldRenamedName = pbFieldName
}
pbRemappedFieldNames[pbFieldRenamedName] = true
}
return fmt.Sprintf(
"Field count mistmatch between `pbeth.BlockHeader` (has %d fields) and `*types.Header` (has %d fields)\n\n"+
"Fields in `pbeth.Blockheader`:\n%s\n\n"+
"Fields in `*types.Header`:\n%s\n\n"+
"Missing in `pbeth.BlockHeader`:\n%s\n\n"+
"Missing in `*types.Header`:\n%s",
len(pbRemappedFieldNames),
len(gethFieldNames),
asIndentedJSON(t, maps.Keys(pbRemappedFieldNames)),
asIndentedJSON(t, maps.Keys(gethFieldNames)),
asIndentedJSON(t, missingInSet(gethFieldNames, pbRemappedFieldNames)),
asIndentedJSON(t, missingInSet(pbRemappedFieldNames, gethFieldNames)),
)
}
func asIndentedJSON(t *testing.T, v any) string {
t.Helper()
out, err := json.MarshalIndent(v, "", " ")
require.NoError(t, err)
return string(out)
}
func missingInSet(a, b map[string]bool) []string {
missing := make([]string, 0)
for name := range a {
if !b[name] {
missing = append(missing, name)
}
}
return missing
}
func extractStructFieldNames(fields []reflect.StructField) map[string]bool {
result := make(map[string]bool, len(fields))
for _, field := range fields {
result[field.Name] = true
}
return result
}
func filter[S ~[]T, T any](s S, f func(T) bool) (out S) {
out = make(S, 0, len(s)/4)
for i, v := range s {
if f(v) {
out = append(out, s[i])
}
}
return out
}
func TestFirehose_reorderIsolatedTransactionsAndOrdinals(t *testing.T) {
tests := []struct {
name string
populate func(t *Firehose)
expectedBlockFile string
}{
{
name: "empty",
populate: func(t *Firehose) {
t.OnBlockStart(blockEvent(1))
// Simulated GetTxTracer being called
t.blockReorderOrdinalOnce.Do(func() {
t.blockReorderOrdinal = true
t.blockReorderOrdinalSnapshot = t.blockOrdinal.value
})
t.blockOrdinal.Reset()
t.onTxStart(txEvent(), hex2Hash("CC"), from, to)
t.OnCallEnter(0, byte(vm.CALL), from, to, nil, 0, nil)
t.OnBalanceChange(empty, b(1), b(2), 0)
t.OnCallExit(0, nil, 0, nil, false)
t.OnTxEnd(txReceiptEvent(2), nil)
t.blockOrdinal.Reset()
t.onTxStart(txEvent(), hex2Hash("AA"), from, to)
t.OnCallEnter(0, byte(vm.CALL), from, to, nil, 0, nil)
t.OnBalanceChange(empty, b(1), b(2), 0)
t.OnCallExit(0, nil, 0, nil, false)
t.OnTxEnd(txReceiptEvent(0), nil)
t.blockOrdinal.Reset()
t.onTxStart(txEvent(), hex2Hash("BB"), from, to)
t.OnCallEnter(0, byte(vm.CALL), from, to, nil, 0, nil)
t.OnBalanceChange(empty, b(1), b(2), 0)
t.OnCallExit(0, nil, 0, nil, false)
t.OnTxEnd(txReceiptEvent(1), nil)
},
expectedBlockFile: "testdata/firehose/reorder-ordinals-empty.golden.json",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
f := NewFirehose(&FirehoseConfig{
ApplyBackwardCompatibility: ptr(false),
})
f.OnBlockchainInit(params.AllEthashProtocolChanges)
tt.populate(f)
f.reorderIsolatedTransactionsAndOrdinals()
goldenUpdate := os.Getenv("GOLDEN_UPDATE") == "true"
goldenPath := tt.expectedBlockFile
if !goldenUpdate && !fileExits(t, goldenPath) {
t.Fatalf("the golden file %q does not exist, re-run with 'GOLDEN_UPDATE=true go test ./... -run %q' to generate the intial version", goldenPath, t.Name())
}
content, err := protojson.MarshalOptions{Indent: " "}.Marshal(f.block)
require.NoError(t, err)
if goldenUpdate {
require.NoError(t, os.WriteFile(goldenPath, content, os.ModePerm))
}
expected, err := os.ReadFile(goldenPath)
require.NoError(t, err)
expectedBlock := &pbeth.Block{}
protojson.Unmarshal(expected, expectedBlock)
if !proto.Equal(expectedBlock, f.block) {
assert.Equal(t, expectedBlock, f.block, "Run 'GOLDEN_UPDATE=true go test ./... -run %q' to update golden file", t.Name())
}
seenOrdinals := make(map[uint64]int)
walkChanges(f.block.BalanceChanges, seenOrdinals)
walkChanges(f.block.CodeChanges, seenOrdinals)
walkCalls(f.block.SystemCalls, seenOrdinals)
for _, trx := range f.block.TransactionTraces {
seenOrdinals[trx.BeginOrdinal] = seenOrdinals[trx.BeginOrdinal] + 1
seenOrdinals[trx.EndOrdinal] = seenOrdinals[trx.EndOrdinal] + 1
walkCalls(trx.Calls, seenOrdinals)
}
// No ordinal should be seen more than once
for ordinal, count := range seenOrdinals {
assert.Equal(t, 1, count, "Ordinal %d seen %d times", ordinal, count)
}
ordinals := maps.Keys(seenOrdinals)
slices.Sort(ordinals)
// All ordinals should be in strictly increasing order
prev := -1
for _, ordinal := range ordinals {
if prev != -1 {
assert.Equal(t, prev+1, int(ordinal), "Ordinal %d is not in sequence", ordinal)
}
}
})
}
}
func walkCalls(calls []*pbeth.Call, ordinals map[uint64]int) {
for _, call := range calls {
walkCall(call, ordinals)
}
}
func walkCall(call *pbeth.Call, ordinals map[uint64]int) {
ordinals[call.BeginOrdinal] = ordinals[call.BeginOrdinal] + 1
ordinals[call.EndOrdinal] = ordinals[call.EndOrdinal] + 1
walkChanges(call.BalanceChanges, ordinals)
walkChanges(call.CodeChanges, ordinals)
walkChanges(call.Logs, ordinals)
walkChanges(call.StorageChanges, ordinals)
walkChanges(call.NonceChanges, ordinals)
walkChanges(call.GasChanges, ordinals)
}
func walkChanges[T any](changes []T, ordinals map[uint64]int) {
for _, change := range changes {
var x any = change
if v, ok := x.(interface{ GetOrdinal() uint64 }); ok {
ordinals[v.GetOrdinal()] = ordinals[v.GetOrdinal()] + 1
}
}
}
var b = big.NewInt
var empty, from, to = common.HexToAddress("00"), common.HexToAddress("01"), common.HexToAddress("02")
var hex2Hash = common.HexToHash
func fileExits(t *testing.T, path string) bool {
t.Helper()
stat, err := os.Stat(path)
return err == nil && !stat.IsDir()
}
func txEvent() *types.Transaction {
return types.NewTx(&types.LegacyTx{
Nonce: 0,
GasPrice: big.NewInt(1),
Gas: 1,
To: &to,
Value: big.NewInt(1),
Data: nil,
V: big.NewInt(1),
R: big.NewInt(1),
S: big.NewInt(1),
})
}
func txReceiptEvent(txIndex uint) *types.Receipt {
return &types.Receipt{
Status: 1,
TransactionIndex: txIndex,
}
}
func blockEvent(height uint64) tracing.BlockEvent {
return tracing.BlockEvent{
Block: types.NewBlock(&types.Header{
Number: big.NewInt(int64(height)),
}, nil, nil, nil),
}
}
func TestMemory_GetPtr(t *testing.T) {
type args struct {
offset int64
size int64
}
tests := []struct {
name string
m Memory
args args
want []byte
}{
{"memory is just a bit too small", Memory([]byte{1, 2, 3}), args{0, 4}, []byte{1, 2, 3, 0}},
{"memory is flushed with request", Memory([]byte{1, 2, 3, 4}), args{0, 4}, []byte{1, 2, 3, 4}},
{"memory is just a bit too big", Memory([]byte{1, 2, 3, 4, 5}), args{0, 4}, []byte{1, 2, 3, 4}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
assert.Equal(t, tt.want, tt.m.GetPtr(tt.args.offset, tt.args.size))
})
}
}

View file

@ -0,0 +1,97 @@
package firehose_test
import (
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/state"
"github.com/ethereum/go-ethereum/core/tracing"
"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"
"github.com/ethereum/go-ethereum/trie"
"github.com/stretchr/testify/require"
)
func runPrestateBlock(t *testing.T, prestatePath string, hooks *tracing.Hooks) {
t.Helper()
prestate := readPrestateData(t, prestatePath)
tx := new(types.Transaction)
require.NoError(t, rlp.DecodeBytes(common.FromHex(prestate.Input), tx))
context := prestate.Context.toBlockContext(prestate.Genesis)
testState := tests.MakePreState(rawdb.NewMemoryDatabase(), prestate.Genesis.Alloc, false, rawdb.HashScheme)
defer testState.Close()
state.NewHookedState(testState.StateDB, hooks)
// testState.StateDB.SetLogger(hooks)
testState.StateDB.SetTxContext(tx.Hash(), 0)
block := types.NewBlock(&types.Header{
ParentHash: prestate.Genesis.ToBlock().Hash(),
Number: context.BlockNumber,
Difficulty: context.Difficulty,
Coinbase: context.Coinbase,
Time: context.Time,
GasLimit: context.GasLimit,
BaseFee: context.BaseFee,
ParentBeaconRoot: ptr(common.Hash{}),
}, &types.Body{
Transactions: []*types.Transaction{tx},
}, nil, trie.NewStackTrie(nil))
if hooks.OnBlockchainInit != nil {
hooks.OnBlockchainInit(prestate.Genesis.Config)
}
if hooks.OnBlockStart != nil {
hooks.OnBlockStart(tracing.BlockEvent{
Block: block,
})
}
header := block.Header()
msg, err := core.TransactionToMessage(tx, types.MakeSigner(prestate.Genesis.Config, header.Number, header.Time), header.BaseFee)
require.NoError(t, err)
blockContext := core.NewEVMBlockContext(block.Header(), prestate, &context.Coinbase)
vmenv := vm.NewEVM(blockContext, state.NewHookedState(testState.StateDB, hooks), prestate.Genesis.Config, vm.Config{Tracer: hooks})
usedGas := uint64(0)
_, err = core.ApplyTransactionWithEVM(
msg,
new(core.GasPool).AddGas(block.GasLimit()),
testState.StateDB,
header.Number,
header.Hash(),
tx,
&usedGas,
vmenv,
)
require.NoError(t, err)
if hooks.OnBlockEnd != nil {
hooks.OnBlockEnd(nil)
}
}
var _ core.Validator = (*ignoreValidateStateValidator)(nil)
type ignoreValidateStateValidator struct {
core.Validator
}
func (v ignoreValidateStateValidator) ValidateBody(block *types.Block) error {
return v.Validator.ValidateBody(block)
}
func (v ignoreValidateStateValidator) ValidateState(block *types.Block, state *state.StateDB, res *core.ProcessResult, stateless bool) error {
return nil
}

View file

@ -0,0 +1,209 @@
package firehose_test
import (
"math/big"
"path/filepath"
"strings"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/consensus"
"github.com/ethereum/go-ethereum/consensus/beacon"
"github.com/ethereum/go-ethereum/consensus/ethash"
"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/core/vm/program"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/params"
"github.com/holiman/uint256"
"github.com/stretchr/testify/require"
)
type tracingModel string
const (
tracingModelFirehose2_3 tracingModel = "fh2.3"
tracingModelFirehose3_0 tracingModel = "fh3.0"
)
var tracingModels = []tracingModel{tracingModelFirehose2_3, tracingModelFirehose3_0}
func TestFirehosePrestate(t *testing.T) {
testFolders := []string{
"./testdata/TestFirehosePrestate/keccak256_too_few_memory_bytes_get_padded",
"./testdata/TestFirehosePrestate/keccak256_wrong_diff",
"./testdata/TestFirehosePrestate/suicide_double_withdraw",
"./testdata/TestFirehosePrestate/extra_account_creations",
}
for _, folder := range testFolders {
name := filepath.Base(folder)
for _, model := range tracingModels {
t.Run(string(model)+"/"+name, func(t *testing.T) {
tracer, tracingHooks, onClose := newFirehoseTestTracer(t, model)
defer onClose()
runPrestateBlock(t, filepath.Join(folder, "prestate.json"), tracingHooks)
genesisLine, blockLines, unknownLines := readTracerFirehoseLines(t, tracer)
require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknownLine) string { return "- '" + string(l) + "'" }), "\n"))
require.NotNil(t, genesisLine)
blockLines.assertOnlyBlockEquals(t, filepath.Join(folder, string(model)), 1)
})
}
}
}
func TestFirehose_EIP7702(t *testing.T) {
// Copied from ./core/blockchain_test.go#L4180 (TestEIP7702)
var (
config = *params.MergedTestChainConfig
signer = types.LatestSigner(&config)
engine = beacon.New(ethash.NewFaker())
key1, _ = crypto.HexToECDSA("b71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291")
key2, _ = crypto.HexToECDSA("8a1f9a8f95be41cd7ccb6168179afb4504aefe388d1e14474d32c45c72ce7b7a")
addr1 = crypto.PubkeyToAddress(key1.PublicKey)
addr2 = crypto.PubkeyToAddress(key2.PublicKey)
aa = common.HexToAddress("0x000000000000000000000000000000000000aaaa")
bb = common.HexToAddress("0x000000000000000000000000000000000000bbbb")
cc = common.HexToAddress("0x000000000000000000000000000000000000cccc")
funds = new(big.Int).Mul(common.Big1, big.NewInt(params.Ether))
)
gspec := &core.Genesis{
Config: &config,
Alloc: types.GenesisAlloc{
addr1: {Balance: funds},
addr2: {Balance: funds},
aa: { // The address 0xAAAA calls into addr2
Code: program.New().Call(nil, addr2, 1, 0, 0, 0, 0).Bytes(),
Nonce: 0,
Balance: big.NewInt(0),
},
bb: { // The address 0xBBBB sstores 42 into slot 42.
Code: program.New().Sstore(0x42, 0x42).Bytes(),
Nonce: 0,
Balance: big.NewInt(0),
},
cc: { // The address 0xCCCC sstores 42 into slot 42.
Code: program.New().Sstore(0x42, 0x42).Bytes(),
Nonce: 0,
Balance: big.NewInt(0),
},
},
}
// Sign authorization tuples.
// The way the auths are combined, it becomes
// 1. tx -> addr1 which is delegated to 0xaaaa
// 2. addr1:0xaaaa calls into addr2:0xbbbb
// 3. addr2:0xbbbb writes to storage
auth1, _ := types.SignSetCode(key1, types.SetCodeAuthorization{
ChainID: *uint256.MustFromBig(gspec.Config.ChainID),
Address: aa,
Nonce: 1,
})
auth2OverwrittenLaterInList, _ := types.SignSetCode(key2, types.SetCodeAuthorization{
Address: cc,
Nonce: 0,
})
auth3InvalidAuthority := auth2OverwrittenLaterInList
auth3InvalidAuthority.V = 4
auth4, _ := types.SignSetCode(key2, types.SetCodeAuthorization{
Address: bb,
Nonce: 1,
})
auth5InvalidNonce, _ := types.SignSetCode(key2, types.SetCodeAuthorization{
Address: bb,
Nonce: 1,
})
auth1Reset, _ := types.SignSetCode(key1, types.SetCodeAuthorization{
ChainID: *uint256.MustFromBig(gspec.Config.ChainID),
Address: common.Address{},
Nonce: 4,
})
_, blocks, _ := core.GenerateChainWithGenesis(gspec, engine, 3, func(i int, b *core.BlockGen) {
b.SetCoinbase(aa)
if i == 0 {
txdata := &types.SetCodeTx{
ChainID: uint256.MustFromBig(gspec.Config.ChainID),
Nonce: 0,
To: addr1,
Gas: 500000,
GasFeeCap: uint256.MustFromBig(newGwei(5)),
GasTipCap: uint256.NewInt(2),
AuthList: []types.SetCodeAuthorization{auth1, auth2OverwrittenLaterInList, auth3InvalidAuthority, auth4, auth5InvalidNonce},
}
tx := types.MustSignNewTx(key1, signer, txdata)
b.AddTx(tx)
} else if i == 1 {
txdata := &types.LegacyTx{
Nonce: 2,
To: &addr1,
Value: big.NewInt(0),
Gas: 500000,
GasPrice: newGwei(500),
}
tx := types.MustSignNewTx(key1, signer, txdata)
b.AddTx(tx)
} else if i == 2 {
txdata := &types.SetCodeTx{
ChainID: uint256.MustFromBig(gspec.Config.ChainID),
Nonce: 3,
To: addr1,
Gas: 500000,
GasFeeCap: uint256.MustFromBig(newGwei(5)),
GasTipCap: uint256.NewInt(2),
AuthList: []types.SetCodeAuthorization{auth1Reset},
}
tx := types.MustSignNewTx(key1, signer, txdata)
b.AddTx(tx)
}
})
testBlockTracesCorrectly(t, gspec, engine, blocks, "TestEIP7702")
}
func TestFirehose_SystemCalls(t *testing.T) {
gspec := &core.Genesis{
Config: params.MergedTestChainConfig,
}
engine := beacon.New(ethash.NewFaker())
_, blocks, _ := core.GenerateChainWithGenesis(gspec, engine, 1, func(i int, b *core.BlockGen) {})
testBlockTracesCorrectly(t, gspec, engine, blocks, "TestSystemCalls")
}
func testBlockTracesCorrectly(t *testing.T, genesisSpec *core.Genesis, engine consensus.Engine, blocks []*types.Block, goldenDir string) {
t.Helper()
for _, model := range tracingModels {
t.Run(string(model), func(t *testing.T) {
tracer, tracingHooks, onClose := newFirehoseTestTracer(t, model)
defer onClose()
chain, err := core.NewBlockChain(rawdb.NewMemoryDatabase(), nil, genesisSpec, nil, engine, vm.Config{Tracer: tracingHooks}, nil)
require.NoError(t, err, "failed to create tester chain")
chain.SetBlockValidatorAndProcessorForTesting(
ignoreValidateStateValidator{core.NewBlockValidator(genesisSpec.Config, chain)},
core.NewStateProcessor(genesisSpec.Config, chain.HeaderChain()),
)
defer chain.Stop()
n, err := chain.InsertChain(blocks)
require.NoError(t, err, "failed to insert chain block %d", n)
assertBlockEquals(t, tracer, filepath.Join("testdata", goldenDir, string(model)), len(blocks))
})
}
}

View file

@ -0,0 +1,261 @@
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,
"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))
if genesis["totalDifficulty"] != nil {
genesis["totalDifficulty"] = hexToIntegerString(genesis["totalDifficulty"].(string))
} else {
// Total Difficulty has been nuked from the codebase, so we might not have it anymore
genesis["totalDifficulty"] = "0"
}
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)
}

View file

@ -0,0 +1,213 @@
package firehose_test
import (
"bytes"
"encoding/base64"
"encoding/json"
"fmt"
"math/big"
"os"
"path/filepath"
"strings"
"testing"
"github.com/ethereum/go-ethereum/core/tracing"
"github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/params"
pbeth "github.com/streamingfast/firehose-ethereum/types/pb/sf/ethereum/type/v2"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/encoding/protojson"
"google.golang.org/protobuf/proto"
)
type firehoseInitLine struct {
ProtocolVersion string
NodeName string
NodeVersion string
}
type firehoseBlockLines []firehoseBlockLine
func newFirehoseTestTracer(t *testing.T, model tracingModel) (*tracers.Firehose, *tracing.Hooks, func()) {
t.Helper()
tracer, err := tracers.NewFirehoseFromRawJSON([]byte(fmt.Sprintf(`{
"_private": {
"flushToTestBuffer": true,
"ignoreGenesisBlock": true,
"forcedBackwardCompatibility": %t
}
}`, model == tracingModelFirehose2_3)))
require.NoError(t, err)
hooks := tracers.NewTracingHooksFromFirehose(tracer)
return tracer, hooks, func() {
if hooks.OnClose != nil {
hooks.OnClose()
}
}
}
func (lines firehoseBlockLines) assertEquals(t *testing.T, goldenDir string, expected ...firehoseBlockLineParams) {
actualParams := slicesMap(lines, func(l firehoseBlockLine) firehoseBlockLineParams { return l.Params })
require.Equal(t, expected, actualParams, "Actual lines block params do not match expected lines block params")
lines.assertOnlyBlockEquals(t, goldenDir, len(expected))
}
func (lines firehoseBlockLines) assertOnlyBlockEquals(t *testing.T, goldenDir string, expectedBlockCount int) {
t.Helper()
require.Len(t, lines, expectedBlockCount, "Expected %d blocks, got %d", expectedBlockCount, len(lines))
goldenUpdate := os.Getenv("GOLDEN_UPDATE") == "true"
for _, line := range lines {
goldenPath := filepath.Join(goldenDir, fmt.Sprintf("block.%d.golden.json", line.Block.Header.Number))
if !goldenUpdate && !fileExists(t, goldenPath) {
t.Fatalf("the golden file %q does not exist, re-run with 'GOLDEN_UPDATE=true go test ./... -run %q' to generate the intial version", goldenPath, t.Name())
}
unnormalizedContent, err := protojson.MarshalOptions{Indent: " "}.Marshal(line.Block)
require.NoError(t, err)
if goldenUpdate {
content := normalizedJSON(t, unnormalizedContent)
require.NoError(t, os.MkdirAll(filepath.Dir(goldenPath), 0755))
require.NoError(t, os.WriteFile(goldenPath, content, 0644))
}
expected, err := os.ReadFile(goldenPath)
require.NoError(t, err)
expectedBlock := &pbeth.Block{}
require.NoError(t, protojson.Unmarshal(expected, expectedBlock))
if !proto.Equal(expectedBlock, line.Block) {
assert.EqualExportedValues(t, expectedBlock, line.Block, "Run 'GOLDEN_UPDATE=true go test ./... -run %q' to update golden file", t.Name())
}
}
}
func fileExists(t *testing.T, path string) bool {
t.Helper()
stat, err := os.Stat(path)
if err != nil {
if os.IsNotExist(err) {
return false
}
t.Fatal(err)
}
return !stat.IsDir()
}
func slicesMap[T any, U any](s []T, f func(T) U) []U {
result := make([]U, len(s))
for i, v := range s {
result[i] = f(v)
}
return result
}
type firehoseBlockLine struct {
// We split params and block to make it easier to compare stuff
Params firehoseBlockLineParams
Block *pbeth.Block
}
type firehoseBlockLineParams struct {
Number string
Hash string
PreviousNum string
PreviousHash string
LibNum string
Time string
}
type unknownLine string
// assertBlockEquals reads the tracer output and compares it to the golden files in the given directory.
func assertBlockEquals(t *testing.T, tracer *tracers.Firehose, goldenDir string, expectedBlockCount int) {
t.Helper()
genesisLine, blockLines, unknownLines := readTracerFirehoseLines(t, tracer)
require.Len(t, unknownLines, 0, "Lines:\n%s", strings.Join(slicesMap(unknownLines, func(l unknownLine) string { return "- '" + string(l) + "'" }), "\n"))
require.NotNil(t, genesisLine)
blockLines.assertOnlyBlockEquals(t, goldenDir, expectedBlockCount)
}
func readTracerFirehoseLines(t *testing.T, tracer *tracers.Firehose) (genesisLine *firehoseInitLine, blockLines firehoseBlockLines, unknownLines []unknownLine) {
t.Helper()
lines := bytes.Split(tracer.InternalTestingBuffer().Bytes(), []byte{'\n'})
for _, line := range lines {
if len(line) == 0 {
continue
}
parts := bytes.Split(line, []byte{' '})
if len(parts) == 0 || string(parts[0]) != "FIRE" {
unknownLines = append(unknownLines, unknownLine(line))
continue
}
action := string(parts[1])
fireParts := parts[2:]
switch action {
case "INIT":
genesisLine = &firehoseInitLine{
ProtocolVersion: string(fireParts[0]),
NodeName: string(fireParts[1]),
NodeVersion: string(fireParts[2]),
}
case "BLOCK":
protoBytes, err := base64.StdEncoding.DecodeString(string(fireParts[6]))
require.NoError(t, err)
block := &pbeth.Block{}
require.NoError(t, proto.Unmarshal(protoBytes, block))
blockLines = append(blockLines, firehoseBlockLine{
Params: firehoseBlockLineParams{
Number: string(fireParts[0]),
Hash: string(fireParts[1]),
PreviousNum: string(fireParts[2]),
PreviousHash: string(fireParts[3]),
LibNum: string(fireParts[4]),
Time: string(fireParts[5]),
},
Block: block,
})
default:
unknownLines = append(unknownLines, unknownLine(line))
}
}
return
}
func ptr[T any](v T) *T {
return &v
}
func newGwei(n int64) *big.Int {
return new(big.Int).Mul(big.NewInt(n), big.NewInt(params.GWei))
}
func normalizedJSON(t *testing.T, data []byte) []byte {
t.Helper()
var obj map[string]any
require.NoError(t, json.Unmarshal(data, &obj))
normalized, err := json.MarshalIndent(obj, "", " ")
require.NoError(t, err)
return normalized
}

View file

@ -0,0 +1,121 @@
package firehose_test
import (
"encoding/json"
"math/big"
"os"
"testing"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/consensus"
"github.com/ethereum/go-ethereum/consensus/ethash"
"github.com/ethereum/go-ethereum/consensus/misc/eip4844"
"github.com/ethereum/go-ethereum/core"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/params"
"github.com/stretchr/testify/require"
)
func readPrestateData(t *testing.T, path string) *prestateData {
t.Helper()
// Call tracer test found, read if from disk
blob, err := os.ReadFile(path)
require.NoError(t, err)
test := new(prestateData)
require.NoError(t, json.Unmarshal(blob, test))
var genesisWithTD struct {
Genesis struct {
TotalDifficulty *math.HexOrDecimal256 `json:"totalDifficulty"`
} `json:"genesis"`
}
if err := json.Unmarshal(blob, &genesisWithTD); err == nil {
test.TotalDifficulty = (*big.Int)(genesisWithTD.Genesis.TotalDifficulty)
}
return test
}
var _ core.ChainContext = (*prestateData)(nil)
type prestateData struct {
Genesis *core.Genesis `json:"genesis"`
Context *callContext `json:"context"`
Input string `json:"input"`
TotalDifficulty *big.Int `json:"-"`
TracerConfig json.RawMessage `json:"tracerConfig"`
// Populated after loading
genesisBlock *types.Block
}
// Config implements core.ChainContext.
func (p *prestateData) Config() *params.ChainConfig {
return p.Genesis.Config
}
// Engine implements core.ChainContext.
func (p *prestateData) Engine() consensus.Engine {
return ethash.NewFullFaker()
}
// GetHeader implements core.ChainContext.
func (p *prestateData) GetHeader(hash common.Hash, number uint64) *types.Header {
if p.Genesis == nil {
return nil
}
if p.genesisBlock == nil {
p.genesisBlock = p.Genesis.ToBlock()
}
if hash == p.genesisBlock.Hash() {
return p.genesisBlock.Header()
}
if number == p.genesisBlock.NumberU64() {
return p.genesisBlock.Header()
}
return nil
}
type callContext struct {
Number math.HexOrDecimal64 `json:"number"`
Difficulty *math.HexOrDecimal256 `json:"difficulty"`
Time math.HexOrDecimal64 `json:"timestamp"`
GasLimit math.HexOrDecimal64 `json:"gasLimit"`
Miner common.Address `json:"miner"`
BaseFee *math.HexOrDecimal256 `json:"baseFeePerGas"`
}
func (c *callContext) toBlockContext(genesis *core.Genesis) vm.BlockContext {
context := vm.BlockContext{
CanTransfer: core.CanTransfer,
Transfer: core.Transfer,
Coinbase: c.Miner,
BlockNumber: new(big.Int).SetUint64(uint64(c.Number)),
Time: uint64(c.Time),
Difficulty: (*big.Int)(c.Difficulty),
GasLimit: uint64(c.GasLimit),
}
if genesis.Config.IsLondon(context.BlockNumber) {
context.BaseFee = (*big.Int)(c.BaseFee)
}
if genesis.Config.TerminalTotalDifficulty != nil && genesis.Config.TerminalTotalDifficulty.Sign() == 0 {
context.Random = &genesis.Mixhash
}
if genesis.ExcessBlobGas != nil && genesis.BlobGasUsed != nil {
header := &types.Header{Number: genesis.Config.LondonBlock, Time: *genesis.Config.CancunTime}
excess := eip4844.CalcExcessBlobGas(genesis.Config, header, genesis.Timestamp)
header.ExcessBlobGas = &excess
context.BlobBaseFee = eip4844.CalcBlobFee(genesis.Config, header)
}
return context
}

View file

@ -0,0 +1,301 @@
{
"hash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"header": {
"baseFeePerGas": {
"bytes": "NCdwwA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "142021",
"hash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "pWIUj7qpHz/G8tLNdaLNz8Jr1TmoyDxTXP9TdFcxi1w=",
"receiptRoot": "6LQ+xgZZXKAlBStw088D6A2kWiz7g+TtQlAALnPMSi4=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "wFieFJlWOhntuAXVWTxqg5Uur7kaXrFRERwFB8+qscc=",
"timestamp": "1970-01-01T00:00:10Z",
"transactionsRoot": "L6HG4v+Zoguv352C8ZdQGQ4tE5BJdzCJVbfWBHMquN0=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "1",
"size": "1190",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "2",
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "3",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasLimit": "30000000",
"index": 1,
"input": "pWIUj7qpHz/G8tLNdaLNz8Jr1TmoyDxTXP9TdFcxi1w="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "24",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "25",
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "26",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "27",
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "Dd8ozD895cA="
},
"oldValue": {
"bytes": "DeC2s6dkAAA="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DeBFrisGZrU="
},
"oldValue": {
"bytes": "Dd8ozD895b8="
},
"ordinal": "21",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "BFWK"
},
"ordinal": "22",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"codeChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newHash": "6BOVhfT5ksAf8bXRTf8FXcJyKhFA0Cb18MtIsAn1Z9o=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "6"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAzMw=",
"newHash": "2nRj6FdgztYMKwAqS2x5e7pQdCMd4bTSeffx8pbIFmU=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "8"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"newHash": "0mhxQ0BYDv3haWHrT7NIuLWUSlfUHjFwuLM/8Jt1SXA=",
"oldCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAzMw=",
"oldHash": "2nRj6FdgztYMKwAqS2x5e7pQdCMd4bTSeffx8pbIFmU=",
"ordinal": "10"
}
],
"endOrdinal": "20",
"gasChanges": [
{
"newValue": "354000",
"oldValue": "500000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "351280",
"oldValue": "353880",
"ordinal": "12",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "5348",
"oldValue": "353980",
"ordinal": "13",
"reason": "REASON_CALL"
},
{
"newValue": "322474",
"oldValue": "5348",
"ordinal": "19",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "31526",
"gasLimit": "354000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "1",
"ordinal": "4"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "2",
"oldValue": "1",
"ordinal": "5"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": "1",
"ordinal": "7"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": "2",
"oldValue": "1",
"ordinal": "9"
}
]
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "Dd8ozD895b8="
},
"oldValue": {
"bytes": "Dd8ozD895cA="
},
"ordinal": "15",
"reason": "REASON_TRANSFER"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": {
"bytes": "DeC2s6dkAAE="
},
"oldValue": {
"bytes": "DeC2s6dkAAA="
},
"ordinal": "16",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "14",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"depth": 1,
"endOrdinal": "18",
"gasConsumed": "22106",
"gasLimit": "339232",
"index": 2,
"parentIndex": 1,
"storageChanges": [
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEI=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "17"
}
],
"value": {
"bytes": "AQ=="
}
}
],
"endOrdinal": "23",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "NCdwwg=="
},
"gasUsed": "142021",
"hash": "alLg5Yk4t0M/5q97S3ye+D/U/jP60tAc1kNI8q4G+G0=",
"maxFeePerGas": {
"bytes": "ASoF8gA="
},
"maxPriorityFeePerGas": {
"bytes": "Ag=="
},
"r": "E2l+Qpz16QzQhLJM+8gu8vd/lpMS1JAC0/hIlSNzFeg=",
"receipt": {
"cumulativeGasUsed": "142021",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "N9pmx9wBwi0vXsT283fImtj6D4zPzYK3ZFXwBhYmbBA=",
"setCodeAuthorizations": [
{
"authority": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"chainId": "AQ==",
"nonce": "1",
"r": "9+Pll/wJfnHtbCaxSyXlOVvIUQ1YuRNq9DnhJxXy1yE=",
"s": "bPfD15Ob/beENz7/wOuwvXVJaRpRPzlePNq/hgJySYc=",
"v": 1
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"r": "2uP1vwtGC/qSZin0z+PZ2kBZ/xY3445BRUpUUwr4UOc=",
"s": "HhA+a0fj/u82ZZyD9gMoHso5vGditId+wkZrJcpo4UM="
},
{
"discarded": true,
"r": "2uP1vwtGC/qSZin0z+PZ2kBZ/xY3445BRUpUUwr4UOc=",
"s": "HhA+a0fj/u82ZZyD9gMoHso5vGditId+wkZrJcpo4UM=",
"v": 4
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"nonce": "1",
"r": "aZRYP4l48gpWJSypjCxSptjK/kDFXmphIXOrnH6LlKs=",
"s": "HLb0WRaaPuzez2ZbtK39Ch9vZGXNjm5AYg2i8X5MMwg="
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"discarded": true,
"nonce": "1",
"r": "aZRYP4l48gpWJSypjCxSptjK/kDFXmphIXOrnH6LlKs=",
"s": "HLb0WRaaPuzez2ZbtK39Ch9vZGXNjm5AYg2i8X5MMwg="
}
],
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"type": "TRX_TYPE_SET_CODE"
}
],
"ver": 3
}

View file

@ -0,0 +1,222 @@
{
"hash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"header": {
"baseFeePerGas": {
"bytes": "LgcbLA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "35126",
"hash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "2",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"receiptRoot": "TaaZwIwiwzd65OYkLzazOIYrFN0/DnyXzNqaA/dY3pQ=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "C/zDETYPAXEFuq3RDENkXppoaNjfcWKHhIQqZGC0D5c=",
"timestamp": "1970-01-01T00:00:20Z",
"transactionsRoot": "5SXnkgZs4gKgt8t4GTnSeoV1i17zHn3xbZXSln9fd2E=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "2",
"size": "717",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "2",
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "3",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasLimit": "30000000",
"index": 1,
"input": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "18",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "19",
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "20",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "21",
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "CmgYAUEtZrU="
},
"oldValue": {
"bytes": "DeBFrisGZrU="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaHgOZLVtrQ="
},
"oldValue": {
"bytes": "CmgYAUEtZrQ="
},
"ordinal": "15",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "PkzJFSq+Qg=="
},
"oldValue": {
"bytes": "BFWK"
},
"ordinal": "16",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"endOrdinal": "14",
"gasChanges": [
{
"newValue": "479000",
"oldValue": "500000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "476380",
"oldValue": "478880",
"ordinal": "6",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "473780",
"oldValue": "476380",
"ordinal": "7",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "7262",
"oldValue": "478980",
"ordinal": "8",
"reason": "REASON_CALL"
},
{
"newValue": "464874",
"oldValue": "7262",
"ordinal": "13",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "14126",
"gasLimit": "479000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "3",
"oldValue": "2",
"ordinal": "4"
}
]
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "CmgYAUEtZrQ="
},
"oldValue": {
"bytes": "CmgYAUEtZrU="
},
"ordinal": "10",
"reason": "REASON_TRANSFER"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": {
"bytes": "DeC2s6dkAAI="
},
"oldValue": {
"bytes": "DeC2s6dkAAE="
},
"ordinal": "11",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "9",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"depth": 1,
"endOrdinal": "12",
"gasConsumed": "2206",
"gasLimit": "459818",
"index": 2,
"parentIndex": 1,
"value": {
"bytes": "AQ=="
}
}
],
"endOrdinal": "17",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "dGpSiAA="
},
"gasUsed": "35126",
"hash": "TNmQOfjPE0jeas0eba+xGMaitDgyCOKmvNIBapciCiE=",
"nonce": "2",
"r": "llnySTXnLA5URm+RriiJTQ4gvkdUifLtVOIyBCpDFTw=",
"receipt": {
"cumulativeGasUsed": "35126",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "SsqOfVDTp1cpwvz0g4nLhIzrWRGwh0Jgz4l9GK/UHbE=",
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"v": "JQ=="
}
],
"ver": 3
}

View file

@ -0,0 +1,186 @@
{
"hash": "nM0MjYrd54p5L0zQNGpHV7fxetFL1VCejCvGELDLop8=",
"header": {
"baseFeePerGas": {
"bytes": "KFws9Q=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "36800",
"hash": "nM0MjYrd54p5L0zQNGpHV7fxetFL1VCejCvGELDLop8=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"receiptRoot": "A2x9IEIO284ktQYhSLzoBWO0j9RTL7HAaLLJalMRcBk=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "vWvMYC8Hck2r4d77C3bO7nRWmEtpytSHv092DGpMjeI=",
"timestamp": "1970-01-01T00:00:30Z",
"transactionsRoot": "Bpo3ARUhIUuu9hH3yrkUNF2s22VFnHRDwdWxzM0pb5U=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "3",
"size": "817",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "2",
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "3",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasLimit": "30000000",
"index": 1,
"input": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "12",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "13",
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "14",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "15",
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaCsTVRHwNQ="
},
"oldValue": {
"bytes": "DaHgOZLVtrQ="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaHJj9CWBHQ="
},
"oldValue": {
"bytes": "DaCsTVRHwNQ="
},
"ordinal": "9",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "PkzJFSvdwg=="
},
"oldValue": {
"bytes": "PkzJFSq+Qg=="
},
"ordinal": "10",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"codeChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"oldCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"oldHash": "6BOVhfT5ksAf8bXRTf8FXcJyKhFA0Cb18MtIsAn1Z9o=",
"ordinal": "6"
}
],
"endOrdinal": "8",
"gasChanges": [
{
"newValue": "454000",
"oldValue": "500000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
}
],
"gasLimit": "454000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "4",
"oldValue": "3",
"ordinal": "4"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "5",
"oldValue": "4",
"ordinal": "5"
}
]
}
],
"endOrdinal": "11",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "KFws9w=="
},
"gasUsed": "36800",
"hash": "vj4lUeVR72WjVf2OYUmz3Um0SH4d6qCao7cZRbBiaCI=",
"maxFeePerGas": {
"bytes": "ASoF8gA="
},
"maxPriorityFeePerGas": {
"bytes": "Ag=="
},
"nonce": "3",
"r": "3+bIOst9jVy0xdYLs7dP1KfP1XrtsXepmpY0W3XBKII=",
"receipt": {
"cumulativeGasUsed": "36800",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "UGXb+KJ8dparEBn0Wb2lX5fh1gB2+AiHfowzzmJWOkE=",
"setCodeAuthorizations": [
{
"authority": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"chainId": "AQ==",
"nonce": "4",
"r": "8RpcvObxuhW9b2SyJDTKMBtrqfyaAJlzS37bOLPTKIo=",
"s": "NMkyzSai5xkwNV4ttrTli9jZHXeB7hUwej28frcnTDw="
}
],
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"type": "TRX_TYPE_SET_CODE"
}
],
"ver": 3
}

View file

@ -0,0 +1,390 @@
{
"hash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"header": {
"baseFeePerGas": {
"bytes": "NCdwwA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "142021",
"hash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "pWIUj7qpHz/G8tLNdaLNz8Jr1TmoyDxTXP9TdFcxi1w=",
"receiptRoot": "6LQ+xgZZXKAlBStw088D6A2kWiz7g+TtQlAALnPMSi4=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "wFieFJlWOhntuAXVWTxqg5Uur7kaXrFRERwFB8+qscc=",
"timestamp": "1970-01-01T00:00:10Z",
"transactionsRoot": "L6HG4v+Zoguv352C8ZdQGQ4tE5BJdzCJVbfWBHMquN0=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "1",
"size": "1190",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "2",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "3",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "5",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "8",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "6",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "7",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "pWIUj7qpHz/G8tLNdaLNz8Jr1TmoyDxTXP9TdFcxi1w="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "39",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "42",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "40",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "41",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "43",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "46",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "44",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "45",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "9",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "Dd8ozD895cA="
},
"oldValue": {
"bytes": "DeC2s6dkAAA="
},
"ordinal": "11",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DeBFrisGZrU="
},
"oldValue": {
"bytes": "Dd8ozD895b8="
},
"ordinal": "35",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "BFWK"
},
"ordinal": "37",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"beginOrdinal": "20",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"codeChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newHash": "6BOVhfT5ksAf8bXRTf8FXcJyKhFA0Cb18MtIsAn1Z9o=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "15"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAzMw=",
"newHash": "2nRj6FdgztYMKwAqS2x5e7pQdCMd4bTSeffx8pbIFmU=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "17"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"newHash": "0mhxQ0BYDv3haWHrT7NIuLWUSlfUHjFwuLM/8Jt1SXA=",
"oldCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAzMw=",
"oldHash": "2nRj6FdgztYMKwAqS2x5e7pQdCMd4bTSeffx8pbIFmU=",
"ordinal": "19"
}
],
"endOrdinal": "33",
"executedCode": true,
"gasChanges": [
{
"newValue": "500000",
"ordinal": "10",
"reason": "REASON_TX_INITIAL_BALANCE"
},
{
"newValue": "354000",
"oldValue": "500000",
"ordinal": "12",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "354000",
"ordinal": "21",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"newValue": "351280",
"oldValue": "353880",
"ordinal": "22",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "5348",
"oldValue": "353980",
"ordinal": "23",
"reason": "REASON_CALL"
},
{
"newValue": "322474",
"oldValue": "5348",
"ordinal": "31",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"oldValue": "322474",
"ordinal": "32",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
},
{
"newValue": "357979",
"oldValue": "322474",
"ordinal": "34",
"reason": "REASON_TX_REFUNDS"
},
{
"oldValue": "357979",
"ordinal": "36",
"reason": "REASON_TX_LEFT_OVER_RETURNED"
}
],
"gasConsumed": "31526",
"gasLimit": "354000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "1",
"ordinal": "13"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "2",
"oldValue": "1",
"ordinal": "14"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": "1",
"ordinal": "16"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": "2",
"oldValue": "1",
"ordinal": "18"
}
]
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "Dd8ozD895b8="
},
"oldValue": {
"bytes": "Dd8ozD895cA="
},
"ordinal": "26",
"reason": "REASON_TRANSFER"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": {
"bytes": "DeC2s6dkAAE="
},
"oldValue": {
"bytes": "DeC2s6dkAAA="
},
"ordinal": "27",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "24",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"depth": 1,
"endOrdinal": "30",
"executedCode": true,
"gasChanges": [
{
"newValue": "339232",
"ordinal": "25",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "317126",
"ordinal": "29",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasConsumed": "22106",
"gasLimit": "339232",
"index": 2,
"parentIndex": 1,
"storageChanges": [
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEI=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "28"
}
],
"value": {
"bytes": "AQ=="
}
}
],
"endOrdinal": "38",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "NCdwwg=="
},
"gasUsed": "142021",
"hash": "alLg5Yk4t0M/5q97S3ye+D/U/jP60tAc1kNI8q4G+G0=",
"maxFeePerGas": {
"bytes": "ASoF8gA="
},
"maxPriorityFeePerGas": {
"bytes": "Ag=="
},
"r": "E2l+Qpz16QzQhLJM+8gu8vd/lpMS1JAC0/hIlSNzFeg=",
"receipt": {
"cumulativeGasUsed": "142021",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "N9pmx9wBwi0vXsT283fImtj6D4zPzYK3ZFXwBhYmbBA=",
"setCodeAuthorizations": [
{
"authority": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"chainId": "AQ==",
"nonce": "1",
"r": "9+Pll/wJfnHtbCaxSyXlOVvIUQ1YuRNq9DnhJxXy1yE=",
"s": "bPfD15Ob/beENz7/wOuwvXVJaRpRPzlePNq/hgJySYc=",
"v": 1
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"r": "2uP1vwtGC/qSZin0z+PZ2kBZ/xY3445BRUpUUwr4UOc=",
"s": "HhA+a0fj/u82ZZyD9gMoHso5vGditId+wkZrJcpo4UM="
},
{
"discarded": true,
"r": "2uP1vwtGC/qSZin0z+PZ2kBZ/xY3445BRUpUUwr4UOc=",
"s": "HhA+a0fj/u82ZZyD9gMoHso5vGditId+wkZrJcpo4UM=",
"v": 4
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"nonce": "1",
"r": "aZRYP4l48gpWJSypjCxSptjK/kDFXmphIXOrnH6LlKs=",
"s": "HLb0WRaaPuzez2ZbtK39Ch9vZGXNjm5AYg2i8X5MMwg="
},
{
"authority": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"discarded": true,
"nonce": "1",
"r": "aZRYP4l48gpWJSypjCxSptjK/kDFXmphIXOrnH6LlKs=",
"s": "HLb0WRaaPuzez2ZbtK39Ch9vZGXNjm5AYg2i8X5MMwg="
}
],
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"type": "TRX_TYPE_SET_CODE"
}
],
"ver": 4
}

View file

@ -0,0 +1,305 @@
{
"hash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"header": {
"baseFeePerGas": {
"bytes": "LgcbLA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "35126",
"hash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "2",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw=",
"receiptRoot": "TaaZwIwiwzd65OYkLzazOIYrFN0/DnyXzNqaA/dY3pQ=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "C/zDETYPAXEFuq3RDENkXppoaNjfcWKHhIQqZGC0D5c=",
"timestamp": "1970-01-01T00:00:20Z",
"transactionsRoot": "5SXnkgZs4gKgt8t4GTnSeoV1i17zHn3xbZXSln9fd2E=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "2",
"size": "717",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "2",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "3",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "5",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "8",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "6",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "7",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "tNKSM8SZPvaEgBA4yUj9YayXYYuXnLCuHx5oWJwVOhw="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "32",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "35",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "33",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "34",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "36",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "39",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "37",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "38",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "9",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "CmgYAUEtZrU="
},
"oldValue": {
"bytes": "DeBFrisGZrU="
},
"ordinal": "11",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaHgOZLVtrQ="
},
"oldValue": {
"bytes": "CmgYAUEtZrQ="
},
"ordinal": "28",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "PkzJFSq+Qg=="
},
"oldValue": {
"bytes": "BFWK"
},
"ordinal": "30",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"beginOrdinal": "14",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"endOrdinal": "27",
"executedCode": true,
"gasChanges": [
{
"newValue": "500000",
"ordinal": "10",
"reason": "REASON_TX_INITIAL_BALANCE"
},
{
"newValue": "479000",
"oldValue": "500000",
"ordinal": "12",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "479000",
"ordinal": "15",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"newValue": "476380",
"oldValue": "478880",
"ordinal": "16",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "473780",
"oldValue": "476380",
"ordinal": "17",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "7262",
"oldValue": "478980",
"ordinal": "18",
"reason": "REASON_CALL"
},
{
"newValue": "464874",
"oldValue": "7262",
"ordinal": "25",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"oldValue": "464874",
"ordinal": "26",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
},
{
"oldValue": "464874",
"ordinal": "29",
"reason": "REASON_TX_LEFT_OVER_RETURNED"
}
],
"gasConsumed": "14126",
"gasLimit": "479000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "3",
"oldValue": "2",
"ordinal": "13"
}
]
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"addressDelegatesTo": "AAAAAAAAAAAAAAAAAAAAAAAAu7s=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "CmgYAUEtZrQ="
},
"oldValue": {
"bytes": "CmgYAUEtZrU="
},
"ordinal": "21",
"reason": "REASON_TRANSFER"
},
{
"address": "cDxLK9cMFp9XFxAcruVDKZ/JRsc=",
"newValue": {
"bytes": "DeC2s6dkAAI="
},
"oldValue": {
"bytes": "DeC2s6dkAAE="
},
"ordinal": "22",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "19",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"depth": 1,
"endOrdinal": "24",
"executedCode": true,
"gasChanges": [
{
"newValue": "459818",
"ordinal": "20",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "457612",
"ordinal": "23",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasConsumed": "2206",
"gasLimit": "459818",
"index": 2,
"parentIndex": 1,
"value": {
"bytes": "AQ=="
}
}
],
"endOrdinal": "31",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "dGpSiAA="
},
"gasUsed": "35126",
"hash": "TNmQOfjPE0jeas0eba+xGMaitDgyCOKmvNIBapciCiE=",
"nonce": "2",
"r": "llnySTXnLA5URm+RriiJTQ4gvkdUifLtVOIyBCpDFTw=",
"receipt": {
"cumulativeGasUsed": "35126",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "SsqOfVDTp1cpwvz0g4nLhIzrWRGwh0Jgz4l9GK/UHbE=",
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"v": "JQ=="
}
],
"ver": 4
}

View file

@ -0,0 +1,261 @@
{
"hash": "nM0MjYrd54p5L0zQNGpHV7fxetFL1VCejCvGELDLop8=",
"header": {
"baseFeePerGas": {
"bytes": "KFws9Q=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"gasUsed": "36800",
"hash": "nM0MjYrd54p5L0zQNGpHV7fxetFL1VCejCvGELDLop8=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk=",
"receiptRoot": "A2x9IEIO284ktQYhSLzoBWO0j9RTL7HAaLLJalMRcBk=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "vWvMYC8Hck2r4d77C3bO7nRWmEtpytSHv092DGpMjeI=",
"timestamp": "1970-01-01T00:00:30Z",
"transactionsRoot": "Bpo3ARUhIUuu9hH3yrkUNF2s22VFnHRDwdWxzM0pb5U=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "3",
"size": "817",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "2",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "3",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "5",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "8",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "6",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "7",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "Hlau1KLprrOkaDe4TNZdPEoXeJ4UGEL1PwUY/qq+/rk="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "25",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "28",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "26",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "27",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "29",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "32",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "30",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "31",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
}
],
"transactionTraces": [
{
"beginOrdinal": "9",
"calls": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"balanceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaCsTVRHwNQ="
},
"oldValue": {
"bytes": "DaHgOZLVtrQ="
},
"ordinal": "11",
"reason": "REASON_GAS_BUY"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": {
"bytes": "DaHJj9CWBHQ="
},
"oldValue": {
"bytes": "DaCsTVRHwNQ="
},
"ordinal": "21",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"newValue": {
"bytes": "PkzJFSvdwg=="
},
"oldValue": {
"bytes": "PkzJFSq+Qg=="
},
"ordinal": "23",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"beginOrdinal": "16",
"callType": "CALL",
"caller": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"codeChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"oldCode": "7wEAAAAAAAAAAAAAAAAAAAAAAAAAqqo=",
"oldHash": "6BOVhfT5ksAf8bXRTf8FXcJyKhFA0Cb18MtIsAn1Z9o=",
"ordinal": "15"
}
],
"endOrdinal": "19",
"gasChanges": [
{
"newValue": "500000",
"ordinal": "10",
"reason": "REASON_TX_INITIAL_BALANCE"
},
{
"newValue": "454000",
"oldValue": "500000",
"ordinal": "12",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "454000",
"ordinal": "17",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "454000",
"ordinal": "18",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
},
{
"newValue": "463200",
"oldValue": "454000",
"ordinal": "20",
"reason": "REASON_TX_REFUNDS"
},
{
"oldValue": "463200",
"ordinal": "22",
"reason": "REASON_TX_LEFT_OVER_RETURNED"
}
],
"gasLimit": "454000",
"index": 1,
"nonceChanges": [
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "4",
"oldValue": "3",
"ordinal": "13"
},
{
"address": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"newValue": "5",
"oldValue": "4",
"ordinal": "14"
}
]
}
],
"endOrdinal": "24",
"from": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"gasLimit": "500000",
"gasPrice": {
"bytes": "KFws9w=="
},
"gasUsed": "36800",
"hash": "vj4lUeVR72WjVf2OYUmz3Um0SH4d6qCao7cZRbBiaCI=",
"maxFeePerGas": {
"bytes": "ASoF8gA="
},
"maxPriorityFeePerGas": {
"bytes": "Ag=="
},
"nonce": "3",
"r": "3+bIOst9jVy0xdYLs7dP1KfP1XrtsXepmpY0W3XBKII=",
"receipt": {
"cumulativeGasUsed": "36800",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "UGXb+KJ8dparEBn0Wb2lX5fh1gB2+AiHfowzzmJWOkE=",
"setCodeAuthorizations": [
{
"authority": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"chainId": "AQ==",
"nonce": "4",
"r": "8RpcvObxuhW9b2SyJDTKMBtrqfyaAJlzS37bOLPTKIo=",
"s": "NMkyzSai5xkwNV4ttrTli9jZHXeB7hUwej28frcnTDw="
}
],
"status": "SUCCEEDED",
"to": "cVYrcZmYc9tbKG35V68ZnslGF/c=",
"type": "TRX_TYPE_SET_CODE"
}
],
"ver": 4
}

View file

@ -0,0 +1,450 @@
{
"hash": "pmFJOXlO1smEJbK4oUBqjZ0iFBpYsTq50dyNbEiZ+Mw=",
"header": {
"baseFeePerGas": {
"bytes": "Bw=="
},
"coinbase": "RV5aoYRpvGzO9JWUZFZmxYejpxs=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "pmFJOXlO1smEJbK4oUBqjZ0iFBpYsTq50dyNbEiZ+Mw=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "207938",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "nHyKL2uLMm9sBbmXgBbS0IWWvNldDJ8aquJBacj/BYg=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-10-29T10:11:12Z",
"transactionsRoot": "0yEw5Z71BzpX25P3pM6JtJzwwAKrFMgJGulCMo+tLw8=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "207938",
"size": "2807",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "X/E31LD9zUncowx89X5XigJtJ4k=",
"balanceChanges": [
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": {
"bytes": "BBz5LMZCX1A="
},
"oldValue": {
"bytes": "BCJNar1sH1A="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": {
"bytes": "BB7HvUaRnVA="
},
"oldValue": {
"bytes": "BBz5LMZCX1A="
},
"ordinal": "52",
"reason": "REASON_GAS_REFUND"
},
{
"address": "RV5aoYRpvGzO9JWUZFZmxYejpxs=",
"newValue": {
"bytes": "0c8D1KMdnac="
},
"oldValue": {
"bytes": "0ct+JyxYSWY="
},
"ordinal": "53",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"endOrdinal": "51",
"executedCode": true,
"failureReason": "execution reverted",
"gasChanges": [
{
"newValue": "263880",
"oldValue": "300000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "255906",
"oldValue": "255927",
"ordinal": "7",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "255616",
"oldValue": "255659",
"ordinal": "8",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "255327",
"oldValue": "255336",
"ordinal": "9",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "251104",
"oldValue": "251122",
"ordinal": "10",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "248417",
"oldValue": "250917",
"ordinal": "11",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "98417",
"oldValue": "251017",
"ordinal": "12",
"reason": "REASON_CALL"
},
{
"newValue": "102178",
"oldValue": "98417",
"ordinal": "50",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "162161",
"gasLimit": "263880",
"index": 1,
"input": "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",
"keccakPreimages": {
"28d9e8e57be8527d0679250d50e4fae027ae189be41776c0a4a2a0a42c2218da": "a16ebae5813bd19aa03287aa905d783611ff8b419ce30428f2da9457d9aa27630000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27890000000000000000000000000000000000000000000000000000000000004268",
"58ce8202536a0e9871f92a2e42a02c92ee563a7817d29ae23b734f34e7ddda6c": "b98cb1da4f9bd640879f0bbcb30a541c841634067d773af3d29743442dc991c168c434d99836a723",
"a16ebae5813bd19aa03287aa905d783611ff8b419ce30428f2da9457d9aa2763": "000000000000000000000000023b8381813a7d98d973ef70cfe3b6fd3eb5af8f0000000000000000000000000000000000000000000000000000000000000000fe7e16dbeb61a0da1615b2a5b44efb2dc9288a102d97b83968a814c67dcb8b08d525d4a8e0332b956f801a3fc3094f9edf480fcda1a4ea641e7c51240fd0b2da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249f000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b9aca0058ce8202536a0e9871f92a2e42a02c92ee563a7817d29ae23b734f34e7ddda6c",
"d525d4a8e0332b956f801a3fc3094f9edf480fcda1a4ea641e7c51240fd0b2da": "b61d27f60000000000000000000000007d773af3d29743442dc991c168c434d99836a723000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000b98cb1da4f9bd640879f0bbcb30a541c84163406ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000",
"fe7e16dbeb61a0da1615b2a5b44efb2dc9288a102d97b83968a814c67dcb8b08": "9406cc6185a346906296840746125a0e449764545fbfb9cf000000000000000000000000762bae358067d954c3d5fd2221c8df850b7d2dea0000000000000000000000000000000000000000000000000000000000000000"
},
"nonceChanges": [
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": "5",
"oldValue": "4",
"ordinal": "4"
}
],
"returnData": "IgJmtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0FBMTMgaW5pdENvZGUgZmFpbGVkIG9yIE9PRwAAAAAA",
"stateReverted": true,
"statusFailed": true,
"statusReverted": true,
"storageChanges": [
{
"address": "X/E31LD9zUncowx89X5XigJtJ4k=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"ordinal": "6"
}
]
},
{
"address": "f8mEMOrtu2Bws1s515hyUEkIg0g=",
"beginOrdinal": "13",
"callType": "CALL",
"caller": "X/E31LD9zUncowx89X5XigJtJ4k=",
"depth": 1,
"endOrdinal": "49",
"executedCode": true,
"gasChanges": [
{
"newValue": "149459",
"oldValue": "149480",
"ordinal": "14",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "146827",
"oldValue": "149327",
"ordinal": "15",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "2294",
"oldValue": "149427",
"ordinal": "16",
"reason": "REASON_CALL"
},
{
"newValue": "3867",
"oldValue": "2294",
"ordinal": "48",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "146239",
"gasLimit": "150000",
"index": 2,
"input": "Vw4aNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiUBsxhhaNGkGKWhAdGEloORJdkVF+/uc8AAAAAAAAAAAAAAAB2K641gGfZVMPV/SIhyN+FC30t6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentIndex": 1,
"returnData": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"stateReverted": true
},
{
"address": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"beginOrdinal": "17",
"callType": "CALL",
"caller": "f8mEMOrtu2Bws1s515hyUEkIg0g=",
"depth": 2,
"endOrdinal": "47",
"executedCode": true,
"failureReason": "execution reverted",
"gasChanges": [
{
"newValue": "143783",
"oldValue": "144179",
"ordinal": "18",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "136634",
"oldValue": "137052",
"ordinal": "19",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "103642",
"oldValue": "136186",
"ordinal": "20",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "1619",
"oldValue": "103642",
"ordinal": "21",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "1578",
"oldValue": "1581",
"ordinal": "46",
"reason": "REASON_RETURN_DATA_COPY"
}
],
"gasConsumed": "142960",
"gasLimit": "144533",
"index": 3,
"input": "X7+5zwAAAAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"keccakPreimages": {
"b20e9a365b254be6244c7505a127ea9cd797608e023ebff1d696fef26de7ed6c": "60806040526040516107c13803806107c183398101604081905261002291610321565b61002e82826000610035565b505061043e565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d0838360405180606001604052806027815260200161079a602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100711760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103ef565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b8152600401610148919061040b565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b838111156100645750506000910152565b6000806040838503121561033457600080fd5b82516001600160a01b038116811461034b57600080fd5b60208401519092506001600160401b038082111561036857600080fd5b818501915085601f83011261037c57600080fd5b81518181111561038e5761038e6102df565b604051601f8201601f19908116603f011681019083821181831017156103b6576103b66102df565b816040528281528860208487010111156103cf57600080fd5b6103e08360208301602088016102f5565b80955050505050509250929050565b600082516104018184602087016102f5565b9190910192915050565b602081526000825180602084015261042a8160408501602087016102f5565b601f01601f19169190910160400192915050565b61034d8061044d6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610074565b6100b9565b565b606061004e83836040518060600160405280602781526020016102f1602791396100dd565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156100d8573d6000f35b3d6000fd5b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516101079190610283565b600060405180830381855af49150503d8060008114610142576040519150601f19603f3d011682016040523d82523d6000602084013e610147565b606091505b509150915061015886838387610162565b9695505050505050565b606083156101fd5782516000036101f65773ffffffffffffffffffffffffffffffffffffffff85163b6101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610207565b610207838361020f565b949350505050565b81511561021f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed919061029f565b60005b8381101561026e578181015183820152602001610256565b8381111561027d576000848401525b50505050565b60008251610295818460208701610253565b9190910192915050565b60208152600082518060208401526102be816040850160208701610253565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201cd78ab6a31213989661cff2d7d05fc9b9c38b1a848e8249e2e398659a9eb7e364736f6c634300080f0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000008abb13360b87be5eeb1b98647a016add927a136c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000762bae358067d954c3d5fd2221c8df850b7d2dea00000000000000000000000000000000000000000000000000000000",
"c295fa357a42b337dcef09d6023b8381813a7d98d973ef70cfe3b6fd3eb5af8f": "ff9406cc6185a346906296840746125a0e449764540000000000000000000000000000000000000000000000000000000000000000b20e9a365b254be6244c7505a127ea9cd797608e023ebff1d696fef26de7ed6c"
},
"parentIndex": 2,
"stateReverted": true,
"statusFailed": true,
"statusReverted": true
},
{
"accountCreations": [
{
"account": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"ordinal": "24"
}
],
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"beginOrdinal": "22",
"callType": "CREATE",
"caller": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"depth": 3,
"endOrdinal": "45",
"failureReason": "contract creation code storage out of gas",
"gasChanges": [
{
"newValue": "101946",
"oldValue": "101982",
"ordinal": "26",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "75098",
"oldValue": "76223",
"ordinal": "28",
"reason": "REASON_EVENT_LOG"
},
{
"newValue": "74928",
"oldValue": "74943",
"ordinal": "30",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "1163",
"oldValue": "74537",
"ordinal": "31",
"reason": "REASON_DELEGATE_CALL"
},
{
"newValue": "48323",
"oldValue": "1163",
"ordinal": "42",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "47809",
"oldValue": "47921",
"ordinal": "43",
"reason": "REASON_CODE_COPY"
},
{
"oldValue": "47806",
"ordinal": "44",
"reason": "REASON_FAILED_EXECUTION"
}
],
"gasConsumed": "102023",
"gasLimit": "102023",
"index": 4,
"logs": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"ordinal": "29",
"topics": [
"vHzXWiDuJ/2a3rqzIEH3VSFNvGv/qQzAIls52i5cLTs=",
"AAAAAAAAAAAAAAAAirsTNguHvl7rG5hkegFq3ZJ6E2w="
]
}
],
"nonceChanges": [
{
"address": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"newValue": "3",
"oldValue": "2",
"ordinal": "23"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"newValue": "1",
"ordinal": "25"
}
],
"parentIndex": 3,
"stateReverted": true,
"statusFailed": true,
"storageChanges": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "NgiUoTuhoyEGZ8goSS25jco+IHbMNzWpIKPKUF04K7w=",
"newValue": "AAAAAAAAAAAAAAAAirsTNguHvl7rG5hkegFq3ZJ6E2w=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "27"
}
]
},
{
"address": "irsTNguHvl7rG5hkegFq3ZJ6E2w=",
"beginOrdinal": "32",
"callType": "DELEGATE",
"caller": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"depth": 4,
"endOrdinal": "41",
"executedCode": true,
"gasChanges": [
{
"newValue": "48475",
"oldValue": "49975",
"ordinal": "36",
"reason": "REASON_EVENT_LOG"
},
{
"newValue": "47173",
"oldValue": "48179",
"ordinal": "39",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "26114",
"gasLimit": "73274",
"index": 5,
"input": "xNZt6AAAAAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3q",
"logs": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"index": 1,
"ordinal": "37",
"topics": [
"R+Vcduem8f2JlqHagAjB6ilpnMo157zQV/LewxO25d4=",
"AAAAAAAAAAAAAAAAX/E31LD9zUncowx89X5XigJtJ4k=",
"AAAAAAAAAAAAAAAAdiuuNYBn2VTD1f0iIcjfhQt9Leo="
]
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"index": 2,
"ordinal": "40",
"topics": [
"fya4P/luHytqaC8TOFL2eYoJxGXalZIUYM77OEdAJJg="
]
}
],
"parentIndex": 4,
"stateReverted": true,
"storageChanges": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "33"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"ordinal": "34"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAQE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQE=",
"ordinal": "35"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAAE=",
"oldValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAQE=",
"ordinal": "38"
}
]
}
],
"endOrdinal": "54",
"from": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"gasLimit": "300000",
"gasPrice": {
"bytes": "ASoF8gA="
},
"gasUsed": "198281",
"hash": "4t4kgzDQkJ+jBDUJgCn1J0QkxepFeDbojFN7R4lupdY=",
"input": "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",
"nonce": "4",
"r": "SDMAY2eUIzuof42iuJbp7ICVqnBmYRZTwaymE2ozrcA=",
"receipt": {
"cumulativeGasUsed": "198281",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "bk+EAD3UiLUfxRzH3Bbv5y8N7rhKESSMRwXu3bqryaQ=",
"status": "REVERTED",
"to": "X/E31LD9zUncowx89X5XigJtJ4k=",
"v": "hPM="
}
],
"ver": 3
}

View file

@ -0,0 +1,450 @@
{
"hash": "pmFJOXlO1smEJbK4oUBqjZ0iFBpYsTq50dyNbEiZ+Mw=",
"header": {
"baseFeePerGas": {
"bytes": "Bw=="
},
"coinbase": "RV5aoYRpvGzO9JWUZFZmxYejpxs=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "pmFJOXlO1smEJbK4oUBqjZ0iFBpYsTq50dyNbEiZ+Mw=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "207938",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "nHyKL2uLMm9sBbmXgBbS0IWWvNldDJ8aquJBacj/BYg=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-10-29T10:11:12Z",
"transactionsRoot": "0yEw5Z71BzpX25P3pM6JtJzwwAKrFMgJGulCMo+tLw8=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "207938",
"size": "2807",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "X/E31LD9zUncowx89X5XigJtJ4k=",
"balanceChanges": [
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": {
"bytes": "BBz5LMZCX1A="
},
"oldValue": {
"bytes": "BCJNar1sH1A="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": {
"bytes": "BB7HvUaRnVA="
},
"oldValue": {
"bytes": "BBz5LMZCX1A="
},
"ordinal": "52",
"reason": "REASON_GAS_REFUND"
},
{
"address": "RV5aoYRpvGzO9JWUZFZmxYejpxs=",
"newValue": {
"bytes": "0c8D1KMdnac="
},
"oldValue": {
"bytes": "0ct+JyxYSWY="
},
"ordinal": "53",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"endOrdinal": "51",
"executedCode": true,
"failureReason": "execution reverted",
"gasChanges": [
{
"newValue": "263880",
"oldValue": "300000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "255906",
"oldValue": "255927",
"ordinal": "7",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "255616",
"oldValue": "255659",
"ordinal": "8",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "255327",
"oldValue": "255336",
"ordinal": "9",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "251104",
"oldValue": "251122",
"ordinal": "10",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "248417",
"oldValue": "250917",
"ordinal": "11",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "98417",
"oldValue": "251017",
"ordinal": "12",
"reason": "REASON_CALL"
},
{
"newValue": "102178",
"oldValue": "98417",
"ordinal": "50",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "162161",
"gasLimit": "263880",
"index": 1,
"input": "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",
"keccakPreimages": {
"28d9e8e57be8527d0679250d50e4fae027ae189be41776c0a4a2a0a42c2218da": "a16ebae5813bd19aa03287aa905d783611ff8b419ce30428f2da9457d9aa27630000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27890000000000000000000000000000000000000000000000000000000000004268",
"58ce8202536a0e9871f92a2e42a02c92ee563a7817d29ae23b734f34e7ddda6c": "b98cb1da4f9bd640879f0bbcb30a541c841634067d773af3d29743442dc991c168c434d99836a723",
"a16ebae5813bd19aa03287aa905d783611ff8b419ce30428f2da9457d9aa2763": "000000000000000000000000023b8381813a7d98d973ef70cfe3b6fd3eb5af8f0000000000000000000000000000000000000000000000000000000000000000fe7e16dbeb61a0da1615b2a5b44efb2dc9288a102d97b83968a814c67dcb8b08d525d4a8e0332b956f801a3fc3094f9edf480fcda1a4ea641e7c51240fd0b2da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000249f000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b9aca0058ce8202536a0e9871f92a2e42a02c92ee563a7817d29ae23b734f34e7ddda6c",
"d525d4a8e0332b956f801a3fc3094f9edf480fcda1a4ea641e7c51240fd0b2da": "b61d27f60000000000000000000000007d773af3d29743442dc991c168c434d99836a723000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044095ea7b3000000000000000000000000b98cb1da4f9bd640879f0bbcb30a541c84163406ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000",
"fe7e16dbeb61a0da1615b2a5b44efb2dc9288a102d97b83968a814c67dcb8b08": "9406cc6185a346906296840746125a0e449764545fbfb9cf000000000000000000000000762bae358067d954c3d5fd2221c8df850b7d2dea0000000000000000000000000000000000000000000000000000000000000000"
},
"nonceChanges": [
{
"address": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"newValue": "5",
"oldValue": "4",
"ordinal": "4"
}
],
"returnData": "IgJmtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0FBMTMgaW5pdENvZGUgZmFpbGVkIG9yIE9PRwAAAAAA",
"stateReverted": true,
"statusFailed": true,
"statusReverted": true,
"storageChanges": [
{
"address": "X/E31LD9zUncowx89X5XigJtJ4k=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"ordinal": "6"
}
]
},
{
"address": "f8mEMOrtu2Bws1s515hyUEkIg0g=",
"beginOrdinal": "13",
"callType": "CALL",
"caller": "X/E31LD9zUncowx89X5XigJtJ4k=",
"depth": 1,
"endOrdinal": "49",
"executedCode": true,
"gasChanges": [
{
"newValue": "149459",
"oldValue": "149480",
"ordinal": "14",
"reason": "REASON_CALL_DATA_COPY"
},
{
"newValue": "146827",
"oldValue": "149327",
"ordinal": "15",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "2294",
"oldValue": "149427",
"ordinal": "16",
"reason": "REASON_CALL"
},
{
"newValue": "3867",
"oldValue": "2294",
"ordinal": "48",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "146239",
"gasLimit": "150000",
"index": 2,
"input": "Vw4aNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFiUBsxhhaNGkGKWhAdGEloORJdkVF+/uc8AAAAAAAAAAAAAAAB2K641gGfZVMPV/SIhyN+FC30t6gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentIndex": 1,
"returnData": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"stateReverted": true
},
{
"address": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"beginOrdinal": "17",
"callType": "CALL",
"caller": "f8mEMOrtu2Bws1s515hyUEkIg0g=",
"depth": 2,
"endOrdinal": "47",
"executedCode": true,
"failureReason": "execution reverted",
"gasChanges": [
{
"newValue": "143783",
"oldValue": "144179",
"ordinal": "18",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "136634",
"oldValue": "137052",
"ordinal": "19",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "103642",
"oldValue": "136186",
"ordinal": "20",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "1619",
"oldValue": "103642",
"ordinal": "21",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "1578",
"oldValue": "1581",
"ordinal": "46",
"reason": "REASON_RETURN_DATA_COPY"
}
],
"gasConsumed": "142960",
"gasLimit": "144533",
"index": 3,
"input": "X7+5zwAAAAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"keccakPreimages": {
"b20e9a365b254be6244c7505a127ea9cd797608e023ebff1d696fef26de7ed6c": "60806040526040516107c13803806107c183398101604081905261002291610321565b61002e82826000610035565b505061043e565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d0838360405180606001604052806027815260200161079a602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100711760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103ef565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b8152600401610148919061040b565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b838111156100645750506000910152565b6000806040838503121561033457600080fd5b82516001600160a01b038116811461034b57600080fd5b60208401519092506001600160401b038082111561036857600080fd5b818501915085601f83011261037c57600080fd5b81518181111561038e5761038e6102df565b604051601f8201601f19908116603f011681019083821181831017156103b6576103b66102df565b816040528281528860208487010111156103cf57600080fd5b6103e08360208301602088016102f5565b80955050505050509250929050565b600082516104018184602087016102f5565b9190910192915050565b602081526000825180602084015261042a8160408501602087016102f5565b601f01601f19169190910160400192915050565b61034d8061044d6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610074565b6100b9565b565b606061004e83836040518060600160405280602781526020016102f1602791396100dd565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156100d8573d6000f35b3d6000fd5b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516101079190610283565b600060405180830381855af49150503d8060008114610142576040519150601f19603f3d011682016040523d82523d6000602084013e610147565b606091505b509150915061015886838387610162565b9695505050505050565b606083156101fd5782516000036101f65773ffffffffffffffffffffffffffffffffffffffff85163b6101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610207565b610207838361020f565b949350505050565b81511561021f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ed919061029f565b60005b8381101561026e578181015183820152602001610256565b8381111561027d576000848401525b50505050565b60008251610295818460208701610253565b9190910192915050565b60208152600082518060208401526102be816040850160208701610253565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201cd78ab6a31213989661cff2d7d05fc9b9c38b1a848e8249e2e398659a9eb7e364736f6c634300080f0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000008abb13360b87be5eeb1b98647a016add927a136c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000762bae358067d954c3d5fd2221c8df850b7d2dea00000000000000000000000000000000000000000000000000000000",
"c295fa357a42b337dcef09d6023b8381813a7d98d973ef70cfe3b6fd3eb5af8f": "ff9406cc6185a346906296840746125a0e449764540000000000000000000000000000000000000000000000000000000000000000b20e9a365b254be6244c7505a127ea9cd797608e023ebff1d696fef26de7ed6c"
},
"parentIndex": 2,
"stateReverted": true,
"statusFailed": true,
"statusReverted": true
},
{
"accountCreations": [
{
"account": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"ordinal": "24"
}
],
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"beginOrdinal": "22",
"callType": "CREATE",
"caller": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"depth": 3,
"endOrdinal": "45",
"failureReason": "contract creation code storage out of gas",
"gasChanges": [
{
"newValue": "101946",
"oldValue": "101982",
"ordinal": "26",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "75098",
"oldValue": "76223",
"ordinal": "28",
"reason": "REASON_EVENT_LOG"
},
{
"newValue": "74928",
"oldValue": "74943",
"ordinal": "30",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "1163",
"oldValue": "74537",
"ordinal": "31",
"reason": "REASON_DELEGATE_CALL"
},
{
"newValue": "48323",
"oldValue": "1163",
"ordinal": "42",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "47809",
"oldValue": "47921",
"ordinal": "43",
"reason": "REASON_CODE_COPY"
},
{
"oldValue": "47806",
"ordinal": "44",
"reason": "REASON_FAILED_EXECUTION"
}
],
"gasConsumed": "102023",
"gasLimit": "102023",
"index": 4,
"logs": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"ordinal": "29",
"topics": [
"vHzXWiDuJ/2a3rqzIEH3VSFNvGv/qQzAIls52i5cLTs=",
"AAAAAAAAAAAAAAAAirsTNguHvl7rG5hkegFq3ZJ6E2w="
]
}
],
"nonceChanges": [
{
"address": "lAbMYYWjRpBiloQHRhJaDkSXZFQ=",
"newValue": "3",
"oldValue": "2",
"ordinal": "23"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"newValue": "1",
"ordinal": "25"
}
],
"parentIndex": 3,
"stateReverted": true,
"statusFailed": true,
"storageChanges": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "NgiUoTuhoyEGZ8goSS25jco+IHbMNzWpIKPKUF04K7w=",
"newValue": "AAAAAAAAAAAAAAAAirsTNguHvl7rG5hkegFq3ZJ6E2w=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "27"
}
]
},
{
"address": "irsTNguHvl7rG5hkegFq3ZJ6E2w=",
"beginOrdinal": "32",
"callType": "DELEGATE",
"caller": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"depth": 4,
"endOrdinal": "41",
"executedCode": true,
"gasChanges": [
{
"newValue": "48475",
"oldValue": "49975",
"ordinal": "36",
"reason": "REASON_EVENT_LOG"
},
{
"newValue": "47173",
"oldValue": "48179",
"ordinal": "39",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "26114",
"gasLimit": "73274",
"index": 5,
"input": "xNZt6AAAAAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3q",
"logs": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"index": 1,
"ordinal": "37",
"topics": [
"R+Vcduem8f2JlqHagAjB6ilpnMo157zQV/LewxO25d4=",
"AAAAAAAAAAAAAAAAX/E31LD9zUncowx89X5XigJtJ4k=",
"AAAAAAAAAAAAAAAAdiuuNYBn2VTD1f0iIcjfhQt9Leo="
]
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"index": 2,
"ordinal": "40",
"topics": [
"fya4P/luHytqaC8TOFL2eYoJxGXalZIUYM77OEdAJJg="
]
}
],
"parentIndex": 4,
"stateReverted": true,
"storageChanges": [
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "33"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"ordinal": "34"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAQE=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQE=",
"ordinal": "35"
},
{
"address": "AjuDgYE6fZjZc+9wz+O2/T61r48=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAAE=",
"oldValue": "AAAAAAAAAAAAAHYrrjWAZ9lUw9X9IiHI34ULfS3qAQE=",
"ordinal": "38"
}
]
}
],
"endOrdinal": "54",
"from": "diuuNYBn2VTD1f0iIcjfhQt9Leo=",
"gasLimit": "300000",
"gasPrice": {
"bytes": "ASoF8gA="
},
"gasUsed": "198281",
"hash": "4t4kgzDQkJ+jBDUJgCn1J0QkxepFeDbojFN7R4lupdY=",
"input": "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",
"nonce": "4",
"r": "SDMAY2eUIzuof42iuJbp7ICVqnBmYRZTwaymE2ozrcA=",
"receipt": {
"cumulativeGasUsed": "198281",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "bk+EAD3UiLUfxRzH3Bbv5y8N7rhKESSMRwXu3bqryaQ=",
"status": "REVERTED",
"to": "X/E31LD9zUncowx89X5XigJtJ4k=",
"v": "hPM="
}
],
"ver": 3
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,164 @@
{
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
"header": {
"baseFeePerGas": {
"bytes": "DQ=="
},
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3727495",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "aYf8zdg87hj7kTMGYReWUn8vvkT0i92fQ04NAsNDcDc=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-06-19T23:23:48Z",
"transactionsRoot": "bDCtoar4SKuDMt3K7Ay0vDV8FJj/S9YTAtfuy7yJYL0=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "3727495",
"size": "723",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"balanceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluWAKJ10="
},
"oldValue": {
"bytes": "B5sluWe3fF0="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluWUI8jk="
},
"oldValue": {
"bytes": "B5sluWAKJ10="
},
"ordinal": "11",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"newValue": {
"bytes": "AecopRVH6f5hufY="
},
"oldValue": {
"bytes": "AecopRVH6fvBC6c="
},
"ordinal": "12",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"endOrdinal": "10",
"executedCode": true,
"gasChanges": [
{
"newValue": "178428",
"oldValue": "200000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "130141",
"oldValue": "131897",
"ordinal": "8",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "48293",
"gasLimit": "178428",
"index": 1,
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"keccakPreimages": {
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000"
},
"logs": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"ordinal": "9",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"nonceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": "6",
"oldValue": "5",
"ordinal": "4"
}
],
"storageChanges": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "6"
},
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "7"
}
]
}
],
"endOrdinal": "13",
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"gasLimit": "200000",
"gasPrice": {
"bytes": "AoQ="
},
"gasUsed": "69865",
"hash": "tF3PNXHZNWA+icLD8DyDTxT8x76iGVd8sDejy7wEQx8=",
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"nonce": "5",
"r": "Xww4NKZlcXSDEHF8P5UnXU9PLqL6aBoOU5VFipWpVaM=",
"receipt": {
"cumulativeGasUsed": "69865",
"logs": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"ordinal": "9",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAIAAAAAAAAAAAAIAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA=="
},
"s": "BOdJVNNAB7fPBAA48slaL2uQd1vOwb423lDacpucotM=",
"status": "SUCCEEDED",
"to": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"v": "AVRtcg=="
}
],
"ver": 3
}

View file

@ -0,0 +1,164 @@
{
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
"header": {
"baseFeePerGas": {
"bytes": "DQ=="
},
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "SKLPDUOjSrOGLDSmQ92rvI79Tx7rbpi+MnMdw1ta0jQ=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3727495",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "aYf8zdg87hj7kTMGYReWUn8vvkT0i92fQ04NAsNDcDc=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-06-19T23:23:48Z",
"transactionsRoot": "bDCtoar4SKuDMt3K7Ay0vDV8FJj/S9YTAtfuy7yJYL0=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "3727495",
"size": "723",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"balanceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluWAKJ10="
},
"oldValue": {
"bytes": "B5sluWe3fF0="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluWUI8jk="
},
"oldValue": {
"bytes": "B5sluWAKJ10="
},
"ordinal": "11",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"newValue": {
"bytes": "AecopRVH6f5hufY="
},
"oldValue": {
"bytes": "AecopRVH6fvBC6c="
},
"ordinal": "12",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"endOrdinal": "10",
"executedCode": true,
"gasChanges": [
{
"newValue": "178428",
"oldValue": "200000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "130141",
"oldValue": "131897",
"ordinal": "8",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "48293",
"gasLimit": "178428",
"index": 1,
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"keccakPreimages": {
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000"
},
"logs": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"ordinal": "9",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"nonceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": "6",
"oldValue": "5",
"ordinal": "4"
}
],
"storageChanges": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "6"
},
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "7"
}
]
}
],
"endOrdinal": "13",
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"gasLimit": "200000",
"gasPrice": {
"bytes": "AoQ="
},
"gasUsed": "69865",
"hash": "tF3PNXHZNWA+icLD8DyDTxT8x76iGVd8sDejy7wEQx8=",
"input": "QMEPGQAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"nonce": "5",
"r": "Xww4NKZlcXSDEHF8P5UnXU9PLqL6aBoOU5VFipWpVaM=",
"receipt": {
"cumulativeGasUsed": "69865",
"logs": [
{
"address": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPo=",
"ordinal": "9",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAIAAAAAAAAAAAAIAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAA=="
},
"s": "BOdJVNNAB7fPBAA48slaL2uQd1vOwb423lDacpucotM=",
"status": "SUCCEEDED",
"to": "3Z+V4sEFOnYIm1AXgpuyMwy2rkc=",
"v": "AVRtcg=="
}
],
"ver": 3
}

View file

@ -0,0 +1,165 @@
{
"context": {
"baseFeePerGas": "13",
"difficulty": "0",
"gasLimit": "30000000",
"miner": "0x0000006916a87b82333f4245046623b23794c65c",
"number": "3727495",
"timestamp": "1687217028"
},
"genesis": {
"alloc": {
"0x0000006916a87b82333f4245046623b23794c65c": {
"balance": "0x1e728a51547e9fbc10ba7",
"nonce": "5"
},
"0xdd9f95e2c1053a76089b5017829bb2330cb6ae47": {
"balance": "0x0",
"code": "0x60003560e01c8063095ea7b31461005c57806340c10f1914610062578063a9059cbb146100d957806323b872dd146100df57806318160ddd1461015d57806370a082311461016e5763dd62ed3e1461018e573461018e5760006000f35b60006000f35b60043573ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000602435856000526040600020805482018083119155600254820180831190600255600154331415171761018e57600052a360006000f35b60006000f35b60043573ffffffffffffffffffffffffffffffffffffffff16337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000602435856000526040600020805482018083119155336000526040600020805483900380841091553417176101535760006000fd5b600052a360206000f35b3461018e5760025460005260206000f35b3461018e5760043560005260406000205460005260206000f35b60006000f35b60006000fd",
"nonce": "1",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b7",
"0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000000000",
"0xbb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
},
"0xeb3d3d616f3e43e9ed361edd2d0e644d18d179b7": {
"balance": "0x79b25b967b77c5d",
"nonce": "5"
}
},
"baseFeePerGas": "14",
"config": {
"berlinBlock": 0,
"byzantiumBlock": 0,
"cancunTime": 1706655072,
"chainId": 11155111,
"constantinopleBlock": 0,
"daoForkSupport": true,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"ethash": {},
"homesteadBlock": 0,
"istanbulBlock": 0,
"londonBlock": 0,
"mergeNetsplitBlock": 1735371,
"muirGlacierBlock": 0,
"petersburgBlock": 0,
"shanghaiTime": 1677557088,
"terminalTotalDifficulty": 17000000000000000,
"terminalTotalDifficultyPassed": true
},
"difficulty": "0",
"extraData": "0x6769756c696f207761732068657265",
"gasLimit": "30000000",
"hash": "0xff41623ef4e84cea4e957676a0b7e5868f1480e343ad533914133c448157764c",
"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"
}

View file

@ -0,0 +1,229 @@
{
"hash": "IPNVZgyygE0HzwAtWVr0ghv9lxf+N0C45NHNCWv5Oyg=",
"header": {
"baseFeePerGas": {
"bytes": "Cqc="
},
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "IPNVZgyygE0HzwAtWVr0ghv9lxf+N0C45NHNCWv5Oyg=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3733424",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "f7pk/8VV6aRiIPz5tngJXJEAkJokLyPKgV4W7ujmnP8=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-06-20T21:02:36Z",
"transactionsRoot": "qGt8M+EeGIjvA3CmiVt41zk8Ap6NokQ0xxIVjv/5oCY=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "3733424",
"size": "673",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"balanceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluJ/kW34="
},
"oldValue": {
"bytes": "B5sluMJIrb4="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluLmEBFg="
},
"oldValue": {
"bytes": "B5sluJ/kW34="
},
"ordinal": "20",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"newValue": {
"bytes": "Aecpt9WGjDRS35o="
},
"oldValue": {
"bytes": "Aecpt9WGjDPX8TY="
},
"ordinal": "21",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"endOrdinal": "19",
"executedCode": true,
"gasChanges": [
{
"newValue": "178664",
"oldValue": "200000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "175937",
"oldValue": "178437",
"ordinal": "6",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "2748",
"oldValue": "178537",
"ordinal": "7",
"reason": "REASON_CALL"
},
{
"newValue": "173596",
"oldValue": "2748",
"ordinal": "10",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "2677",
"oldValue": "171474",
"ordinal": "11",
"reason": "REASON_CALL"
},
{
"newValue": "144210",
"oldValue": "2677",
"ordinal": "18",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "34454",
"gasLimit": "178664",
"index": 1,
"input": "ASy2ctjBKKzAgl3Lr2HkOik6WlJ2",
"nonceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": "28",
"oldValue": "27",
"ordinal": "4"
}
]
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"beginOrdinal": "8",
"callType": "CALL",
"caller": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"depth": 1,
"endOrdinal": "9",
"executedCode": true,
"gasConsumed": "2338",
"gasLimit": "173186",
"index": 2,
"input": "cKCCMQAAAAAAAAAAAAAAAFSaMtV8NdNoEd5qRiWWlwyD6psj",
"keccakPreimages": {
"dfecc5e296fad583cf3240a878ef92ffb0955f284f0216e1670f60c2279e53ba": "000000000000000000000000549a32d57c35d36811de6a462596970c83ea9b230000000000000000000000000000000000000000000000000000000000000000"
},
"parentIndex": 1,
"returnData": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY="
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"beginOrdinal": "12",
"callType": "CALL",
"caller": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"depth": 1,
"endOrdinal": "17",
"executedCode": true,
"gasChanges": [
{
"newValue": "141533",
"oldValue": "143289",
"ordinal": "15",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "27164",
"gasLimit": "168697",
"index": 3,
"input": "qQWcuwAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"keccakPreimages": {
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000",
"dfecc5e296fad583cf3240a878ef92ffb0955f284f0216e1670f60c2279e53ba": "000000000000000000000000549a32d57c35d36811de6a462596970c83ea9b230000000000000000000000000000000000000000000000000000000000000000"
},
"logs": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "16",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAVJoy1Xw102gR3mpGJZaXDIPqmyM=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"parentIndex": 1,
"storageChanges": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "13"
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"key": "3+zF4pb61YPPMkCoeO+S/7CVXyhPAhbhZw9gwieeU7o=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "14"
}
]
}
],
"endOrdinal": "22",
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"gasLimit": "200000",
"gasPrice": {
"bytes": "C0U="
},
"gasUsed": "50990",
"hash": "E2euJ14Brg/hLbsRFBismbxzpqbwfKtvvBhA1ZB2cD8=",
"input": "ASy2ctjBKKzAgl3Lr2HkOik6WlJ2",
"nonce": "27",
"r": "/n8N4OD9KzN9vfG0/fl6FERX+FAklxcusTRKtuJaaAY=",
"receipt": {
"cumulativeGasUsed": "50990",
"logs": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "16",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAVJoy1Xw102gR3mpGJZaXDIPqmyM=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "C4wVifsU3LuR1ToPisse4e3pAciXSe4Vv+hsa+7HBS4=",
"status": "SUCCEEDED",
"to": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"v": "Gw=="
}
],
"ver": 3
}

View file

@ -0,0 +1,229 @@
{
"hash": "IPNVZgyygE0HzwAtWVr0ghv9lxf+N0C45NHNCWv5Oyg=",
"header": {
"baseFeePerGas": {
"bytes": "Cqc="
},
"coinbase": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "IPNVZgyygE0HzwAtWVr0ghv9lxf+N0C45NHNCWv5Oyg=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "3733424",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "f7pk/8VV6aRiIPz5tngJXJEAkJokLyPKgV4W7ujmnP8=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2023-06-20T21:02:36Z",
"transactionsRoot": "qGt8M+EeGIjvA3CmiVt41zk8Ap6NokQ0xxIVjv/5oCY=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "3733424",
"size": "673",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"address": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"balanceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluJ/kW34="
},
"oldValue": {
"bytes": "B5sluMJIrb4="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": {
"bytes": "B5sluLmEBFg="
},
"oldValue": {
"bytes": "B5sluJ/kW34="
},
"ordinal": "20",
"reason": "REASON_GAS_REFUND"
},
{
"address": "AAAAaRaoe4IzP0JFBGYjsjeUxlw=",
"newValue": {
"bytes": "Aecpt9WGjDRS35o="
},
"oldValue": {
"bytes": "Aecpt9WGjDPX8TY="
},
"ordinal": "21",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CALL",
"caller": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"endOrdinal": "19",
"executedCode": true,
"gasChanges": [
{
"newValue": "178664",
"oldValue": "200000",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "175937",
"oldValue": "178437",
"ordinal": "6",
"reason": "REASON_STATE_COLD_ACCESS"
},
{
"newValue": "2748",
"oldValue": "178537",
"ordinal": "7",
"reason": "REASON_CALL"
},
{
"newValue": "173596",
"oldValue": "2748",
"ordinal": "10",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "2677",
"oldValue": "171474",
"ordinal": "11",
"reason": "REASON_CALL"
},
{
"newValue": "144210",
"oldValue": "2677",
"ordinal": "18",
"reason": "REASON_REFUND_AFTER_EXECUTION"
}
],
"gasConsumed": "34454",
"gasLimit": "178664",
"index": 1,
"input": "ASy2ctjBKKzAgl3Lr2HkOik6WlJ2",
"nonceChanges": [
{
"address": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"newValue": "28",
"oldValue": "27",
"ordinal": "4"
}
]
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"beginOrdinal": "8",
"callType": "CALL",
"caller": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"depth": 1,
"endOrdinal": "9",
"executedCode": true,
"gasConsumed": "2338",
"gasLimit": "173186",
"index": 2,
"input": "cKCCMQAAAAAAAAAAAAAAAFSaMtV8NdNoEd5qRiWWlwyD6psj",
"keccakPreimages": {
"dfecc5e296fad583cf3240a878ef92ffb0955f284f0216e1670f60c2279e53ba": "000000000000000000000000549a32d57c35d36811de6a462596970c83ea9b230000000000000000000000000000000000000000000000000000000000000000"
},
"parentIndex": 1,
"returnData": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY="
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"beginOrdinal": "12",
"callType": "CALL",
"caller": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"depth": 1,
"endOrdinal": "17",
"executedCode": true,
"gasChanges": [
{
"newValue": "141533",
"oldValue": "143289",
"ordinal": "15",
"reason": "REASON_EVENT_LOG"
}
],
"gasConsumed": "27164",
"gasLimit": "168697",
"index": 3,
"input": "qQWcuwAAAAAAAAAAAAAAAOs9PWFvPkPp7TYe3S0OZE0Y0Xm3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"keccakPreimages": {
"bb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b70000000000000000000000000000000000000000000000000000000000000000",
"dfecc5e296fad583cf3240a878ef92ffb0955f284f0216e1670f60c2279e53ba": "000000000000000000000000549a32d57c35d36811de6a462596970c83ea9b230000000000000000000000000000000000000000000000000000000000000000"
},
"logs": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "16",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAVJoy1Xw102gR3mpGJZaXDIPqmyM=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"parentIndex": 1,
"storageChanges": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"key": "u2X/egOxG3kUOwEdoN58Z/bZu49X3yOB2I1QPNsHsLY=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "13"
},
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"key": "3+zF4pb61YPPMkCoeO+S/7CVXyhPAhbhZw9gwieeU7o=",
"newValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "14"
}
]
}
],
"endOrdinal": "22",
"from": "6z09YW8+Q+ntNh7dLQ5kTRjRebc=",
"gasLimit": "200000",
"gasPrice": {
"bytes": "C0U="
},
"gasUsed": "50990",
"hash": "E2euJ14Brg/hLbsRFBismbxzpqbwfKtvvBhA1ZB2cD8=",
"input": "ASy2ctjBKKzAgl3Lr2HkOik6WlJ2",
"nonce": "27",
"r": "/n8N4OD9KzN9vfG0/fl6FERX+FAklxcusTRKtuJaaAY=",
"receipt": {
"cumulativeGasUsed": "50990",
"logs": [
{
"address": "LLZy2MEorMCCXcuvYeQ6KTpaUnY=",
"data": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY=",
"ordinal": "16",
"topics": [
"3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8=",
"AAAAAAAAAAAAAAAAVJoy1Xw102gR3mpGJZaXDIPqmyM=",
"AAAAAAAAAAAAAAAA6z09YW8+Q+ntNh7dLQ5kTRjRebc="
]
}
],
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAIAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "C4wVifsU3LuR1ToPisse4e3pAciXSe4Vv+hsa+7HBS4=",
"status": "SUCCEEDED",
"to": "VJoy1Xw102gR3mpGJZaXDIPqmyM=",
"v": "Gw=="
}
],
"ver": 3
}

View file

@ -0,0 +1,179 @@
{
"genesis": {
"baseFeePerGas": "2935",
"difficulty": "0",
"extraData": "0x6769756c696f207761732068657265",
"gasLimit": "30000000",
"hash": "0xb606f9eea389beb86ad7b90f716ab8b2145b09806e3cae6d866cc406176ff953",
"miner": "0x008b3b2f992c0e14edaa6e2c662bec549caa8df1",
"mixHash": "0x0fbfbdea994592940443188d440d955b4a24241fd297fe6dc51842ed481c46da",
"nonce": "0x0000000000000000",
"number": "3733423",
"stateRoot": "0x6ade0dc69a4852c342f189cf0f98fd0c4eb3357ce1fcb19e039b95d4780148dc",
"timestamp": "1687294944",
"totalDifficulty": "17000018015853232",
"withdrawals": [
{
"index": "0xb53221",
"validatorIndex": "0x3d4",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb53222",
"validatorIndex": "0x3d5",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb53223",
"validatorIndex": "0x3d6",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb53224",
"validatorIndex": "0x3d7",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2fc09"
},
{
"index": "0xb53225",
"validatorIndex": "0x3d8",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb53226",
"validatorIndex": "0x3d9",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x247dd"
},
{
"index": "0xb53227",
"validatorIndex": "0x3da",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb53228",
"validatorIndex": "0x3db",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2fc09"
},
{
"index": "0xb53229",
"validatorIndex": "0x3dc",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322a",
"validatorIndex": "0x3dd",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322b",
"validatorIndex": "0x3de",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322c",
"validatorIndex": "0x3df",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322d",
"validatorIndex": "0x3e0",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322e",
"validatorIndex": "0x3e1",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
},
{
"index": "0xb5322f",
"validatorIndex": "0x3e2",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x238d9"
},
{
"index": "0xb53230",
"validatorIndex": "0x3e3",
"address": "0xe276bc378a527a8792b353cdca5b5e53263dfb9e",
"amount": "0x2ed05"
}
],
"withdrawalsRoot": "0x3cb455e987780d127dae999ae7a1666b3314a2207953019902fd7f8f30a3c367",
"alloc": {
"0x0000006916a87b82333f4245046623b23794c65c": {
"balance": "0x1e729b7d5868c33d7f136",
"nonce": "5"
},
"0x2cb672d8c128acc0825dcbaf61e43a293a5a5276": {
"balance": "0x0",
"code": "0x60003560e01c8063095ea7b31461005c57806340c10f1914610062578063a9059cbb146100d957806323b872dd1461015657806318160ddd1461015857806370a08231146101695763dd62ed3e1461018957346101895760006000f35b60006000f35b60043573ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000602435856000526040600020805482018083119155600254820180831190600255600154331415171761018957600052a360006000f35b60043573ffffffffffffffffffffffffffffffffffffffff16337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206000602435856000526040600020805482018083119155813360005260406000208054828103809111915590503417176101505760006000fd5b600052a3005b005b346101895760025460005260206000f35b346101895760043560005260406000205460005260206000f35b60006000f35b60006000fd",
"nonce": "1",
"storage": {
"0xbb65ff7a03b11b79143b011da0de7c67f6d9bb8f57df2381d88d503cdb07b0b6": "0x0000000000000000000000000000000000000000000000000000000000000000",
"0xdfecc5e296fad583cf3240a878ef92ffb0955f284f0216e1670f60c2279e53ba": "0x0000000000000000000000000000000000000000000000000000000000000096"
}
},
"0x549a32d57c35d36811de6a462596970c83ea9b23": {
"balance": "0x0",
"code": "0x60003560f81c806000146100985780600114610022576002146100965760006000fd5b6000600060446000600060013560601c60206024602460006000857f70a0823100000000000000000000000000000000000000000000000000000000600052306004525af1507fa9059cbb000000000000000000000000000000000000000000000000000000006000526000546004525af1005b005b00",
"nonce": "1",
"storage": {
"0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000eb3d3d616f3e43e9ed361edd2d0e644d18d179b7"
}
},
"0xeb3d3d616f3e43e9ed361edd2d0e644d18d179b7": {
"balance": "0x79b25b8c248adbe",
"nonce": "27"
}
},
"config": {
"chainId": 11155111,
"homesteadBlock": 0,
"daoForkSupport": true,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"muirGlacierBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"mergeNetsplitBlock": 1735371,
"shanghaiTime": 1677557088,
"cancunTime": 1706655072,
"terminalTotalDifficulty": 17000000000000000,
"terminalTotalDifficultyPassed": true,
"ethash": {},
"blobSchedule": {
"cancun": {
"target": 3,
"max": 6,
"baseFeeUpdateFraction": 3338477
}
}
}
},
"context": {
"number": "3733424",
"difficulty": "0",
"timestamp": "1687294956",
"gasLimit": "30000000",
"miner": "0x0000006916a87b82333f4245046623b23794c65c",
"baseFeePerGas": "2727"
},
"input": "0xf8771b820b4583030d4094549a32d57c35d36811de6a462596970c83ea9b238095012cb672d8c128acc0825dcbaf61e43a293a5a52761ba0fe7f0de0e0fd2b337dbdf1b4fdf97a144457f8502497172eb1344ab6e25a6806a00b8c1589fb14dcbb91d53a0f8acb1ee1ede901c89749ee15bfe86c6beec7052e"
}

View file

@ -0,0 +1,391 @@
{
"hash": "ycVHQ3rBt3mfRIpHGewnuEXRq5LmU9/i+qoNZkx0qew=",
"header": {
"baseFeePerGas": {
"bytes": "kwcfxw=="
},
"coinbase": "Kx2Hm14QLmAWYgLeeVN7SOLxikI=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "ycVHQ3rBt3mfRIpHGewnuEXRq5LmU9/i+qoNZkx0qew=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1550267",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "Lqnb2KULZPqYeoP7inwY5jwKzNhQQaD6YS01a/i6ZrA=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2024-05-15T17:12:36Z",
"transactionsRoot": "UGovRwB9IOw9P7ACFl+hfCxFwgTa3lRZNqwqrJ0NJ20=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "1550267",
"size": "4196",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"accountCreations": [
{
"account": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"ordinal": "6"
}
],
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"balanceChanges": [
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTWtv/L76k="
},
"oldValue": {
"bytes": "Dbv1zrT3nx0="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTWtoh1IQk="
},
"oldValue": {
"bytes": "DbTWtv/L76k="
},
"ordinal": "8",
"reason": "REASON_TRANSFER"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "9",
"reason": "REASON_TRANSFER"
},
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTnxxILzrM="
},
"oldValue": {
"bytes": "DbTWtoh1IQk="
},
"ordinal": "44",
"reason": "REASON_GAS_REFUND"
},
{
"address": "Kx2Hm14QLmAWYgLeeVN7SOLxikI=",
"newValue": {
"bytes": "3mbuD6C1qntp"
},
"oldValue": {
"bytes": "3mbtxTnosse6"
},
"ordinal": "45",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CREATE",
"caller": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"codeChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newCode": "YIBgQFJgBDYQYQBzV181YOAcgGNN9+PQEWEATVeAY03349AUYQDcV4BjdHf3ABRhAQZXgGN7HYKcFGEBMFeAY886IX4UYQFaV2EAelZbgGMLYc1/FGEAfleAYw2+Zx8UYQCIV4BjHWPiTRRhALJXYQB6Vls2YQB6VwBbX4D9W2EAhmEBcFZbAFs0gBVhAJNXX4D9W1BhAJxhAylWW2BAUWEAqZGQYQSaVltgQFGAkQOQ81s0gBVhAL1XX4D9W1BhAMZhA0xWW2BAUWEA05GQYQTLVltgQFGAkQOQ81s0gBVhAOdXX4D9W1BhAPBhA1JWW2BAUWEA/ZGQYQSaVltgQFGAkQOQ81s0gBVhARFXX4D9W1BhARphA3dWW2BAUWEBJ5GQYQTLVltgQFGAkQOQ81s0gBVhATtXX4D9W1BhAURhA31WW2BAUWEBUZGQYQTLVltgQFGAkQOQ81s0gBVhAWVXX4D9W1BhAW5hA4NWWwBbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEBoZBhBBNWW4GQYEBRgJEDkF/1kFCAFYAVYQG+Vz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQX4BUkGEBAAqQBHP//////////////////////////xZz//////////////////////////8WNGBAUWECQJBhBRFWW19gQFGAgwOBhYda8ZJQUFA9gF+BFGECeldgQFGRUGAfGWA/PQEWggFgQFI9glI9X2AghAE+YQJ/VltgYJFQW1BQUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FmMPrxAhX4BUkGEBAAqQBHP//////////////////////////xZgQFGCY/////8WYOAbgVJgBAFhAvmRkGEFRVZbX2BAUYCDA4Ffh4A7FYAVYQMQV1+A/VtQWvEVgBVhAyJXPV+APj1f/VtQUFBQUFZbX4BUkGEBAAqQBHP//////////////////////////xaBVltgBVSBVltgAV+QVJBhAQAKkARz//////////////////////////8WgVZbYARUgVZbYAZUgVZbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEDtJBhBBNWW4GQYEBRgJEDkF/1kFCAFYAVYQPRVz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQUFZbYQKKgGEFX4M5AZBWW19z//////////////////////////+CFpBQkZBQVltfgZBQkZBQVltfYQRiYQRdYQRYhGEEIFZbYQQ/VlthBCBWW5BQkZBQVltfYQRzgmEESFZbkFCRkFBWW19hBISCYQRpVluQUJGQUFZbYQSUgWEEelZbglJQUFZbX2AgggGQUGEErV+DAYRhBItWW5KRUFBWW1+BkFCRkFBWW2EExYFhBLNWW4JSUFBWW19gIIIBkFBhBN5fgwGEYQS8VluSkVBQVltfgZBQkpFQUFZbUFZbX2EE/F+DYQTkVluRUGEFB4JhBO5WW1+CAZBQkZBQVltfYQUbgmEE8VZbkVCBkFCRkFBWW19hBS+CYQQgVluQUJGQUFZbYQU/gWEFJVZbglJQUFZbX2AgggGQUGEFWF+DAYRhBTZWW5KRUFBW/mCAYEBSc0MAAAAAAAAAAAAAAAAAAAAAAAAAX4BhAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBzeiOPKY1V+NsnuGDv8eAtFSixZYVgAV9hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVA0gBVgtVdfgP1bUGEBx4BhAMNfOV/z/mCAYEBSYAQ2EGEAN1dfNWDgHIBjD68QIRRhAEJXgGMdY+JNFGEAXleAY3R39wAUYQCIV2EAPlZbNmEAPlcAW1+A/VthAFxgBIA2A4EBkGEAV5GQYQE1VlthALJWWwBbNIAVYQBpV1+A/VtQYQByYQDLVltgQFFhAH+RkGEBeFZbYEBRgJEDkPNbNIAVYQCTV1+A/VtQYQCcYQDRVltgQFFhAKmRkGEBeFZbYEBRgJEDkPNbgHP//////////////////////////xb/W2ADVIFWW2ACVIFWW1+A/Vtfc///////////////////////////ghaQUJGQUFZbX2EBBIJhANtWW5BQkZBQVlthARSBYQD6VluBFGEBHldfgP1bUFZbX4E1kFBhAS+BYQELVluSkVBQVltfYCCChAMSFWEBSldhAUlhANdWW1tfYQFXhIKFAWEBIVZbkVBQkpFQUFZbX4GQUJGQUFZbYQFygWEBYFZbglJQUFZbX2AgggGQUGEBi1+DAYRhAWlWW5KRUFBW/qJkaXBmc1giEiB4nf69TDoE8FAm15HxiG0PzBM9wtshFgRZSoALW9IyMGRzb2xjQwAIGQAzomRpcGZzWCISIL9Ul2tC0esNcimyvdSOilHtvOnMDOEu4+006a2DuQEVZHNvbGNDAAgZADM=",
"newHash": "SCiyEasTfEh/c8vA9xQ/UVY7EnPvfmQlXKBqXUD/TxU=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "42"
}
],
"endOrdinal": "43",
"gasChanges": [
{
"newValue": "671148",
"oldValue": "779146",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "626589",
"oldValue": "626722",
"ordinal": "12",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "594380",
"oldValue": "626548",
"ordinal": "13",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "9287",
"oldValue": "594380",
"ordinal": "14",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "458909",
"oldValue": "9287",
"ordinal": "25",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "6675",
"oldValue": "436353",
"ordinal": "27",
"reason": "REASON_CALL"
},
{
"newValue": "429498",
"oldValue": "6675",
"ordinal": "32",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "6698",
"oldValue": "428786",
"ordinal": "33",
"reason": "REASON_CALL"
},
{
"newValue": "423285",
"oldValue": "6698",
"ordinal": "39",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "422895",
"oldValue": "423220",
"ordinal": "40",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "7293",
"oldValue": "422893",
"ordinal": "41",
"reason": "REASON_CODE_STORAGE"
}
],
"gasConsumed": "663855",
"gasLimit": "671148",
"index": 1,
"nonceChanges": [
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": "9",
"oldValue": "8",
"ordinal": "5"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": "1",
"ordinal": "7"
}
],
"storageChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "10"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM=",
"newValue": "AAAAAAAAAAAAAAAAeiOPKY1V+NsnuGDv8eAtFSixZYU=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "11"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAVmsCLVeUvExlb0NlkADTCzuyRWs=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "26"
}
],
"value": {
"bytes": "d1bOoA=="
}
},
{
"accountCreations": [
{
"account": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"ordinal": "17"
}
],
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"beginOrdinal": "15",
"callType": "CREATE",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"codeChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newCode": "YIBgQFJgBDYQYQA3V181YOAcgGMPrxAhFGEAQleAYx1j4k0UYQBeV4BjdHf3ABRhAIhXYQA+Vls2YQA+VwBbX4D9W2EAXGAEgDYDgQGQYQBXkZBhATVWW2EAslZbAFs0gBVhAGlXX4D9W1BhAHJhAMtWW2BAUWEAf5GQYQF4VltgQFGAkQOQ81s0gBVhAJNXX4D9W1BhAJxhANFWW2BAUWEAqZGQYQF4VltgQFGAkQOQ81uAc///////////////////////////Fv9bYANUgVZbYAJUgVZbX4D9W19z//////////////////////////+CFpBQkZBQVltfYQEEgmEA21ZbkFCRkFBWW2EBFIFhAPpWW4EUYQEeV1+A/VtQVltfgTWQUGEBL4FhAQtWW5KRUFBWW19gIIKEAxIVYQFKV2EBSWEA11ZbW19hAVeEgoUBYQEhVluRUFCSkVBQVltfgZBQkZBQVlthAXKBYQFgVluCUlBQVltfYCCCAZBQYQGLX4MBhGEBaVZbkpFQUFb+omRpcGZzWCISIHid/r1MOgTwUCbXkfGIbQ/MEz3C2yEWBFlKgAtb0jIwZHNvbGNDAAgZADM=",
"newHash": "6CUXyeRMWXwdWTThEgzSUhJR2IxY3DiiPnUZpa1qPpY=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "23"
}
],
"depth": 1,
"endOrdinal": "24",
"gasChanges": [
{
"newValue": "540624",
"oldValue": "540708",
"ordinal": "21",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "449622",
"oldValue": "540622",
"ordinal": "22",
"reason": "REASON_CODE_STORAGE"
}
],
"gasConsumed": "135471",
"gasLimit": "585093",
"index": 2,
"nonceChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": "2",
"oldValue": "1",
"ordinal": "16"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": "1",
"ordinal": "18"
}
],
"parentIndex": 1,
"storageChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "19"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"newValue": "AAAAAAAAAAAAAAAAeiOPKY1V+NsnuGDv8eAtFSixZYU=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "20"
}
]
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"balanceChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"oldValue": {
"bytes": "d1bOoA=="
},
"ordinal": "29",
"reason": "REASON_TRANSFER"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "30",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "28",
"callType": "CALL",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"depth": 1,
"endOrdinal": "31",
"gasConsumed": "55",
"gasLimit": "422878",
"index": 3,
"parentIndex": 1,
"value": {
"bytes": "d1bOoA=="
}
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"balanceChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "36",
"reason": "REASON_SUICIDE_REFUND"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"oldValue": {
"bytes": "d1bOoA=="
},
"ordinal": "37",
"reason": "REASON_SUICIDE_WITHDRAW"
}
],
"beginOrdinal": "34",
"callType": "CALL",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"depth": 1,
"endOrdinal": "38",
"executedCode": true,
"gasChanges": [
{
"newValue": "416587",
"oldValue": "421587",
"ordinal": "35",
"reason": "REASON_SELF_DESTRUCT"
}
],
"gasConsumed": "5401",
"gasLimit": "421988",
"index": 4,
"input": "D68QIQAAAAAAAAAAAAAAAFZrAi1XlLxMZW9DZZAA0ws7skVr",
"parentIndex": 1,
"suicide": true
}
],
"endOrdinal": "46",
"from": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"gasLimit": "779146",
"gasPrice": {
"bytes": "mVhWcg=="
},
"gasUsed": "771853",
"hash": "5gTFisgmyZvp3w4jvWMAn6e93CFPnMRbzXnM9NcV2lg=",
"input": "YIBgQFJzQwAAAAAAAAAAAAAAAAAAAAAAAABgAl9hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBzeiOPKY1V+NsnuGDv8eAtFSixZYVgA19hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBhALphAL9gIBtgIBxWW2EDHlZbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEA8JBhAnhWW4GQYEBRgJEDkF/1kFCAFYAVYQENVz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQX4BUkGEBAAqQBHP//////////////////////////xZz//////////////////////////8WNGBAUWEBj5BhArJWW19gQFGAgwOBhYda8ZJQUFA9gF+BFGEByVdgQFGRUGAfGWA/PQEWggFgQFI9glI9X2AghAE+YQHOVltgYJFQW1BQUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FmMPrxAhX4BUkGEBAAqQBHP//////////////////////////xZgQFGCY/////8WYOAbgVJgBAFhAkiRkGEDBVZbX2BAUYCDA4Ffh4A7FYAVYQJfV1+A/VtQWvEVgBVhAnFXPV+APj1f/VtQUFBQUFZbYQKKgGELSYM5AZBWW1+BkFCSkVBQVltQVltfYQKdX4NhAoVWW5FQYQKogmECj1ZbX4IBkFCRkFBWW19hAryCYQKSVluRUIGQUJGQUFZbX3P//////////////////////////4IWkFCRkFBWW19hAu+CYQLGVluQUJGQUFZbYQL/gWEC5VZbglJQUFZbX2AgggGQUGEDGF+DAYRhAvZWW5KRUFBWW2EIHoBhAytfOV/z/mCAYEBSYAQ2EGEAc1dfNWDgHIBjTffj0BFhAE1XgGNN9+PQFGEA3FeAY3R39wAUYQEGV4Bjex2CnBRhATBXgGPPOiF+FGEBWldhAHpWW4BjC2HNfxRhAH5XgGMNvmcfFGEAiFeAYx1j4k0UYQCyV2EAelZbNmEAelcAW1+A/VthAIZhAXBWWwBbNIAVYQCTV1+A/VtQYQCcYQMpVltgQFFhAKmRkGEEmlZbYEBRgJEDkPNbNIAVYQC9V1+A/VtQYQDGYQNMVltgQFFhANORkGEEy1ZbYEBRgJEDkPNbNIAVYQDnV1+A/VtQYQDwYQNSVltgQFFhAP2RkGEEmlZbYEBRgJEDkPNbNIAVYQERV1+A/VtQYQEaYQN3VltgQFFhASeRkGEEy1ZbYEBRgJEDkPNbNIAVYQE7V1+A/VtQYQFEYQN9VltgQFFhAVGRkGEEy1ZbYEBRgJEDkPNbNIAVYQFlV1+A/VtQYQFuYQODVlsAW19/nCL/XyHwuBsRPmP3222pT+3vEbIRm0CIuJZk+5o8tliQUIBgQFFhAaGQYQQTVluBkGBAUYCRA5Bf9ZBQgBWAFWEBvlc9X4A+PV/9W1BfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FjRgQFFhAkCQYQURVltfYEBRgIMDgYWHWvGSUFBQPYBfgRRhAnpXYEBRkVBgHxlgPz0BFoIBYEBSPYJSPV9gIIQBPmECf1ZbYGCRUFtQUFBfgFSQYQEACpAEc///////////////////////////FnP//////////////////////////xZjD68QIV+AVJBhAQAKkARz//////////////////////////8WYEBRgmP/////FmDgG4FSYAQBYQL5kZBhBUVWW19gQFGAgwOBX4eAOxWAFWEDEFdfgP1bUFrxFYAVYQMiVz1fgD49X/1bUFBQUFBWW1+AVJBhAQAKkARz//////////////////////////8WgVZbYAVUgVZbYAFfkFSQYQEACpAEc///////////////////////////FoFWW2AEVIFWW2AGVIFWW19/nCL/XyHwuBsRPmP3222pT+3vEbIRm0CIuJZk+5o8tliQUIBgQFFhA7SQYQQTVluBkGBAUYCRA5Bf9ZBQgBWAFWED0Vc9X4A+PV/9W1BfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUFBWW2ECioBhBV+DOQGQVltfc///////////////////////////ghaQUJGQUFZbX4GQUJGQUFZbX2EEYmEEXWEEWIRhBCBWW2EEP1ZbYQQgVluQUJGQUFZbX2EEc4JhBEhWW5BQkZBQVltfYQSEgmEEaVZbkFCRkFBWW2EElIFhBHpWW4JSUFBWW19gIIIBkFBhBK1fgwGEYQSLVluSkVBQVltfgZBQkZBQVlthBMWBYQSzVluCUlBQVltfYCCCAZBQYQTeX4MBhGEEvFZbkpFQUFZbX4GQUJKRUFBWW1BWW19hBPxfg2EE5FZbkVBhBQeCYQTuVltfggGQUJGQUFZbX2EFG4JhBPFWW5FQgZBQkZBQVltfYQUvgmEEIFZbkFCRkFBWW2EFP4FhBSVWW4JSUFBWW19gIIIBkFBhBVhfgwGEYQU2VluSkVBQVv5ggGBAUnNDAAAAAAAAAAAAAAAAAAAAAAAAAF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQc3ojjymNVfjbJ7hg7/HgLRUosWWFYAFfYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQNIAVYLVXX4D9W1BhAceAYQDDXzlf8/5ggGBAUmAENhBhADdXXzVg4ByAYw+vECEUYQBCV4BjHWPiTRRhAF5XgGN0d/cAFGEAiFdhAD5WWzZhAD5XAFtfgP1bYQBcYASANgOBAZBhAFeRkGEBNVZbYQCyVlsAWzSAFWEAaVdfgP1bUGEAcmEAy1ZbYEBRYQB/kZBhAXhWW2BAUYCRA5DzWzSAFWEAk1dfgP1bUGEAnGEA0VZbYEBRYQCpkZBhAXhWW2BAUYCRA5DzW4Bz//////////////////////////8W/1tgA1SBVltgAlSBVltfgP1bX3P//////////////////////////4IWkFCRkFBWW19hAQSCYQDbVluQUJGQUFZbYQEUgWEA+lZbgRRhAR5XX4D9W1BWW1+BNZBQYQEvgWEBC1ZbkpFQUFZbX2AggoQDEhVhAUpXYQFJYQDXVltbX2EBV4SChQFhASFWW5FQUJKRUFBWW1+BkFCRkFBWW2EBcoFhAWBWW4JSUFBWW19gIIIBkFBhAYtfgwGEYQFpVluSkVBQVv6iZGlwZnNYIhIgeJ3+vUw6BPBQJteR8YhtD8wTPcLbIRYEWUqAC1vSMjBkc29sY0MACBkAM6JkaXBmc1giEiC/VJdrQtHrDXIpsr3UjopR7bzpzAzhLuPtNOmtg7kBFWRzb2xjQwAIGQAzYIBgQFJzQwAAAAAAAAAAAAAAAAAAAAAAAABfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUHN6I48pjVX42ye4YO/x4C0VKLFlhWABX2EBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUDSAFWC1V1+A/VtQYQHHgGEAw185X/P+YIBgQFJgBDYQYQA3V181YOAcgGMPrxAhFGEAQleAYx1j4k0UYQBeV4BjdHf3ABRhAIhXYQA+Vls2YQA+VwBbX4D9W2EAXGAEgDYDgQGQYQBXkZBhATVWW2EAslZbAFs0gBVhAGlXX4D9W1BhAHJhAMtWW2BAUWEAf5GQYQF4VltgQFGAkQOQ81s0gBVhAJNXX4D9W1BhAJxhANFWW2BAUWEAqZGQYQF4VltgQFGAkQOQ81uAc///////////////////////////Fv9bYANUgVZbYAJUgVZbX4D9W19z//////////////////////////+CFpBQkZBQVltfYQEEgmEA21ZbkFCRkFBWW2EBFIFhAPpWW4EUYQEeV1+A/VtQVltfgTWQUGEBL4FhAQtWW5KRUFBWW19gIIKEAxIVYQFKV2EBSWEA11ZbW19hAVeEgoUBYQEhVluRUFCSkVBQVltfgZBQkZBQVlthAXKBYQFgVluCUlBQVltfYCCCAZBQYQGLX4MBhGEBaVZbkpFQUFb+omRpcGZzWCISIHid/r1MOgTwUCbXkfGIbQ/MEz3C2yEWBFlKgAtb0jIwZHNvbGNDAAgZADM=",
"maxFeePerGas": {
"bytes": "yOKYzA=="
},
"maxPriorityFeePerGas": {
"bytes": "BlE2qw=="
},
"nonce": "8",
"r": "uEHvjD26MNMUOogGHEac8h8Gyz2aw+Nbzc+mi2kmRS8=",
"receipt": {
"cumulativeGasUsed": "771853",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "E8IkJGk6TjnE8pl+DO4Ty/WfNsTFicVgSpPI2ayGblU=",
"status": "SUCCEEDED",
"to": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"type": "TRX_TYPE_DYNAMIC_FEE",
"value": {
"bytes": "d1bOoA=="
}
}
],
"ver": 3
}

View file

@ -0,0 +1,391 @@
{
"hash": "ycVHQ3rBt3mfRIpHGewnuEXRq5LmU9/i+qoNZkx0qew=",
"header": {
"baseFeePerGas": {
"bytes": "kwcfxw=="
},
"coinbase": "Kx2Hm14QLmAWYgLeeVN7SOLxikI=",
"difficulty": {
"bytes": "AA=="
},
"gasLimit": "30000000",
"hash": "ycVHQ3rBt3mfRIpHGewnuEXRq5LmU9/i+qoNZkx0qew=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1550267",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "Lqnb2KULZPqYeoP7inwY5jwKzNhQQaD6YS01a/i6ZrA=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"timestamp": "2024-05-15T17:12:36Z",
"transactionsRoot": "UGovRwB9IOw9P7ACFl+hfCxFwgTa3lRZNqwqrJ0NJ20=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c="
},
"number": "1550267",
"size": "4196",
"transactionTraces": [
{
"beginOrdinal": "1",
"calls": [
{
"accountCreations": [
{
"account": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"ordinal": "6"
}
],
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"balanceChanges": [
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTWtv/L76k="
},
"oldValue": {
"bytes": "Dbv1zrT3nx0="
},
"ordinal": "2",
"reason": "REASON_GAS_BUY"
},
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTWtoh1IQk="
},
"oldValue": {
"bytes": "DbTWtv/L76k="
},
"ordinal": "8",
"reason": "REASON_TRANSFER"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "9",
"reason": "REASON_TRANSFER"
},
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": {
"bytes": "DbTnxxILzrM="
},
"oldValue": {
"bytes": "DbTWtoh1IQk="
},
"ordinal": "44",
"reason": "REASON_GAS_REFUND"
},
{
"address": "Kx2Hm14QLmAWYgLeeVN7SOLxikI=",
"newValue": {
"bytes": "3mbuD6C1qntp"
},
"oldValue": {
"bytes": "3mbtxTnosse6"
},
"ordinal": "45",
"reason": "REASON_REWARD_TRANSACTION_FEE"
}
],
"callType": "CREATE",
"caller": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"codeChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newCode": "YIBgQFJgBDYQYQBzV181YOAcgGNN9+PQEWEATVeAY03349AUYQDcV4BjdHf3ABRhAQZXgGN7HYKcFGEBMFeAY886IX4UYQFaV2EAelZbgGMLYc1/FGEAfleAYw2+Zx8UYQCIV4BjHWPiTRRhALJXYQB6Vls2YQB6VwBbX4D9W2EAhmEBcFZbAFs0gBVhAJNXX4D9W1BhAJxhAylWW2BAUWEAqZGQYQSaVltgQFGAkQOQ81s0gBVhAL1XX4D9W1BhAMZhA0xWW2BAUWEA05GQYQTLVltgQFGAkQOQ81s0gBVhAOdXX4D9W1BhAPBhA1JWW2BAUWEA/ZGQYQSaVltgQFGAkQOQ81s0gBVhARFXX4D9W1BhARphA3dWW2BAUWEBJ5GQYQTLVltgQFGAkQOQ81s0gBVhATtXX4D9W1BhAURhA31WW2BAUWEBUZGQYQTLVltgQFGAkQOQ81s0gBVhAWVXX4D9W1BhAW5hA4NWWwBbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEBoZBhBBNWW4GQYEBRgJEDkF/1kFCAFYAVYQG+Vz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQX4BUkGEBAAqQBHP//////////////////////////xZz//////////////////////////8WNGBAUWECQJBhBRFWW19gQFGAgwOBhYda8ZJQUFA9gF+BFGECeldgQFGRUGAfGWA/PQEWggFgQFI9glI9X2AghAE+YQJ/VltgYJFQW1BQUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FmMPrxAhX4BUkGEBAAqQBHP//////////////////////////xZgQFGCY/////8WYOAbgVJgBAFhAvmRkGEFRVZbX2BAUYCDA4Ffh4A7FYAVYQMQV1+A/VtQWvEVgBVhAyJXPV+APj1f/VtQUFBQUFZbX4BUkGEBAAqQBHP//////////////////////////xaBVltgBVSBVltgAV+QVJBhAQAKkARz//////////////////////////8WgVZbYARUgVZbYAZUgVZbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEDtJBhBBNWW4GQYEBRgJEDkF/1kFCAFYAVYQPRVz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQUFZbYQKKgGEFX4M5AZBWW19z//////////////////////////+CFpBQkZBQVltfgZBQkZBQVltfYQRiYQRdYQRYhGEEIFZbYQQ/VlthBCBWW5BQkZBQVltfYQRzgmEESFZbkFCRkFBWW19hBISCYQRpVluQUJGQUFZbYQSUgWEEelZbglJQUFZbX2AgggGQUGEErV+DAYRhBItWW5KRUFBWW1+BkFCRkFBWW2EExYFhBLNWW4JSUFBWW19gIIIBkFBhBN5fgwGEYQS8VluSkVBQVltfgZBQkpFQUFZbUFZbX2EE/F+DYQTkVluRUGEFB4JhBO5WW1+CAZBQkZBQVltfYQUbgmEE8VZbkVCBkFCRkFBWW19hBS+CYQQgVluQUJGQUFZbYQU/gWEFJVZbglJQUFZbX2AgggGQUGEFWF+DAYRhBTZWW5KRUFBW/mCAYEBSc0MAAAAAAAAAAAAAAAAAAAAAAAAAX4BhAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBzeiOPKY1V+NsnuGDv8eAtFSixZYVgAV9hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVA0gBVgtVdfgP1bUGEBx4BhAMNfOV/z/mCAYEBSYAQ2EGEAN1dfNWDgHIBjD68QIRRhAEJXgGMdY+JNFGEAXleAY3R39wAUYQCIV2EAPlZbNmEAPlcAW1+A/VthAFxgBIA2A4EBkGEAV5GQYQE1VlthALJWWwBbNIAVYQBpV1+A/VtQYQByYQDLVltgQFFhAH+RkGEBeFZbYEBRgJEDkPNbNIAVYQCTV1+A/VtQYQCcYQDRVltgQFFhAKmRkGEBeFZbYEBRgJEDkPNbgHP//////////////////////////xb/W2ADVIFWW2ACVIFWW1+A/Vtfc///////////////////////////ghaQUJGQUFZbX2EBBIJhANtWW5BQkZBQVlthARSBYQD6VluBFGEBHldfgP1bUFZbX4E1kFBhAS+BYQELVluSkVBQVltfYCCChAMSFWEBSldhAUlhANdWW1tfYQFXhIKFAWEBIVZbkVBQkpFQUFZbX4GQUJGQUFZbYQFygWEBYFZbglJQUFZbX2AgggGQUGEBi1+DAYRhAWlWW5KRUFBW/qJkaXBmc1giEiB4nf69TDoE8FAm15HxiG0PzBM9wtshFgRZSoALW9IyMGRzb2xjQwAIGQAzomRpcGZzWCISIL9Ul2tC0esNcimyvdSOilHtvOnMDOEu4+006a2DuQEVZHNvbGNDAAgZADM=",
"newHash": "SCiyEasTfEh/c8vA9xQ/UVY7EnPvfmQlXKBqXUD/TxU=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "42"
}
],
"endOrdinal": "43",
"gasChanges": [
{
"newValue": "671148",
"oldValue": "779146",
"ordinal": "3",
"reason": "REASON_INTRINSIC_GAS"
},
{
"newValue": "626589",
"oldValue": "626722",
"ordinal": "12",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "594380",
"oldValue": "626548",
"ordinal": "13",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "9287",
"oldValue": "594380",
"ordinal": "14",
"reason": "REASON_CONTRACT_CREATION2"
},
{
"newValue": "458909",
"oldValue": "9287",
"ordinal": "25",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "6675",
"oldValue": "436353",
"ordinal": "27",
"reason": "REASON_CALL"
},
{
"newValue": "429498",
"oldValue": "6675",
"ordinal": "32",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "6698",
"oldValue": "428786",
"ordinal": "33",
"reason": "REASON_CALL"
},
{
"newValue": "423285",
"oldValue": "6698",
"ordinal": "39",
"reason": "REASON_REFUND_AFTER_EXECUTION"
},
{
"newValue": "422895",
"oldValue": "423220",
"ordinal": "40",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "7293",
"oldValue": "422893",
"ordinal": "41",
"reason": "REASON_CODE_STORAGE"
}
],
"gasConsumed": "663855",
"gasLimit": "671148",
"index": 1,
"nonceChanges": [
{
"address": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"newValue": "9",
"oldValue": "8",
"ordinal": "5"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": "1",
"ordinal": "7"
}
],
"storageChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"newValue": "AAAAAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "10"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM=",
"newValue": "AAAAAAAAAAAAAAAAeiOPKY1V+NsnuGDv8eAtFSixZYU=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "11"
},
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAVmsCLVeUvExlb0NlkADTCzuyRWs=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "26"
}
],
"value": {
"bytes": "d1bOoA=="
}
},
{
"accountCreations": [
{
"account": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"ordinal": "17"
}
],
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"beginOrdinal": "15",
"callType": "CREATE",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"codeChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newCode": "YIBgQFJgBDYQYQA3V181YOAcgGMPrxAhFGEAQleAYx1j4k0UYQBeV4BjdHf3ABRhAIhXYQA+Vls2YQA+VwBbX4D9W2EAXGAEgDYDgQGQYQBXkZBhATVWW2EAslZbAFs0gBVhAGlXX4D9W1BhAHJhAMtWW2BAUWEAf5GQYQF4VltgQFGAkQOQ81s0gBVhAJNXX4D9W1BhAJxhANFWW2BAUWEAqZGQYQF4VltgQFGAkQOQ81uAc///////////////////////////Fv9bYANUgVZbYAJUgVZbX4D9W19z//////////////////////////+CFpBQkZBQVltfYQEEgmEA21ZbkFCRkFBWW2EBFIFhAPpWW4EUYQEeV1+A/VtQVltfgTWQUGEBL4FhAQtWW5KRUFBWW19gIIKEAxIVYQFKV2EBSWEA11ZbW19hAVeEgoUBYQEhVluRUFCSkVBQVltfgZBQkZBQVlthAXKBYQFgVluCUlBQVltfYCCCAZBQYQGLX4MBhGEBaVZbkpFQUFb+omRpcGZzWCISIHid/r1MOgTwUCbXkfGIbQ/MEz3C2yEWBFlKgAtb0jIwZHNvbGNDAAgZADM=",
"newHash": "6CUXyeRMWXwdWTThEgzSUhJR2IxY3DiiPnUZpa1qPpY=",
"oldHash": "xdJGAYb3IzySfn2y3McDwOUAtlPKgic7e/rYBF2FpHA=",
"ordinal": "23"
}
],
"depth": 1,
"endOrdinal": "24",
"gasChanges": [
{
"newValue": "540624",
"oldValue": "540708",
"ordinal": "21",
"reason": "REASON_CODE_COPY"
},
{
"newValue": "449622",
"oldValue": "540622",
"ordinal": "22",
"reason": "REASON_CODE_STORAGE"
}
],
"gasConsumed": "135471",
"gasLimit": "585093",
"index": 2,
"nonceChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"newValue": "2",
"oldValue": "1",
"ordinal": "16"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": "1",
"ordinal": "18"
}
],
"parentIndex": 1,
"storageChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"newValue": "AAAAAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAAAAAAAAAA=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "19"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"key": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"newValue": "AAAAAAAAAAAAAAAAeiOPKY1V+NsnuGDv8eAtFSixZYU=",
"oldValue": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"ordinal": "20"
}
]
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"balanceChanges": [
{
"address": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"oldValue": {
"bytes": "d1bOoA=="
},
"ordinal": "29",
"reason": "REASON_TRANSFER"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "30",
"reason": "REASON_TRANSFER"
}
],
"beginOrdinal": "28",
"callType": "CALL",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"depth": 1,
"endOrdinal": "31",
"gasConsumed": "55",
"gasLimit": "422878",
"index": 3,
"parentIndex": 1,
"value": {
"bytes": "d1bOoA=="
}
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"balanceChanges": [
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"newValue": {
"bytes": "d1bOoA=="
},
"ordinal": "36",
"reason": "REASON_SUICIDE_REFUND"
},
{
"address": "VmsCLVeUvExlb0NlkADTCzuyRWs=",
"oldValue": {
"bytes": "d1bOoA=="
},
"ordinal": "37",
"reason": "REASON_SUICIDE_WITHDRAW"
}
],
"beginOrdinal": "34",
"callType": "CALL",
"caller": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"depth": 1,
"endOrdinal": "38",
"executedCode": true,
"gasChanges": [
{
"newValue": "416587",
"oldValue": "421587",
"ordinal": "35",
"reason": "REASON_SELF_DESTRUCT"
}
],
"gasConsumed": "5401",
"gasLimit": "421988",
"index": 4,
"input": "D68QIQAAAAAAAAAAAAAAAFZrAi1XlLxMZW9DZZAA0ws7skVr",
"parentIndex": 1,
"suicide": true
}
],
"endOrdinal": "46",
"from": "eiOPKY1V+NsnuGDv8eAtFSixZYU=",
"gasLimit": "779146",
"gasPrice": {
"bytes": "mVhWcg=="
},
"gasUsed": "771853",
"hash": "5gTFisgmyZvp3w4jvWMAn6e93CFPnMRbzXnM9NcV2lg=",
"input": "YIBgQFJzQwAAAAAAAAAAAAAAAAAAAAAAAABgAl9hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBzeiOPKY1V+NsnuGDv8eAtFSixZYVgA19hAQAKgVSBc///////////////////////////AhkWkINz//////////////////////////8WAheQVVBhALphAL9gIBtgIBxWW2EDHlZbX3+cIv9fIfC4GxE+Y/fbbalP7e8RshGbQIi4lmT7mjy2WJBQgGBAUWEA8JBhAnhWW4GQYEBRgJEDkF/1kFCAFYAVYQENVz1fgD49X/1bUF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQX4BUkGEBAAqQBHP//////////////////////////xZz//////////////////////////8WNGBAUWEBj5BhArJWW19gQFGAgwOBhYda8ZJQUFA9gF+BFGEByVdgQFGRUGAfGWA/PQEWggFgQFI9glI9X2AghAE+YQHOVltgYJFQW1BQUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FmMPrxAhX4BUkGEBAAqQBHP//////////////////////////xZgQFGCY/////8WYOAbgVJgBAFhAkiRkGEDBVZbX2BAUYCDA4Ffh4A7FYAVYQJfV1+A/VtQWvEVgBVhAnFXPV+APj1f/VtQUFBQUFZbYQKKgGELSYM5AZBWW1+BkFCSkVBQVltQVltfYQKdX4NhAoVWW5FQYQKogmECj1ZbX4IBkFCRkFBWW19hAryCYQKSVluRUIGQUJGQUFZbX3P//////////////////////////4IWkFCRkFBWW19hAu+CYQLGVluQUJGQUFZbYQL/gWEC5VZbglJQUFZbX2AgggGQUGEDGF+DAYRhAvZWW5KRUFBWW2EIHoBhAytfOV/z/mCAYEBSYAQ2EGEAc1dfNWDgHIBjTffj0BFhAE1XgGNN9+PQFGEA3FeAY3R39wAUYQEGV4Bjex2CnBRhATBXgGPPOiF+FGEBWldhAHpWW4BjC2HNfxRhAH5XgGMNvmcfFGEAiFeAYx1j4k0UYQCyV2EAelZbNmEAelcAW1+A/VthAIZhAXBWWwBbNIAVYQCTV1+A/VtQYQCcYQMpVltgQFFhAKmRkGEEmlZbYEBRgJEDkPNbNIAVYQC9V1+A/VtQYQDGYQNMVltgQFFhANORkGEEy1ZbYEBRgJEDkPNbNIAVYQDnV1+A/VtQYQDwYQNSVltgQFFhAP2RkGEEmlZbYEBRgJEDkPNbNIAVYQERV1+A/VtQYQEaYQN3VltgQFFhASeRkGEEy1ZbYEBRgJEDkPNbNIAVYQE7V1+A/VtQYQFEYQN9VltgQFFhAVGRkGEEy1ZbYEBRgJEDkPNbNIAVYQFlV1+A/VtQYQFuYQODVlsAW19/nCL/XyHwuBsRPmP3222pT+3vEbIRm0CIuJZk+5o8tliQUIBgQFFhAaGQYQQTVluBkGBAUYCRA5Bf9ZBQgBWAFWEBvlc9X4A+PV/9W1BfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUF+AVJBhAQAKkARz//////////////////////////8Wc///////////////////////////FjRgQFFhAkCQYQURVltfYEBRgIMDgYWHWvGSUFBQPYBfgRRhAnpXYEBRkVBgHxlgPz0BFoIBYEBSPYJSPV9gIIQBPmECf1ZbYGCRUFtQUFBfgFSQYQEACpAEc///////////////////////////FnP//////////////////////////xZjD68QIV+AVJBhAQAKkARz//////////////////////////8WYEBRgmP/////FmDgG4FSYAQBYQL5kZBhBUVWW19gQFGAgwOBX4eAOxWAFWEDEFdfgP1bUFrxFYAVYQMiVz1fgD49X/1bUFBQUFBWW1+AVJBhAQAKkARz//////////////////////////8WgVZbYAVUgVZbYAFfkFSQYQEACpAEc///////////////////////////FoFWW2AEVIFWW2AGVIFWW19/nCL/XyHwuBsRPmP3222pT+3vEbIRm0CIuJZk+5o8tliQUIBgQFFhA7SQYQQTVluBkGBAUYCRA5Bf9ZBQgBWAFWED0Vc9X4A+PV/9W1BfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUFBWW2ECioBhBV+DOQGQVltfc///////////////////////////ghaQUJGQUFZbX4GQUJGQUFZbX2EEYmEEXWEEWIRhBCBWW2EEP1ZbYQQgVluQUJGQUFZbX2EEc4JhBEhWW5BQkZBQVltfYQSEgmEEaVZbkFCRkFBWW2EElIFhBHpWW4JSUFBWW19gIIIBkFBhBK1fgwGEYQSLVluSkVBQVltfgZBQkZBQVlthBMWBYQSzVluCUlBQVltfYCCCAZBQYQTeX4MBhGEEvFZbkpFQUFZbX4GQUJKRUFBWW1BWW19hBPxfg2EE5FZbkVBhBQeCYQTuVltfggGQUJGQUFZbX2EFG4JhBPFWW5FQgZBQkZBQVltfYQUvgmEEIFZbkFCRkFBWW2EFP4FhBSVWW4JSUFBWW19gIIIBkFBhBVhfgwGEYQU2VluSkVBQVv5ggGBAUnNDAAAAAAAAAAAAAAAAAAAAAAAAAF+AYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQc3ojjymNVfjbJ7hg7/HgLRUosWWFYAFfYQEACoFUgXP//////////////////////////wIZFpCDc///////////////////////////FgIXkFVQNIAVYLVXX4D9W1BhAceAYQDDXzlf8/5ggGBAUmAENhBhADdXXzVg4ByAYw+vECEUYQBCV4BjHWPiTRRhAF5XgGN0d/cAFGEAiFdhAD5WWzZhAD5XAFtfgP1bYQBcYASANgOBAZBhAFeRkGEBNVZbYQCyVlsAWzSAFWEAaVdfgP1bUGEAcmEAy1ZbYEBRYQB/kZBhAXhWW2BAUYCRA5DzWzSAFWEAk1dfgP1bUGEAnGEA0VZbYEBRYQCpkZBhAXhWW2BAUYCRA5DzW4Bz//////////////////////////8W/1tgA1SBVltgAlSBVltfgP1bX3P//////////////////////////4IWkFCRkFBWW19hAQSCYQDbVluQUJGQUFZbYQEUgWEA+lZbgRRhAR5XX4D9W1BWW1+BNZBQYQEvgWEBC1ZbkpFQUFZbX2AggoQDEhVhAUpXYQFJYQDXVltbX2EBV4SChQFhASFWW5FQUJKRUFBWW1+BkFCRkFBWW2EBcoFhAWBWW4JSUFBWW19gIIIBkFBhAYtfgwGEYQFpVluSkVBQVv6iZGlwZnNYIhIgeJ3+vUw6BPBQJteR8YhtD8wTPcLbIRYEWUqAC1vSMjBkc29sY0MACBkAM6JkaXBmc1giEiC/VJdrQtHrDXIpsr3UjopR7bzpzAzhLuPtNOmtg7kBFWRzb2xjQwAIGQAzYIBgQFJzQwAAAAAAAAAAAAAAAAAAAAAAAABfgGEBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUHN6I48pjVX42ye4YO/x4C0VKLFlhWABX2EBAAqBVIFz//////////////////////////8CGRaQg3P//////////////////////////xYCF5BVUDSAFWC1V1+A/VtQYQHHgGEAw185X/P+YIBgQFJgBDYQYQA3V181YOAcgGMPrxAhFGEAQleAYx1j4k0UYQBeV4BjdHf3ABRhAIhXYQA+Vls2YQA+VwBbX4D9W2EAXGAEgDYDgQGQYQBXkZBhATVWW2EAslZbAFs0gBVhAGlXX4D9W1BhAHJhAMtWW2BAUWEAf5GQYQF4VltgQFGAkQOQ81s0gBVhAJNXX4D9W1BhAJxhANFWW2BAUWEAqZGQYQF4VltgQFGAkQOQ81uAc///////////////////////////Fv9bYANUgVZbYAJUgVZbX4D9W19z//////////////////////////+CFpBQkZBQVltfYQEEgmEA21ZbkFCRkFBWW2EBFIFhAPpWW4EUYQEeV1+A/VtQVltfgTWQUGEBL4FhAQtWW5KRUFBWW19gIIKEAxIVYQFKV2EBSWEA11ZbW19hAVeEgoUBYQEhVluRUFCSkVBQVltfgZBQkZBQVlthAXKBYQFgVluCUlBQVltfYCCCAZBQYQGLX4MBhGEBaVZbkpFQUFb+omRpcGZzWCISIHid/r1MOgTwUCbXkfGIbQ/MEz3C2yEWBFlKgAtb0jIwZHNvbGNDAAgZADM=",
"maxFeePerGas": {
"bytes": "yOKYzA=="
},
"maxPriorityFeePerGas": {
"bytes": "BlE2qw=="
},
"nonce": "8",
"r": "uEHvjD26MNMUOogGHEac8h8Gyz2aw+Nbzc+mi2kmRS8=",
"receipt": {
"cumulativeGasUsed": "771853",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"s": "E8IkJGk6TjnE8pl+DO4Ty/WfNsTFicVgSpPI2ayGblU=",
"status": "SUCCEEDED",
"to": "tmHJ8wNCN1AUM716ZYd4S3AgslQ=",
"type": "TRX_TYPE_DYNAMIC_FEE",
"value": {
"bytes": "d1bOoA=="
}
}
],
"ver": 3
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,71 @@
{
"hash": "N6zSvR8q4sVWyJKo2vdOcc1KsrHinU95Ki/q4tjYQoc=",
"header": {
"baseFeePerGas": {
"bytes": "NCdwwA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"hash": "N6zSvR8q4sVWyJKo2vdOcc1KsrHinU95Ki/q4tjYQoc=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "MFX8J9a0oI6wcDOg0e51WkspiAhvKKYYnqwbUHUl7rE=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"timestamp": "1970-01-01T00:00:10Z",
"transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "1",
"size": "611",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "2",
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "3",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasLimit": "30000000",
"index": 1,
"input": "MFX8J9a0oI6wcDOg0e51WkspiAhvKKYYnqwbUHUl7rE="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "5",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "6",
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "7",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "8",
"gasLimit": "30000000",
"index": 1
}
],
"ver": 3
}

View file

@ -0,0 +1,119 @@
{
"hash": "N6zSvR8q4sVWyJKo2vdOcc1KsrHinU95Ki/q4tjYQoc=",
"header": {
"baseFeePerGas": {
"bytes": "NCdwwA=="
},
"blobGasUsed": "0",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"difficulty": {
"bytes": "AA=="
},
"excessBlobGas": "0",
"gasLimit": "4712388",
"hash": "N6zSvR8q4sVWyJKo2vdOcc1KsrHinU95Ki/q4tjYQoc=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"number": "1",
"parentBeaconRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"parentHash": "MFX8J9a0oI6wcDOg0e51WkspiAhvKKYYnqwbUHUl7rE=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"requestsHash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
"stateRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"timestamp": "1970-01-01T00:00:10Z",
"transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"withdrawalsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE="
},
"number": "1",
"size": "611",
"systemCalls": [
{
"address": "AA899tcygH7xMZ+3uLuFItC+rAI=",
"beginOrdinal": "1",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "4",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "2",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "3",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
},
{
"address": "AAD5CCfxxToQy3oCM1sXUyAAKTU=",
"beginOrdinal": "5",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "8",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "6",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "7",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1,
"input": "MFX8J9a0oI6wcDOg0e51WkspiAhvKKYYnqwbUHUl7rE="
},
{
"address": "AAAJYe9IDrVegNGa2DV5pkwAcAI=",
"beginOrdinal": "9",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "12",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "10",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "11",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
},
{
"address": "AAC73cfOSIZC+1efiwDzpZAAclE=",
"beginOrdinal": "13",
"callType": "CALL",
"caller": "//////////////////////////4=",
"endOrdinal": "16",
"gasChanges": [
{
"newValue": "30000000",
"ordinal": "14",
"reason": "REASON_CALL_INITIAL_BALANCE"
},
{
"oldValue": "30000000",
"ordinal": "15",
"reason": "REASON_CALL_LEFT_OVER_RETURNED"
}
],
"gasLimit": "30000000",
"index": 1
}
],
"ver": 4
}

View file

@ -0,0 +1,119 @@
{
"hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8=",
"number": "1",
"size": "501",
"header": {
"parentHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"uncleHash": "HcxN6N7HXXqrhbVntszUGtMSRRuUinQT8KFC/UDUk0c=",
"coinbase": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"stateRoot": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"transactionsRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"receiptRoot": "VugfFxvMVab/g0XmksD4bltI4BuZbK3AAWIvteNjtCE=",
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
"difficulty": {
"bytes": "AA=="
},
"number": "1",
"timestamp": "1970-01-01T00:00:00Z",
"mixHash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"hash": "sr0uqeYWyrLV1vijvIG6fe+0mu8LRG6FLMHv5UmUxK8="
},
"transactionTraces": [
{
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"gasPrice": {
"bytes": "AQ=="
},
"gasLimit": "1",
"value": {
"bytes": "AQ=="
},
"v": "AQ==",
"r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKo=",
"from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"beginOrdinal": "1",
"endOrdinal": "4",
"status": "SUCCEEDED",
"receipt": {
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"calls": [
{
"index": 1,
"callType": "CALL",
"caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"beginOrdinal": "2",
"endOrdinal": "3"
}
]
},
{
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"gasPrice": {
"bytes": "AQ=="
},
"gasLimit": "1",
"value": {
"bytes": "AQ=="
},
"v": "AQ==",
"r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"index": 1,
"hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALs=",
"from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"beginOrdinal": "5",
"endOrdinal": "8",
"status": "SUCCEEDED",
"receipt": {
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"calls": [
{
"index": 1,
"callType": "CALL",
"caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"beginOrdinal": "6",
"endOrdinal": "7"
}
]
},
{
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"gasPrice": {
"bytes": "AQ=="
},
"gasLimit": "1",
"value": {
"bytes": "AQ=="
},
"v": "AQ==",
"r": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"s": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"index": 2,
"hash": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMw=",
"from": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"beginOrdinal": "9",
"endOrdinal": "12",
"status": "SUCCEEDED",
"receipt": {
"logsBloom": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
},
"calls": [
{
"index": 1,
"callType": "CALL",
"caller": "AAAAAAAAAAAAAAAAAAAAAAAAAAE=",
"address": "AAAAAAAAAAAAAAAAAAAAAAAAAAI=",
"beginOrdinal": "10",
"endOrdinal": "11"
}
]
}
],
"ver": 4
}

1
go.mod
View file

@ -251,6 +251,7 @@ require (
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/spf13/viper v1.18.2 // indirect github.com/spf13/viper v1.18.2 // indirect
github.com/streadway/amqp v1.1.0 // indirect github.com/streadway/amqp v1.1.0 // indirect
github.com/streamingfast/firehose-ethereum/types v0.0.0-20250228213600-8981db4edefa // indirect
github.com/stumble/gorocksdb v0.0.3 // indirect github.com/stumble/gorocksdb v0.0.3 // indirect
github.com/tendermint/btcd v0.1.1 // indirect github.com/tendermint/btcd v0.1.1 // indirect
github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect

2
go.sum
View file

@ -2681,6 +2681,8 @@ github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1Sd
github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM= github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM=
github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg= github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg=
github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
github.com/streamingfast/firehose-ethereum/types v0.0.0-20250228213600-8981db4edefa h1:QhMsEDwwfYCxfNdqmzHlT+4JlY7HXEvVubj0oyYyWOA=
github.com/streamingfast/firehose-ethereum/types v0.0.0-20250228213600-8981db4edefa/go.mod h1:CG22ObinxSbKIP19bAj0uro0a290kzZTiBbjL8VR0SE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=

View file

@ -60,6 +60,12 @@ type Config struct {
// Record information useful for VM and contract debugging // Record information useful for VM and contract debugging
EnablePreimageRecording bool `hcl:"vmdebug,optional" toml:"vmdebug,optional"` EnablePreimageRecording bool `hcl:"vmdebug,optional" toml:"vmdebug,optional"`
// Name of tracer which should record internal VM operations (costly)
VMTrace string `hcl:"vmtrace,optional" toml:"vmtrace,optional"`
// Tracer configuration (JSON)
VMTraceJSONConfig string `hcl:"vmtrace.jsonconfig,optional" toml:"vmtrace,optional"`
// DataDir is the directory to store the state in // DataDir is the directory to store the state in
DataDir string `hcl:"datadir,optional" toml:"datadir,optional"` DataDir string `hcl:"datadir,optional" toml:"datadir,optional"`
@ -609,6 +615,8 @@ func DefaultConfig() *Config {
Verbosity: 3, Verbosity: 3,
LogLevel: "", LogLevel: "",
EnablePreimageRecording: false, EnablePreimageRecording: false,
VMTrace: "",
VMTraceJSONConfig: "",
DataDir: DefaultDataDir(), DataDir: DefaultDataDir(),
Ancient: "", Ancient: "",
DBEngine: "pebble", DBEngine: "pebble",
@ -953,6 +961,8 @@ func (c *Config) buildEth(stack *node.Node, accountManager *accounts.Manager) (*
} }
n.EnablePreimageRecording = c.EnablePreimageRecording n.EnablePreimageRecording = c.EnablePreimageRecording
n.VMTrace = c.VMTrace
n.VMTraceJsonConfig = c.VMTraceJSONConfig
// txpool options // txpool options
{ {