Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
f4db039
chore(metrics): use libevm metrics package and delete local metrics
qdm12 Jan 13, 2025
bf66403
tests: only enable metrics and revert to disable if already disabled
qdm12 Jan 13, 2025
c044c16
Enable metrics by default with init block
qdm12 Jan 13, 2025
7f5ccd5
Change copyright notice from 2025 to 2021-2025
qdm12 Jan 13, 2025
a40e655
Enable libevm metrics in initializeMetrics
qdm12 Jan 15, 2025
6850359
`testutils.WithMetrics` function in plugin/evm
qdm12 Jan 15, 2025
c9adf31
metrics/prometheus: add test cases for full coverage
qdm12 Jan 15, 2025
fb00e52
metrics/prometheus: add metric name to error wrappings
qdm12 Jan 15, 2025
517991d
Minor changes
qdm12 Jan 15, 2025
02bcaab
Enforce testutils package is only imported by test files outside plug…
qdm12 Jan 15, 2025
4e48d04
Rework regex matching for lint_allowed_geth_imports.sh
qdm12 Feb 17, 2025
3742329
Rework `TestMustNotImport` to check for imports in non test code
qdm12 Feb 17, 2025
091645c
Add comment on metrics.Enabled = true in `initializeMetrics`
qdm12 Feb 17, 2025
fa66c88
Clarify testutils package comment
qdm12 Feb 17, 2025
8db925d
Skip nil metric types
qdm12 Feb 24, 2025
796d013
TestGatherer_Gather tests nil metrics
qdm12 Feb 24, 2025
39b1067
Remove restrictions on plugin/evm/testutils package imports
qdm12 Mar 10, 2025
275e20c
Move plugin/evm/testutils to internal/testutils
qdm12 Mar 10, 2025
f7adf7f
Add mutex for WithMetrics call
qdm12 Mar 17, 2025
5cb9030
Improve Registry comment
qdm12 Mar 17, 2025
ed153c0
Improve readability of Gather() body for error handling
qdm12 Mar 18, 2025
53cfe76
Use testutils.WithMetrics in TestGatherer_Gather
qdm12 Mar 18, 2025
a761447
Use sentinel error for metric type not supported
qdm12 Mar 18, 2025
502a699
Add missing copyright notice to testutils/metrics.go
qdm12 Mar 18, 2025
f235349
registerNilMetrics function
qdm12 Mar 18, 2025
a1f5730
Add context to require.NoError in test
qdm12 Mar 18, 2025
4f22cf1
Replace Registry comment with interface assertion
ARR4N Mar 20, 2025
bc0521c
Fix script
qdm12 Mar 24, 2025
a6dabd3
chore(deps): bump libevm to v1.13.14-0.2.0.rc.4
qdm12 Mar 26, 2025
7ff3ab8
Skip handling metrics.GaugeInfo
qdm12 Mar 28, 2025
cef1c3d
fix(metrics): avoid conflicts between subnet-evm and libevm
qdm12 Mar 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 49 additions & 35 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import (
"github.com/ava-labs/libevm/ethdb"
"github.com/ava-labs/libevm/event"
"github.com/ava-labs/libevm/log"
"github.com/ava-labs/libevm/metrics"
"github.com/ava-labs/libevm/trie"
"github.com/ava-labs/libevm/triedb"
"github.com/ava-labs/subnet-evm/commontype"
Expand All @@ -55,51 +56,64 @@ import (
"github.com/ava-labs/subnet-evm/core/state/snapshot"
"github.com/ava-labs/subnet-evm/core/types"
"github.com/ava-labs/subnet-evm/internal/version"
"github.com/ava-labs/subnet-evm/metrics"
"github.com/ava-labs/subnet-evm/params"
"github.com/ava-labs/subnet-evm/triedb/hashdb"
"github.com/ava-labs/subnet-evm/triedb/pathdb"

// Force libevm metrics of the same name to be registered first.
_ "github.com/ava-labs/libevm/core"
)

// ====== If resolving merge conflicts ======
//
// All calls to metrics.NewRegistered*() for metrics also defined in libevm/core have been
// replaced either with:
// - metrics.GetOrRegister*() to get a metric already registered in libevm/core, or register it
// here otherwise
// - [getOrOverrideAsRegisteredCounter] to get a metric already registered in libevm/core
// only if it is a [metrics.Counter]. If it is not, the metric is unregistered and registered
// as a [metrics.Counter] here.
//
// These replacements ensure the same metrics are shared between the two packages.
var (
accountReadTimer = metrics.NewRegisteredCounter("chain/account/reads", nil)
accountHashTimer = metrics.NewRegisteredCounter("chain/account/hashes", nil)
accountUpdateTimer = metrics.NewRegisteredCounter("chain/account/updates", nil)
accountCommitTimer = metrics.NewRegisteredCounter("chain/account/commits", nil)
storageReadTimer = metrics.NewRegisteredCounter("chain/storage/reads", nil)
storageHashTimer = metrics.NewRegisteredCounter("chain/storage/hashes", nil)
storageUpdateTimer = metrics.NewRegisteredCounter("chain/storage/updates", nil)
storageCommitTimer = metrics.NewRegisteredCounter("chain/storage/commits", nil)
snapshotAccountReadTimer = metrics.NewRegisteredCounter("chain/snapshot/account/reads", nil)
snapshotStorageReadTimer = metrics.NewRegisteredCounter("chain/snapshot/storage/reads", nil)
snapshotCommitTimer = metrics.NewRegisteredCounter("chain/snapshot/commits", nil)

triedbCommitTimer = metrics.NewRegisteredCounter("chain/triedb/commits", nil)

blockInsertTimer = metrics.NewRegisteredCounter("chain/block/inserts", nil)
blockInsertCount = metrics.NewRegisteredCounter("chain/block/inserts/count", nil)
blockContentValidationTimer = metrics.NewRegisteredCounter("chain/block/validations/content", nil)
blockStateInitTimer = metrics.NewRegisteredCounter("chain/block/inits/state", nil)
blockExecutionTimer = metrics.NewRegisteredCounter("chain/block/executions", nil)
blockTrieOpsTimer = metrics.NewRegisteredCounter("chain/block/trie", nil)
blockValidationTimer = metrics.NewRegisteredCounter("chain/block/validations/state", nil)
blockWriteTimer = metrics.NewRegisteredCounter("chain/block/writes", nil)

acceptorQueueGauge = metrics.NewRegisteredGauge("chain/acceptor/queue/size", nil)
acceptorWorkTimer = metrics.NewRegisteredCounter("chain/acceptor/work", nil)
acceptorWorkCount = metrics.NewRegisteredCounter("chain/acceptor/work/count", nil)
accountReadTimer = getOrOverrideAsRegisteredCounter("chain/account/reads", nil)
accountHashTimer = getOrOverrideAsRegisteredCounter("chain/account/hashes", nil)
accountUpdateTimer = getOrOverrideAsRegisteredCounter("chain/account/updates", nil)
accountCommitTimer = getOrOverrideAsRegisteredCounter("chain/account/commits", nil)
storageReadTimer = getOrOverrideAsRegisteredCounter("chain/storage/reads", nil)
storageHashTimer = getOrOverrideAsRegisteredCounter("chain/storage/hashes", nil)
storageUpdateTimer = getOrOverrideAsRegisteredCounter("chain/storage/updates", nil)
storageCommitTimer = getOrOverrideAsRegisteredCounter("chain/storage/commits", nil)
snapshotAccountReadTimer = getOrOverrideAsRegisteredCounter("chain/snapshot/account/reads", nil)
snapshotStorageReadTimer = getOrOverrideAsRegisteredCounter("chain/snapshot/storage/reads", nil)
snapshotCommitTimer = getOrOverrideAsRegisteredCounter("chain/snapshot/commits", nil)

triedbCommitTimer = getOrOverrideAsRegisteredCounter("chain/triedb/commits", nil)

blockInsertTimer = metrics.GetOrRegisterCounter("chain/block/inserts", nil)
blockInsertCount = metrics.GetOrRegisterCounter("chain/block/inserts/count", nil)
blockContentValidationTimer = metrics.GetOrRegisterCounter("chain/block/validations/content", nil)
blockStateInitTimer = metrics.GetOrRegisterCounter("chain/block/inits/state", nil)
blockExecutionTimer = metrics.GetOrRegisterCounter("chain/block/executions", nil)
blockTrieOpsTimer = metrics.GetOrRegisterCounter("chain/block/trie", nil)
blockValidationTimer = metrics.GetOrRegisterCounter("chain/block/validations/state", nil)
blockWriteTimer = metrics.GetOrRegisterCounter("chain/block/writes", nil)

acceptorQueueGauge = metrics.GetOrRegisterGauge("chain/acceptor/queue/size", nil)
acceptorWorkTimer = metrics.GetOrRegisterCounter("chain/acceptor/work", nil)
acceptorWorkCount = metrics.GetOrRegisterCounter("chain/acceptor/work/count", nil)
processedBlockGasUsedCounter = metrics.GetOrRegisterCounter("chain/block/gas/used/processed", nil)
lastAcceptedBlockBaseFeeGauge = metrics.NewRegisteredGauge("chain/block/fee/basefee", nil)
blockTotalFeesGauge = metrics.NewRegisteredGauge("chain/block/fee/total", nil)
processedBlockGasUsedCounter = metrics.NewRegisteredCounter("chain/block/gas/used/processed", nil)
acceptedBlockGasUsedCounter = metrics.NewRegisteredCounter("chain/block/gas/used/accepted", nil)
badBlockCounter = metrics.NewRegisteredCounter("chain/block/bad/count", nil)
acceptedBlockGasUsedCounter = metrics.GetOrRegisterCounter("chain/block/gas/used/accepted", nil)
badBlockCounter = metrics.GetOrRegisterCounter("chain/block/bad/count", nil)

txUnindexTimer = metrics.NewRegisteredCounter("chain/txs/unindex", nil)
acceptedTxsCounter = metrics.NewRegisteredCounter("chain/txs/accepted", nil)
processedTxsCounter = metrics.NewRegisteredCounter("chain/txs/processed", nil)
txUnindexTimer = metrics.GetOrRegisterCounter("chain/txs/unindex", nil)
acceptedTxsCounter = metrics.GetOrRegisterCounter("chain/txs/accepted", nil)
processedTxsCounter = metrics.GetOrRegisterCounter("chain/txs/processed", nil)

acceptedLogsCounter = metrics.NewRegisteredCounter("chain/logs/accepted", nil)
processedLogsCounter = metrics.NewRegisteredCounter("chain/logs/processed", nil)
acceptedLogsCounter = metrics.GetOrRegisterCounter("chain/logs/accepted", nil)
processedLogsCounter = metrics.GetOrRegisterCounter("chain/logs/processed", nil)

ErrRefuseToCorruptArchiver = errors.New("node has operated with pruning disabled, shutting down to prevent missing tries")

Expand Down
26 changes: 26 additions & 0 deletions core/blockchain_ext.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// (c) 2024 Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package core

import "github.com/ava-labs/libevm/metrics"

// getOrOverrideAsRegisteredCounter searches for a metric already registered
// with `name`. If a metric is found and it is a [metrics.Counter], it is returned. If a
// metric is found and it is not a [metrics.Counter], it is unregistered and replaced with
// a new registered [metrics.Counter]. If no metric is found, a new [metrics.Counter] is constructed
// and registered.
//
// This is necessary for a metric defined in libevm with the same name but a
// different type to what we expect.
func getOrOverrideAsRegisteredCounter(name string, r metrics.Registry) metrics.Counter {
if r == nil {
r = metrics.DefaultRegistry
}

if c, ok := r.GetOrRegister(name, metrics.NewCounter).(metrics.Counter); ok {
return c
}
// `name` must have already been registered to be any other type
r.Unregister(name)
return metrics.NewRegisteredCounter(name, r)
}
2 changes: 2 additions & 0 deletions core/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ func TestMain(m *testing.M) {
opts := []goleak.Option{
// No good way to shut down these goroutines:
goleak.IgnoreTopFunction("github.com/ava-labs/subnet-evm/core/state/snapshot.(*diskLayer).generate"),
goleak.IgnoreTopFunction("github.com/ava-labs/libevm/core.(*txSenderCacher).cache"),
goleak.IgnoreTopFunction("github.com/ava-labs/libevm/metrics.(*meterArbiter).tick"),
goleak.IgnoreTopFunction("github.com/ava-labs/subnet-evm/metrics.(*meterArbiter).tick"),
goleak.IgnoreTopFunction("github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain"),
}
Expand Down
2 changes: 1 addition & 1 deletion core/rawdb/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import (
"github.com/ava-labs/avalanchego/utils/wrappers"
"github.com/ava-labs/libevm/common"
"github.com/ava-labs/libevm/crypto"
"github.com/ava-labs/subnet-evm/metrics"
"github.com/ava-labs/libevm/metrics"
)

// The fields below define the low level database schema prefixing.
Expand Down
92 changes: 49 additions & 43 deletions core/state/snapshot/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@ import (
"github.com/ava-labs/libevm/ethdb"
"github.com/ava-labs/libevm/libevm/stateconf"
"github.com/ava-labs/libevm/log"
"github.com/ava-labs/libevm/metrics"
"github.com/ava-labs/libevm/triedb"
"github.com/ava-labs/subnet-evm/core/rawdb"
"github.com/ava-labs/subnet-evm/metrics"
)

const (
Expand All @@ -55,49 +55,55 @@ const (
skipGenThreshold = 500 * time.Millisecond
)

// ====== If resolving merge conflicts ======
//
// All calls to metrics.NewRegistered*() for metrics also defined in libevm/core/state/snapshot
// have been replaced with metrics.GetOrRegister*() to get metrics already registered in
// libevm/core/state/snapshot or register them here otherwise. These replacements ensure the
// same metrics are shared between the two packages.
var (
snapshotCleanAccountHitMeter = metrics.NewRegisteredMeter("state/snapshot/clean/account/hit", nil)
snapshotCleanAccountMissMeter = metrics.NewRegisteredMeter("state/snapshot/clean/account/miss", nil)
snapshotCleanAccountInexMeter = metrics.NewRegisteredMeter("state/snapshot/clean/account/inex", nil)
snapshotCleanAccountReadMeter = metrics.NewRegisteredMeter("state/snapshot/clean/account/read", nil)
snapshotCleanAccountWriteMeter = metrics.NewRegisteredMeter("state/snapshot/clean/account/write", nil)

snapshotCleanStorageHitMeter = metrics.NewRegisteredMeter("state/snapshot/clean/storage/hit", nil)
snapshotCleanStorageMissMeter = metrics.NewRegisteredMeter("state/snapshot/clean/storage/miss", nil)
snapshotCleanStorageInexMeter = metrics.NewRegisteredMeter("state/snapshot/clean/storage/inex", nil)
snapshotCleanStorageReadMeter = metrics.NewRegisteredMeter("state/snapshot/clean/storage/read", nil)
snapshotCleanStorageWriteMeter = metrics.NewRegisteredMeter("state/snapshot/clean/storage/write", nil)

snapshotDirtyAccountHitMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/account/hit", nil)
snapshotDirtyAccountMissMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/account/miss", nil)
snapshotDirtyAccountInexMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/account/inex", nil)
snapshotDirtyAccountReadMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/account/read", nil)
snapshotDirtyAccountWriteMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/account/write", nil)

snapshotDirtyStorageHitMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/storage/hit", nil)
snapshotDirtyStorageMissMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/storage/miss", nil)
snapshotDirtyStorageInexMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/storage/inex", nil)
snapshotDirtyStorageReadMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/storage/read", nil)
snapshotDirtyStorageWriteMeter = metrics.NewRegisteredMeter("state/snapshot/dirty/storage/write", nil)

snapshotDirtyAccountHitDepthHist = metrics.NewRegisteredHistogram("state/snapshot/dirty/account/hit/depth", nil, metrics.NewExpDecaySample(1028, 0.015))
snapshotDirtyStorageHitDepthHist = metrics.NewRegisteredHistogram("state/snapshot/dirty/storage/hit/depth", nil, metrics.NewExpDecaySample(1028, 0.015))

snapshotFlushAccountItemMeter = metrics.NewRegisteredMeter("state/snapshot/flush/account/item", nil)
snapshotFlushAccountSizeMeter = metrics.NewRegisteredMeter("state/snapshot/flush/account/size", nil)
snapshotFlushStorageItemMeter = metrics.NewRegisteredMeter("state/snapshot/flush/storage/item", nil)
snapshotFlushStorageSizeMeter = metrics.NewRegisteredMeter("state/snapshot/flush/storage/size", nil)

snapshotBloomIndexTimer = metrics.NewRegisteredResettingTimer("state/snapshot/bloom/index", nil)
snapshotBloomErrorGauge = metrics.NewRegisteredGaugeFloat64("state/snapshot/bloom/error", nil)

snapshotBloomAccountTrueHitMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/account/truehit", nil)
snapshotBloomAccountFalseHitMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/account/falsehit", nil)
snapshotBloomAccountMissMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/account/miss", nil)

snapshotBloomStorageTrueHitMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/storage/truehit", nil)
snapshotBloomStorageFalseHitMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/storage/falsehit", nil)
snapshotBloomStorageMissMeter = metrics.NewRegisteredMeter("state/snapshot/bloom/storage/miss", nil)
snapshotCleanAccountHitMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/account/hit", nil)
snapshotCleanAccountMissMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/account/miss", nil)
snapshotCleanAccountInexMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/account/inex", nil)
snapshotCleanAccountReadMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/account/read", nil)
snapshotCleanAccountWriteMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/account/write", nil)

snapshotCleanStorageHitMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/storage/hit", nil)
snapshotCleanStorageMissMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/storage/miss", nil)
snapshotCleanStorageInexMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/storage/inex", nil)
snapshotCleanStorageReadMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/storage/read", nil)
snapshotCleanStorageWriteMeter = metrics.GetOrRegisterMeter("state/snapshot/clean/storage/write", nil)

snapshotDirtyAccountHitMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/account/hit", nil)
snapshotDirtyAccountMissMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/account/miss", nil)
snapshotDirtyAccountInexMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/account/inex", nil)
snapshotDirtyAccountReadMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/account/read", nil)
snapshotDirtyAccountWriteMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/account/write", nil)

snapshotDirtyStorageHitMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/storage/hit", nil)
snapshotDirtyStorageMissMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/storage/miss", nil)
snapshotDirtyStorageInexMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/storage/inex", nil)
snapshotDirtyStorageReadMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/storage/read", nil)
snapshotDirtyStorageWriteMeter = metrics.GetOrRegisterMeter("state/snapshot/dirty/storage/write", nil)

snapshotDirtyAccountHitDepthHist = metrics.GetOrRegisterHistogram("state/snapshot/dirty/account/hit/depth", nil, metrics.NewExpDecaySample(1028, 0.015))
snapshotDirtyStorageHitDepthHist = metrics.GetOrRegisterHistogram("state/snapshot/dirty/storage/hit/depth", nil, metrics.NewExpDecaySample(1028, 0.015))

snapshotFlushAccountItemMeter = metrics.GetOrRegisterMeter("state/snapshot/flush/account/item", nil)
snapshotFlushAccountSizeMeter = metrics.GetOrRegisterMeter("state/snapshot/flush/account/size", nil)
snapshotFlushStorageItemMeter = metrics.GetOrRegisterMeter("state/snapshot/flush/storage/item", nil)
snapshotFlushStorageSizeMeter = metrics.GetOrRegisterMeter("state/snapshot/flush/storage/size", nil)

snapshotBloomIndexTimer = metrics.GetOrRegisterResettingTimer("state/snapshot/bloom/index", nil)
snapshotBloomErrorGauge = metrics.GetOrRegisterGaugeFloat64("state/snapshot/bloom/error", nil)

snapshotBloomAccountTrueHitMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/account/truehit", nil)
snapshotBloomAccountFalseHitMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/account/falsehit", nil)
snapshotBloomAccountMissMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/account/miss", nil)

snapshotBloomStorageTrueHitMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/storage/truehit", nil)
snapshotBloomStorageFalseHitMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/storage/falsehit", nil)
snapshotBloomStorageMissMeter = metrics.GetOrRegisterMeter("state/snapshot/bloom/storage/miss", nil)

// ErrSnapshotStale is returned from data accessors if the underlying snapshot
// layer had been invalidated due to the chain progressing forward far enough
Expand Down
2 changes: 1 addition & 1 deletion core/state/trie_prefetcher_extra_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ import (
"github.com/ava-labs/avalanchego/database"
"github.com/ava-labs/libevm/common"
"github.com/ava-labs/libevm/ethdb"
"github.com/ava-labs/libevm/metrics"
"github.com/ava-labs/libevm/triedb"
"github.com/ava-labs/subnet-evm/core/rawdb"
"github.com/ava-labs/subnet-evm/core/state/snapshot"
"github.com/ava-labs/subnet-evm/core/types"
"github.com/ava-labs/subnet-evm/metrics"
"github.com/ava-labs/subnet-evm/triedb/hashdb"
"github.com/stretchr/testify/require"
)
Expand Down
2 changes: 1 addition & 1 deletion core/txpool/blobpool/blobpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ import (
"github.com/ava-labs/libevm/common"
"github.com/ava-labs/libevm/event"
"github.com/ava-labs/libevm/log"
"github.com/ava-labs/libevm/metrics"
"github.com/ava-labs/libevm/rlp"
"github.com/ava-labs/subnet-evm/consensus/misc/eip4844"
"github.com/ava-labs/subnet-evm/core"
"github.com/ava-labs/subnet-evm/core/state"
"github.com/ava-labs/subnet-evm/core/txpool"
"github.com/ava-labs/subnet-evm/core/types"
"github.com/ava-labs/subnet-evm/metrics"
"github.com/ava-labs/subnet-evm/params"
"github.com/ava-labs/subnet-evm/plugin/evm/header"
"github.com/holiman/billy"
Expand Down
Loading
Loading