Skip to content

Commit

Permalink
update fork
Browse files Browse the repository at this point in the history
  • Loading branch information
FranckStone committed Mar 21, 2024
1 parent ac0ae70 commit 61f19ca
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 15 deletions.
21 changes: 14 additions & 7 deletions accounts/abi/bind/backends/simulated.go
Original file line number Diff line number Diff line change
Expand Up @@ -174,13 +174,15 @@ func (b *SimulatedBackend) Fork(ctx context.Context, parent common.Hash) error {
// stateByBlockNumber retrieves a state by a given blocknumber.
func (b *SimulatedBackend) stateByBlockNumber(ctx context.Context, blockNumber *big.Int) (*state.StateDB, error) {
if blockNumber == nil || blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) == 0 {
return b.blockchain.State(b.blockchain.Config().IsFirenze(blockNumber), blockNumber)
fork := b.blockchain.Config().IsFirenze(b.blockchain.CurrentBlock().Number()) && !b.blockchain.Config().IsVenezia(b.blockchain.CurrentBlock().Number())
return b.blockchain.State(fork, blockNumber)
}
block, err := b.blockByNumber(ctx, blockNumber)
if err != nil {
return nil, err
}
return b.blockchain.StateAt(block.Root(), b.blockchain.Config().IsFirenze(blockNumber), blockNumber)
fork := b.blockchain.Config().IsFirenze(blockNumber) && !b.blockchain.Config().IsVenezia(blockNumber)
return b.blockchain.StateAt(block.Root(), fork, blockNumber)
}

// CodeAt returns the code associated with a certain account in the blockchain.
Expand Down Expand Up @@ -433,7 +435,8 @@ func (b *SimulatedBackend) CallContract(ctx context.Context, call ethereum.CallM
if blockNumber != nil && blockNumber.Cmp(b.blockchain.CurrentBlock().Number()) != 0 {
return nil, errBlockNumberUnsupported
}
stateDB, err := b.blockchain.State(b.blockchain.Config().IsFirenze(blockNumber), blockNumber)
fork := b.blockchain.Config().IsFirenze(b.blockchain.CurrentBlock().Number()) && !b.blockchain.Config().IsVenezia(b.blockchain.CurrentBlock().Number())
stateDB, err := b.blockchain.State(fork, blockNumber)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -680,10 +683,11 @@ func (b *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transa
}
block.AddTxWithChain(b.blockchain, tx)
})
stateDB, _ := b.blockchain.State(b.config.IsFirenze(b.pendingBlock.Number()), b.pendingBlock.Number())
fork := b.config.IsFirenze(b.pendingBlock.Number()) && !b.config.IsVenezia(b.pendingBlock.Number())
stateDB, _ := b.blockchain.State(fork, b.pendingBlock.Number())

b.pendingBlock = blocks[0]
fork := b.config.IsFirenze(b.pendingBlock.Number()) && !b.config.IsVenezia(b.pendingBlock.Number())

