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 {
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) {
@ -324,7 +324,7 @@ func (v *BlockValidator) createTraceEnvAndGetBlockTrace(block *types.Block) (*ty
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) {

View file

@ -23,7 +23,7 @@ type TraceBlock 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.
@ -108,5 +108,5 @@ func (api *API) createTraceEnvAndGetBlockTrace(ctx context.Context, config *Trac
defer release()
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
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) {
traceEnv, err := CreateTraceEnv(chainConfig, chainContext, engine, chaindb, statedb, parent, block, commitAfterApply)
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, parentHeader, block, finaliseStateAfterApply)
if err != nil {
return nil, err
}
@ -46,9 +46,9 @@ func (tw *TracerWrapper) CreateTraceEnvAndGetBlockTrace(chainConfig *params.Chai
}
type TraceEnv struct {
logConfig *logger.Config
commitAfterApply bool
chainConfig *params.ChainConfig
logConfig *logger.Config
finaliseStateAfterApply bool
chainConfig *params.ChainConfig
coinbase common.Address
@ -88,15 +88,15 @@ type txTraceTask struct {
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{
logConfig: logConfig,
commitAfterApply: commitAfterApply,
chainConfig: chainConfig,
coinbase: coinbase,
signer: types.MakeSigner(chainConfig, block.Number(), block.Time()),
state: statedb,
blockCtx: blockCtx,
logConfig: logConfig,
finaliseStateAfterApply: finaliseStateAfterApply,
chainConfig: chainConfig,
coinbase: coinbase,
signer: types.MakeSigner(chainConfig, block.Number(), block.Time()),
state: statedb,
blockCtx: blockCtx,
StorageTrace: &types.StorageTrace{
RootBefore: rootBefore,
RootAfter: block.Root(),
@ -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 err error
@ -134,10 +134,10 @@ func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainCont
// block `C`.
// `ReadFirstQueueIndexNotInL1Block(B)` will return the correct value
// `10` on follower nodes.
startL1QueueIndex := rawdb.ReadFirstQueueIndexNotInL2Block(chaindb, parent.Hash())
startL1QueueIndex := rawdb.ReadFirstQueueIndexNotInL2Block(chaindb, parentHeader.Hash())
if startL1QueueIndex == nil {
log.Error("missing FirstQueueIndexNotInL2Block for block during trace call", "number", parent.NumberU64(), "hash", parent.Hash())
return nil, fmt.Errorf("missing FirstQueueIndexNotInL2Block for block during trace call: hash=%v, parentHash=%vv", block.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(), parentHeader.Hash())
}
env := CreateTraceEnvHelper(
chainConfig,
@ -150,9 +150,9 @@ func CreateTraceEnv(chainConfig *params.ChainConfig, chainContext core.ChainCont
*startL1QueueIndex,
coinbase,
statedb,
parent.Root(),
parentHeader.Root,
block,
commitAfterApply,
finaliseStateAfterApply,
)
key := coinbase.String()
@ -222,7 +222,7 @@ func (env *TraceEnv) GetBlockTrace(block *types.Block) (*types.BlockTrace, error
failed = err
break
}
if env.commitAfterApply {
if env.finaliseStateAfterApply {
env.state.Finalise(vmenv.ChainConfig().IsEIP158(block.Number()))
}
}