diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index c4121e5894..81b97e14a2 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1490,7 +1490,7 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) { } } -func unmarshalBlockNumber(input string) (rpc.BlockNumber, error) { +func unmarshalL1BlockNumber(input string) (rpc.BlockNumber, error) { switch input { case "finalized": return rpc.FinalizedBlockNumber, nil @@ -1514,7 +1514,7 @@ func setL1(ctx *cli.Context, cfg *node.Config) { cfg.L1Endpoint = ctx.String(L1EndpointFlag.Name) } if ctx.IsSet(L1ConfirmationsFlag.Name) { - cfg.L1Confirmations, err = unmarshalBlockNumber(ctx.String(L1ConfirmationsFlag.Name)) + cfg.L1Confirmations, err = unmarshalL1BlockNumber(ctx.String(L1ConfirmationsFlag.Name)) if err != nil { panic(fmt.Sprintf("invalid value for flag %s: %s", L1ConfirmationsFlag.Name, ctx.String(L1ConfirmationsFlag.Name))) } diff --git a/eth/api_backend.go b/eth/api_backend.go index 601e555158..9c26430cbf 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -77,19 +77,27 @@ func (b *EthAPIBackend) HeaderByNumber(ctx context.Context, number rpc.BlockNumb if number == rpc.LatestBlockNumber { return b.eth.blockchain.CurrentBlock(), nil } + // if number == rpc.FinalizedBlockNumber { + // block := b.eth.blockchain.CurrentFinalBlock() + // if block == nil { + // return nil, errors.New("finalized block not found") + // } + // return block, nil + // } + // if number == rpc.SafeBlockNumber { + // block := b.eth.blockchain.CurrentSafeBlock() + // if block == nil { + // return nil, errors.New("safe block not found") + // } + // return block, nil + // } if number == rpc.FinalizedBlockNumber { - block := b.eth.blockchain.CurrentFinalBlock() - if block == nil { - return nil, errors.New("finalized block not found") + finalizedBlockHeightPtr := rawdb.ReadFinalizedL2BlockNumber(b.eth.ChainDb()) + if finalizedBlockHeightPtr == nil { + return nil, errors.New("L2 finalized block height not found in database") } - return block, nil - } - if number == rpc.SafeBlockNumber { - block := b.eth.blockchain.CurrentSafeBlock() - if block == nil { - return nil, errors.New("safe block not found") - } - return block, nil + number = rpc.BlockNumber(*finalizedBlockHeightPtr) + return b.eth.blockchain.GetHeaderByNumber(uint64(number)), nil } return b.eth.blockchain.GetHeaderByNumber(uint64(number)), nil } @@ -129,19 +137,27 @@ func (b *EthAPIBackend) BlockByNumber(ctx context.Context, number rpc.BlockNumbe header := b.eth.blockchain.CurrentBlock() return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil } + // if number == rpc.FinalizedBlockNumber { + // header := b.eth.blockchain.CurrentFinalBlock() + // if header == nil { + // return nil, errors.New("finalized block not found") + // } + // return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil + // } + // if number == rpc.SafeBlockNumber { + // header := b.eth.blockchain.CurrentSafeBlock() + // if header == nil { + // return nil, errors.New("safe block not found") + // } + // return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil + // } if number == rpc.FinalizedBlockNumber { - header := b.eth.blockchain.CurrentFinalBlock() - if header == nil { - return nil, errors.New("finalized block not found") + finalizedBlockHeightPtr := rawdb.ReadFinalizedL2BlockNumber(b.eth.ChainDb()) + if finalizedBlockHeightPtr == nil { + return nil, errors.New("L2 finalized block height not found in database") } - return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil - } - if number == rpc.SafeBlockNumber { - header := b.eth.blockchain.CurrentSafeBlock() - if header == nil { - return nil, errors.New("safe block not found") - } - return b.eth.blockchain.GetBlock(header.Hash(), header.Number.Uint64()), nil + number = rpc.BlockNumber(*finalizedBlockHeightPtr) + return b.eth.blockchain.GetBlockByNumber(uint64(number)), nil } return b.eth.blockchain.GetBlockByNumber(uint64(number)), nil } diff --git a/eth/gasprice/feehistory.go b/eth/gasprice/feehistory.go index 226991b24b..f10cd9e02b 100644 --- a/eth/gasprice/feehistory.go +++ b/eth/gasprice/feehistory.go @@ -172,8 +172,8 @@ func (oracle *Oracle) resolveBlockRange(ctx context.Context, reqEnd rpc.BlockNum case rpc.LatestBlockNumber: // Retrieved above. resolved = headBlock - case rpc.SafeBlockNumber: - resolved, err = oracle.backend.HeaderByNumber(ctx, rpc.SafeBlockNumber) + // case rpc.SafeBlockNumber: + // resolved, err = oracle.backend.HeaderByNumber(ctx, rpc.SafeBlockNumber) case rpc.FinalizedBlockNumber: resolved, err = oracle.backend.HeaderByNumber(ctx, rpc.FinalizedBlockNumber) case rpc.EarliestBlockNumber: