go-ethereum/core/vm/logger.go
HAOYUatHZ e0ba374ff7
feat: add counter based ccc (#1040)
* add rollup/ccc/logger.go

* update Cargo.toml & Cargo.lock

* update miner/miner.go

* update miner/miner_test.go

* update eth/backend.go

* update `Message` type

* update interfaces.go

* update core/rawdb/accessors_row_consumption.go

* update evm.go

* update accounts/abi/bind/backends/simulated.go

* fix rollup/ccc/logger.go

* update core/state_processor.go

* update rollup/ccc/async_checker_test.go

* update rollup/ccc/async_checker.go

* scroll_worker: var

* scroll_worker: work

* scroll_worker: reorgTrigger

* scroll_worker: worker

* scroll_worker: newWorker

* scroll_worker: rm getCCC

* scroll_worker: checkHeadRowConsumption

* scroll_worker: mainLoop

* scroll_worker: updateSnapshot

* scroll_worker: newWork

* scroll_worker: handlePipelineResult

* scroll_worker: tryCommitNewWork

* scroll_worker: handleForks

* scroll_worker: processTxPool

* scroll_worker: processTxnSlice

* scroll_worker: processReorgedTxns

* scroll_worker: processTxns

* scroll_worker: processTxn

* scroll_worker: commit

* scroll_worker: onTxFailing

* scroll_worker: skipTransaction

* scroll_worker: forceTestErr, scheduleCCCError, skip, onBlockFailingCCC, handleReorg, isCanonical

* scroll_worker: fix 1

* scroll_worker: fix 2

* scroll_worker: fix 3

* scroll_worker: fix 4

* scroll_worker: fix 5

* scroll_worker: fix 6

* scroll_worker: fix 7

* fix: disable headCCCCheck for follower nodes

* feat: double check ancestor RowConsumption before committing

* feat: add miner idle metric

* fix: nil-check curRc

* fix: skip ccc.ErrUnknown txns immediately

* fix: increase keccak usage safety buffer

* fix: ignore RC check if force committing

* fix: properly handle wrapped retryable errors
2024-09-17 16:29:11 +10:00

46 lines
2 KiB
Go

// Copyright 2015 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package vm
import (
"math/big"
"github.com/scroll-tech/go-ethereum/common"
)
// EVMLogger is used to collect execution traces from an EVM transaction
// execution. CaptureState is called for each step of the VM with the
// current VM state.
// Note that reference types are actual VM data structures; make copies
// if you need to retain them beyond the current call.
type EVMLogger interface {
// Transaction level
CaptureTxStart(gasLimit uint64)
CaptureTxEnd(restGas uint64)
// Top call frame
CaptureStart(env *EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int)
CaptureEnd(output []byte, gasUsed uint64, err error)
// Rest of call frames
CaptureEnter(typ OpCode, from common.Address, to common.Address, input []byte, gas uint64, value *big.Int)
CaptureExit(output []byte, gasUsed uint64, err error)
// Opcode level
CaptureState(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error)
CaptureStateAfter(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, rData []byte, depth int, err error)
CaptureFault(pc uint64, op OpCode, gas, cost uint64, scope *ScopeContext, depth int, err error)
// Helper function
IsDebug() bool
}