b.pendingState, _ = state.New(b.pendingBlock.Root(), fork, b.pendingBlock.Number(), stateDB.Database(), nil)
b.pendingReceipts = receipts[0]
return nil
Expand Down Expand Up @@ -797,10 +801,13 @@ func (b *SimulatedBackend) AdjustTime(adjustment time.Duration) error {
blocks, _ := core.GenerateChain(b.config, b.blockchain.CurrentBlock(), ethash.NewFaker(), b.database, 1, func(number int, block *core.BlockGen) {
block.OffsetTime(int64(adjustment.Seconds()))
})
stateDB, _ := b.blockchain.State(b.blockchain.Config().IsFirenze(blocks[0].Number()), blocks[0].Number())

b.pendingBlock = blocks[0]
fork := b.config.IsFirenze(b.pendingBlock.Number()) && !b.config.IsVenezia(b.pendingBlock.Number())

stateDB, _ := b.blockchain.State(fork, blocks[0].Number())

b.pendingBlock = blocks[0]

b.pendingState, _ = state.New(b.pendingBlock.Root(), fork, b.pendingBlock.Number(), stateDB.Database(), nil)

return nil
Expand Down
2 changes: 1 addition & 1 deletion core/tx_pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -1318,7 +1318,7 @@ func (pool *TxPool) reset(oldHead, newHead *types.Header) {
pool.eip2718 = pool.chainconfig.IsBerlin(next)
pool.eip1559 = pool.chainconfig.IsLondon(next)
pool.isrome = pool.chainconfig.IsRome(next)
pool.isfirenze = pool.chainconfig.IsFirenze(next)
pool.isfirenze = pool.chainconfig.IsFirenze(next) && !pool.chainconfig.IsVenezia(next)
}

// promoteExecutables moves transactions that have become processable from the
Expand Down
9 changes: 6 additions & 3 deletions eth/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,8 @@ func (api *DebugAPI) DumpBlock(blockNr rpc.BlockNumber) (state.Dump, error) {
if block == nil {
return state.Dump{}, fmt.Errorf("block #%d not found", blockNr)
}
stateDb, err := api.eth.BlockChain().StateAt(block.Root(), api.eth.blockchain.Config().IsFirenze(block.Number()), block.Number())
fork := api.eth.blockchain.Config().IsFirenze(block.Number()) && !api.eth.blockchain.Config().IsVenezia(block.Number())
stateDb, err := api.eth.BlockChain().StateAt(block.Root(), fork, block.Number())
if err != nil {
return state.Dump{}, err
}
Expand Down Expand Up @@ -360,7 +361,8 @@ func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hex
if block == nil {
return state.IteratorDump{}, fmt.Errorf("block #%d not found", number)
}
stateDb, err = api.eth.BlockChain().StateAt(block.Root(), api.eth.blockchain.Config().IsFirenze(block.Number()), block.Number())
fork := api.eth.blockchain.Config().IsFirenze(block.Number()) && !api.eth.blockchain.Config().IsVenezia(block.Number())
stateDb, err = api.eth.BlockChain().StateAt(block.Root(), fork, block.Number())
if err != nil {
return state.IteratorDump{}, err
}
Expand All @@ -370,7 +372,8 @@ func (api *DebugAPI) AccountRange(blockNrOrHash rpc.BlockNumberOrHash, start hex
if block == nil {
return state.IteratorDump{}, fmt.Errorf("block %s not found", hash.Hex())
}
stateDb, err = api.eth.BlockChain().StateAt(block.Root(), api.eth.blockchain.Config().IsFirenze(block.Number()), block.Number())
fork := api.eth.blockchain.Config().IsFirenze(block.Number()) && !api.eth.blockchain.Config().IsVenezia(block.Number())
stateDb, err = api.eth.BlockChain().StateAt(block.Root(), fork, block.Number())
if err != nil {
return state.IteratorDump{}, err
}
Expand Down
6 changes: 4 additions & 2 deletions eth/api_backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,8 @@ func (b *EthAPIBackend) StateAndHeaderByNumber(ctx context.Context, number rpc.B
if header == nil {
return nil, nil, errors.New("header not found")
}
stateDb, err := b.eth.BlockChain().StateAt(header.Root, b.ChainConfig().IsFirenze(header.Number), header.Number)
fork := b.ChainConfig().IsFirenze(header.Number) && !b.ChainConfig().IsVenezia(header.Number)
stateDb, err := b.eth.BlockChain().StateAt(header.Root, fork, header.Number)
return stateDb, header, err
}

Expand All @@ -191,7 +192,8 @@ func (b *EthAPIBackend) StateAndHeaderByNumberOrHash(ctx context.Context, blockN
if blockNrOrHash.RequireCanonical && b.eth.blockchain.GetCanonicalHash(header.Number.Uint64()) != hash {
return nil, nil, errors.New("hash is not currently canonical")
}
stateDb, err := b.eth.BlockChain().StateAt(header.Root, b.ChainConfig().IsFirenze(header.Number), header.Number)
fork := b.ChainConfig().IsFirenze(header.Number) && !b.ChainConfig().IsVenezia(header.Number)
stateDb, err := b.eth.BlockChain().StateAt(header.Root, fork, header.Number)
return stateDb, header, err
}
return nil, nil, errors.New("invalid arguments; neither block nor hash specified")
Expand Down
3 changes: 2 additions & 1 deletion eth/state_accessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ func (eth *Ethereum) StateAtBlock(block *types.Block, reexec uint64, base *state
)
// Check the live database first if we have the state fully available, use that.
if checkLive {
statedb, err = eth.blockchain.StateAt(block.Root(), eth.blockchain.Config().IsFirenze(block.Number()), block.Number())
fork := eth.blockchain.Config().IsFirenze(block.Number()) && !eth.blockchain.Config().IsVenezia(block.Number())
statedb, err = eth.blockchain.StateAt(block.Root(), fork, block.Number())
if err == nil {
return statedb, nil
}
Expand Down
3 changes: 2 additions & 1 deletion miner/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -755,7 +755,8 @@ func (w *worker) resultLoop() {
func (w *worker) makeEnv(parent *types.Block, header *types.Header, coinbase common.Address) (*environment, error) {
// Retrieve the parent state to execute on top and start a prefetcher for
// the miner to speed block sealing up a bit.
state, err := w.chain.StateAt(parent.Root(), w.chainConfig.IsFirenze(parent.Number()), parent.Number())
fork := w.chainConfig.IsFirenze(header.Number) && !w.chainConfig.IsVenezia(parent.Number())
state, err := w.chain.StateAt(parent.Root(), fork, parent.Number())
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 61f19ca

Please sign in to comment.