refactor tracing codes (#675)

* update rollup/tracing/tracing.go

* rename

* fix
This commit is contained in:
HAOYUatHZ 2024-03-20 08:44:20 +08:00 committed by GitHub
parent badcd0c432
commit b078aca5f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 24 additions and 24 deletions

View file

@ -59,7 +59,7 @@ func NewBlockValidator(config *params.ChainConfig, blockchain *BlockChain, engin
} }
type tracerWrapper interface { type tracerWrapper interface {
CreateTraceEnvAndGetBlockTrace(*params.ChainConfig, ChainContext, consensus.Engine, ethdb.Database, *state.StateDB, *types.Block, *types.Block, bool) (*types.BlockTrace, error) CreateTraceEnvAndGetBlockTrace(*params.ChainConfig, ChainContext, consensus.Engine, ethdb.Database, *state.StateDB, *types.Header, *types.Block, bool) (*types.BlockTrace, error)
} }
func (v *BlockValidator) SetupTracerAndCircuitCapacityChecker(tracer tracerWrapper) { func (v *BlockValidator) SetupTracerAndCircuitCapacityChecker(tracer tracerWrapper) {
@ -324,7 +324,7 @@ func (v *BlockValidator) createTraceEnvAndGetBlockTrace(block *types.Block) (*ty
return nil, err return nil, err
} }
return v.tracer.CreateTraceEnvAndGetBlockTrace(v.config, v.bc, v.engine, v.bc.db, statedb, parent, block, true) return v.tracer.CreateTraceEnvAndGetBlockTrace(v.config, v.bc, v.engine, v.bc.db, statedb, parent.Header(), block, true)
} }
func (v *BlockValidator) validateCircuitRowConsumption(block *types.Block) (*types.RowConsumption, error) { func (v *BlockValidator) validateCircuitRowConsumption(block *types.Block) (*types.RowConsumption, error) {

View file

@ -23,7 +23,7 @@ type TraceBlock interface {
} }
type scrollTracerWrapper interface { type scrollTracerWrapper interface {
CreateTraceEnvAndGetBlockTrace(*params.ChainConfig, core.ChainContext, consensus.Engine, ethdb.Database, *state.StateDB, *types.Block, *types.Block, bool) (*types.BlockTrace, error) CreateTraceEnvAndGetBlockTrace(*params.ChainConfig, core.ChainContext, consensus.Engine, ethdb.Database, *state.StateDB, *types.Header, *types.Block, bool) (*types.BlockTrace, error)
} }
// GetBlockTraceByNumberOrHash replays the block and returns the structured BlockTrace by hash or number. // GetBlockTraceByNumberOrHash replays the block and returns the structured BlockTrace by hash or number.
@ -108,5 +108,5 @@ func (api *API) createTraceEnvAndGetBlockTrace(ctx context.Context, config *Trac
defer release() defer release()
chaindb := api.backend.ChainDb() chaindb := api.backend.ChainDb()
return api.scrollTracerWrapper.CreateTraceEnvAndGetBlockTrace(api.backend.ChainConfig(), api.chainContext(ctx), api.backend.Engine(), chaindb, statedb, parent, block, true) return api.scrollTracerWrapper.CreateTraceEnvAndGetBlockTrace(api.backend.ChainConfig(), api.chainContext(ctx), api.backend.Engine(), chaindb, statedb, parent.Header(), block, true)
} }

View file

