From 81f2969c64c0f9ffc0cc016cd39200b360789528 Mon Sep 17 00:00:00 2001 From: blxdyx Date: Tue, 2 Jan 2024 19:32:07 +0800 Subject: [PATCH] save --- accounts/abi/bind/backends/simulated.go | 8 ++++++-- turbo/stages/mock_sentry.go | 4 ++-- turbo/transactions/tracing.go | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 3c401323422..1790ecc4e85 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -193,9 +193,13 @@ func (b *SimulatedBackend) emptyPendingBlock() { // stateByBlockNumber retrieves a state by a given blocknumber. func (b *SimulatedBackend) stateByBlockNumber(db kv.Tx, blockNumber *big.Int) *state.IntraBlockState { if blockNumber == nil || blockNumber.Cmp(b.pendingBlock.Number()) == 0 { - return state.New(b.m.NewHistoryStateReader(b.pendingBlock.NumberU64()+1, db)) + return state.New(b.m.NewHistoryStateReader(b.pendingBlock.NumberU64()+1, b.pendingBlock.Time(), db)) } - return state.New(b.m.NewHistoryStateReader(blockNumber.Uint64()+1, db)) + header, err := b.BlockReader().HeaderByNumber(context.Background(), db, blockNumber.Uint64()+1) + if err != nil { + return nil + } + return state.New(b.m.NewHistoryStateReader(blockNumber.Uint64()+1, header.Time, db)) } // CodeAt returns the code associated with a certain account in the blockchain. diff --git a/turbo/stages/mock_sentry.go b/turbo/stages/mock_sentry.go index a7ffad9ea8c..0535f2368d3 100644 --- a/turbo/stages/mock_sentry.go +++ b/turbo/stages/mock_sentry.go @@ -762,8 +762,8 @@ func (ms *MockSentry) HeaderDownload() *headerdownload.HeaderDownload { return ms.sentriesClient.Hd } -func (ms *MockSentry) NewHistoryStateReader(blockNum uint64, tx kv.Tx) state.StateReader { - r, err := rpchelper.CreateHistoryStateReader(tx, blockNum, 0, ms.HistoryV3, ms.ChainConfig.ChainName) +func (ms *MockSentry) NewHistoryStateReader(blockNum uint64, blockTime uint64, tx kv.Tx) state.StateReader { + r, err := rpchelper.CreateHistoryStateReader(tx, blockNum, 0, ms.HistoryV3, blockTime, ms.ChainConfig.ChainName) if err != nil { panic(err) } diff --git a/turbo/transactions/tracing.go b/turbo/transactions/tracing.go index a1ac24d56a6..840a732ba04 100644 --- a/turbo/transactions/tracing.go +++ b/turbo/transactions/tracing.go @@ -39,7 +39,7 @@ type BlockGetter interface { // ComputeTxEnv returns the execution environment of a certain transaction. func ComputeTxEnv(ctx context.Context, engine consensus.EngineReader, block *types.Block, cfg *chain.Config, headerReader services.HeaderReader, dbtx kv.Tx, txIndex int, historyV3 bool) (core.Message, evmtypes.BlockContext, evmtypes.TxContext, *state.IntraBlockState, state.StateReader, error) { - reader, err := rpchelper.CreateHistoryStateReader(dbtx, block.NumberU64(), txIndex, historyV3, cfg.ChainName) + reader, err := rpchelper.CreateHistoryStateReader(dbtx, block.NumberU64(), txIndex, historyV3, block.Time(), cfg.ChainName) if err != nil { return nil, evmtypes.BlockContext{}, evmtypes.TxContext{}, nil, nil, err }