Skip to content

Commit

Permalink
Fix trace_* api (#540)
Browse files Browse the repository at this point in the history
  • Loading branch information
blxdyx authored Oct 23, 2024
1 parent 989e182 commit d39b982
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 20 deletions.
4 changes: 1 addition & 3 deletions cmd/state/commands/opcode_tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -723,9 +723,7 @@ func runBlock(engine consensus.Engine, ibs *state.IntraBlockState, txnWriter sta
usedGas := new(uint64)
usedBlobGas := new(uint64)
var receipts types.Receipts
// TODO: @blxdyx erigon3 need this?
parent := getHeader(header.Hash(), header.Number.Uint64()-1)
core.InitializeBlockExecution(engine, nil, header, parent, chainConfig, ibs, logger, nil)
core.InitializeBlockExecution(engine, nil, header, chainConfig, ibs, logger, nil)
rules := chainConfig.Rules(block.NumberU64(), block.Time())
for i, txn := range block.Transactions() {
ibs.SetTxContext(i, block.NumberU64())
Expand Down
15 changes: 7 additions & 8 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ func ExecuteBlockEphemerallyForBSC(
receipts types.Receipts
)

parent := chainReader.GetHeader(header.ParentHash, header.Number.Uint64()-1)
if err := InitializeBlockExecution(engine, chainReader, block.Header(), parent, chainConfig, ibs, logger, nil); err != nil {
if err := InitializeBlockExecution(engine, chainReader, block.Header(), chainConfig, ibs, logger, nil); err != nil {
return nil, err
}

Expand Down Expand Up @@ -246,8 +245,7 @@ func ExecuteBlockEphemerally(
gp.AddGas(block.GasLimit()).AddBlobGas(chainConfig.GetMaxBlobGasPerBlock())

// TODO: send the new tracer once we switch to the tracing.Hook
parent := chainReader.GetHeader(header.ParentHash, header.Number.Uint64()-1)
if err := InitializeBlockExecution(engine, chainReader, block.Header(), parent, chainConfig, ibs, logger, nil); err != nil {
if err := InitializeBlockExecution(engine, chainReader, block.Header(), chainConfig, ibs, logger, nil); err != nil {
return nil, err
}

Expand Down Expand Up @@ -500,15 +498,16 @@ func FinalizeBlockExecution(
return newBlock, newTxs, newReceipt, nil
}

func InitializeBlockExecution(engine consensus.Engine, chain consensus.ChainHeaderReader, header, parent *types.Header,
func InitializeBlockExecution(engine consensus.Engine, chain consensus.ChainHeaderReader, header *types.Header,
cc *chain.Config, ibs *state.IntraBlockState, logger log.Logger, tracer *tracing.Hooks,
) error {
// skip this for bsc
if cc.Parlia != nil {
return nil
}
engine.Initialize(cc, chain, header, ibs, func(contract libcommon.Address, data []byte, ibState *state.IntraBlockState, header *types.Header, constCall bool) ([]byte, error) {
return SysCallContract(contract, data, cc, ibState, header, engine, constCall)
}, logger, tracer)
if !cc.IsFeynman(header.Number.Uint64(), header.Time) {
systemcontracts.UpgradeBuildInSystemContract(cc, header.Number, parent.Time, header.Time, ibs, logger)
}

noop := state.NewNoopWriter()
ibs.FinalizeTx(cc.Rules(header.Number.Uint64(), header.Time), noop)
Expand Down
2 changes: 1 addition & 1 deletion core/chain_makers.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ func GenerateChain(config *chain.Config, parent *types.Block, engine consensus.E
}
}
if b.engine != nil {
err := InitializeBlockExecution(b.engine, nil, b.header, b.parent.Header(), config, ibs, logger, nil)
err := InitializeBlockExecution(b.engine, nil, b.header, config, ibs, logger, nil)
if err != nil {
return nil, nil, fmt.Errorf("call to InitializeBlockExecution: %w", err)
}
Expand Down
12 changes: 4 additions & 8 deletions turbo/jsonrpc/trace_filtering.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ import (
"context"
"errors"
"fmt"
"github.com/erigontech/erigon-lib/log/v3"
"github.com/erigontech/erigon/eth/consensuschain"

"github.com/erigontech/erigon/turbo/shards"
jsoniter "github.com/json-iterator/go"
Expand All @@ -31,7 +33,6 @@ import (
"github.com/erigontech/erigon-lib/kv/order"
"github.com/erigontech/erigon-lib/kv/rawdbv3"
"github.com/erigontech/erigon-lib/kv/stream"
"github.com/erigontech/erigon-lib/log/v3"
"github.com/erigontech/erigon/consensus"
"github.com/erigontech/erigon/consensus/ethash"
"github.com/erigontech/erigon/core"
Expand All @@ -40,7 +41,6 @@ import (
"github.com/erigontech/erigon/core/types"
"github.com/erigontech/erigon/core/vm"
"github.com/erigontech/erigon/core/vm/evmtypes"
"github.com/erigontech/erigon/eth/consensuschain"
"github.com/erigontech/erigon/eth/tracers/config"
"github.com/erigontech/erigon/ethdb"
bortypes "github.com/erigontech/erigon/polygon/bor/types"
Expand Down Expand Up @@ -769,13 +769,9 @@ func (api *TraceAPIImpl) callManyTransactions(
}

engine := api.engine()
consensusHeaderReader := consensuschain.NewReader(cfg, dbtx, nil, nil)
consensusHeaderReader := consensuschain.NewReader(cfg, dbtx, api._blockReader, nil)
logger := log.New("trace_filtering")
parent, err := api._blockReader.HeaderByHash(ctx, dbtx, block.ParentHash())
if err != nil {
return nil, nil, err
}
err = core.InitializeBlockExecution(engine.(consensus.Engine), consensusHeaderReader, block.HeaderNoCopy(), parent, cfg, initialState, logger, nil)
err = core.InitializeBlockExecution(engine.(consensus.Engine), consensusHeaderReader, block.HeaderNoCopy(), cfg, initialState, logger, nil)
if err != nil {
return nil, nil, err
}
Expand Down

0 comments on commit d39b982

Please sign in to comment.