@ -36,8 +36,8 @@ func NewTracerWrapper() *TracerWrapper {
} }
// CreateTraceEnvAndGetBlockTrace wraps the whole block tracing logic for a block // CreateTraceEnvAndGetBlockTrace wraps the whole block tracing logic for a block
func (tw *TracerWrapper) CreateTraceEnvAndGetBlockTrace(chainConfig *params.ChainConfig, chainContext core.ChainContext, engine consensus.Engine, chaindb ethdb.Database, statedb *state.StateDB, parent *types.Block, block *types.Block, commitAfterApply bool) (*types.BlockTrace, error) { func (tw *TracerWrapper) CreateTraceEnvAndGetBlockTrace(chainConfig *params.ChainConfig, chainContext core.ChainContext, engine consensus.Engine, chaindb ethdb.Database, statedb *state.StateDB, parentHeader *types.Header, block *types.Block, finaliseStateAfterApply bool) (*types.BlockTrace, error) {
traceEnv, err := CreateTraceEnv(chainConfig, chainContext, engine, chaindb, statedb, parent, block, commitAfterApply) traceEnv, err := CreateTraceEnv(chainConfig, chainContext, engine, chaindb, statedb, parentHeader, block, finaliseStateAfterApply)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -47,7 +47,7 @@ func (tw *TracerWrapper) CreateTraceEnvAndGetBlockTrace(chainConfig *params.Chai
type TraceEnv struct { type TraceEnv struct {
logConfig *logger.Config logConfig *logger.Config
commitAfterApply bool finaliseStateAfterApply bool
chainConfig *params.ChainConfig chainConfig *params.ChainConfig
coinbase common.Address coinbase common.Address
@ -88,10 +88,10 @@ type txTraceTask struct {
index int index int
} }
func CreateTraceEnvHelper(chainConfig *params.ChainConfig, logConfig *logger.Config, blockCtx vm.BlockContext, startL1QueueIndex uint64, coinbase common.Address, statedb *state.StateDB, rootBefore common.Hash, block *types.Block, commitAfterApply bool) *TraceEnv { func CreateTraceEnvHelper(chainConfig *params.ChainConfig, logConfig *logger.Config, blockCtx vm.BlockContext, startL1QueueIndex uint64, coinbase common.Address, statedb *state.StateDB, rootBefore common.Hash, block *types.Block, finaliseStateAfterApply bool) *TraceEnv {
return &TraceEnv{ return &TraceEnv{
logConfig: logConfig, logConfig: logConfig,
commitAfterApply: commitAfterApply, finaliseStateAfterApply: finaliseStateAfterApply,
chainConfig: chainConfig, chainConfig: chainConfig,
coinbase: coinbase, coinbase: coinbase,
signer: types.MakeSigner(chainConfig, block.Number(), block.Time()), signer: types.MakeSigner(chainConfig, block.Number(), block.Time()),
@ -110,7 +110,7 @@ func CreateTraceEnvHelper(chainConfig *params.ChainConfig, logConfig *logger.Con
} }
} }
func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainContext, engine consensus.Engine, chaindb ethdb.Database, statedb *state.StateDB, parent *types.Block, block *types.Block, commitAfterApply bool) (*TraceEnv, error) { func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainContext, engine consensus.Engine, chaindb ethdb.Database, statedb *state.StateDB, parentHeader *types.Header, block *types.Block, finaliseStateAfterApply bool) (*TraceEnv, error) {
var coinbase common.Address var coinbase common.Address
var err error var err error
@ -134,10 +134,10 @@ func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainCont
// block `C`. // block `C`.
// `ReadFirstQueueIndexNotInL1Block(B)` will return the correct value // `ReadFirstQueueIndexNotInL1Block(B)` will return the correct value
// `10` on follower nodes. // `10` on follower nodes.
startL1QueueIndex := rawdb.ReadFirstQueueIndexNotInL2Block(chaindb, parent.Hash()) startL1QueueIndex := rawdb.ReadFirstQueueIndexNotInL2Block(chaindb, parentHeader.Hash())
if startL1QueueIndex == nil { if startL1QueueIndex == nil {
log.Error("missing FirstQueueIndexNotInL2Block for block during trace call", "number", parent.NumberU64(), "hash", parent.Hash()) log.Error("missing FirstQueueIndexNotInL2Block for block during trace call", "number", parentHeader.Number.Uint64(), "hash", parentHeader.Hash())
return nil, fmt.Errorf("missing FirstQueueIndexNotInL2Block for block during trace call: hash=%v, parentHash=%vv", block.Hash(), parent.Hash()) return nil, fmt.Errorf("missing FirstQueueIndexNotInL2Block for block during trace call: hash=%v, parentHash=%vv", block.Hash(), parentHeader.Hash())
} }
env := CreateTraceEnvHelper( env := CreateTraceEnvHelper(
chainConfig, chainConfig,
@ -150,9 +150,9 @@ func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainCont
*startL1QueueIndex, *startL1QueueIndex,
coinbase, coinbase,
statedb, statedb,
parent.Root(), parentHeader.Root,
block, block,
commitAfterApply, finaliseStateAfterApply,
) )
key := coinbase.String() key := coinbase.String()
@ -222,7 +222,7 @@ func (env *TraceEnv) GetBlockTrace(block *types.Block) (*types.BlockTrace, error
failed = err failed = err
break break
} }
if env.commitAfterApply { if env.finaliseStateAfterApply {
env.state.Finalise(vmenv.ChainConfig().IsEIP158(block.Number())) env.state.Finalise(vmenv.ChainConfig().IsEIP158(block.Number()))
} }
} }