@@ -295,15 +295,12 @@ func (b *BlockChainAPI) GetTransactionByBlockNumberAndIndex(
295295 return nil , err
296296 }
297297
298- if blockNumber < rpc .EarliestBlockNumber {
299- latestBlockNumber , err := b .blocks .LatestEVMHeight ()
300- if err != nil {
301- return handleError [* ethTypes.Transaction ](err , l , b .collector )
302- }
303- blockNumber = rpc .BlockNumber (latestBlockNumber )
298+ height , err := resolveBlockNumber (blockNumber , b .blocks )
299+ if err != nil {
300+ return nil , err
304301 }
305302
306- block , err := b .blocks .GetByHeight (uint64 ( blockNumber ) )
303+ block , err := b .blocks .GetByHeight (height )
307304 if err != nil {
308305 return handleError [* ethTypes.Transaction ](err , l , b .collector )
309306 }
@@ -387,6 +384,7 @@ func (b *BlockChainAPI) GetBlockByHash(
387384// - When blockNr is -2 the chain latest block is returned.
388385// - When blockNr is -3 the chain finalized block is returned.
389386// - When blockNr is -4 the chain safe block is returned.
387+ // - When blockNr is -5 the chain earliest block is returned.
390388// - When fullTx is true all transactions in the block are returned, otherwise
391389// only the transaction hash is returned.
392390func (b * BlockChainAPI ) GetBlockByNumber (
@@ -403,13 +401,9 @@ func (b *BlockChainAPI) GetBlockByNumber(
403401 return nil , err
404402 }
405403
406- height := uint64 (blockNumber )
407- var err error
408- if blockNumber < 0 {
409- height , err = b .blocks .LatestEVMHeight ()
410- if err != nil {
411- return handleError [* ethTypes.Block ](err , l , b .collector )
412- }
404+ height , err := resolveBlockNumber (blockNumber , b .blocks )
405+ if err != nil {
406+ return handleError [* ethTypes.Block ](err , l , b .collector )
413407 }
414408
415409 block , err := b .blocks .GetByHeight (height )
@@ -430,7 +424,7 @@ func (b *BlockChainAPI) GetBlockByNumber(
430424func (b * BlockChainAPI ) GetBlockReceipts (
431425 ctx context.Context ,
432426 blockNumberOrHash rpc.BlockNumberOrHash ,
433- ) ([]map [string ]interface {} , error ) {
427+ ) ([]map [string ]any , error ) {
434428 l := b .logger .With ().
435429 Str ("endpoint" , "getBlockReceipts" ).
436430 Str ("hash" , blockNumberOrHash .String ()).
@@ -442,29 +436,29 @@ func (b *BlockChainAPI) GetBlockReceipts(
442436
443437 height , err := resolveBlockTag (& blockNumberOrHash , b .blocks , b .logger )
444438 if err != nil {
445- return handleError [[]map [string ]interface {} ](err , l , b .collector )
439+ return handleError [[]map [string ]any ](err , l , b .collector )
446440 }
447441
448442 block , err := b .blocks .GetByHeight (height )
449443 if err != nil {
450- return handleError [[]map [string ]interface {} ](err , l , b .collector )
444+ return handleError [[]map [string ]any ](err , l , b .collector )
451445 }
452446
453- receipts := make ([]map [string ]interface {} , len (block .TransactionHashes ))
447+ receipts := make ([]map [string ]any , len (block .TransactionHashes ))
454448 for i , hash := range block .TransactionHashes {
455449 tx , err := b .transactions .Get (hash )
456450 if err != nil {
457- return handleError [[]map [string ]interface {} ](err , l , b .collector )
451+ return handleError [[]map [string ]any ](err , l , b .collector )
458452 }
459453
460454 receipt , err := b .receipts .GetByTransactionID (hash )
461455 if err != nil {
462- return handleError [[]map [string ]interface {} ](err , l , b .collector )
456+ return handleError [[]map [string ]any ](err , l , b .collector )
463457 }
464458
465459 receipts [i ], err = ethTypes .MarshalReceipt (receipt , tx )
466460 if err != nil {
467- return handleError [[]map [string ]interface {} ](err , l , b .collector )
461+ return handleError [[]map [string ]any ](err , l , b .collector )
468462 }
469463 }
470464
@@ -510,15 +504,12 @@ func (b *BlockChainAPI) GetBlockTransactionCountByNumber(
510504 return nil , err
511505 }
512506
513- if blockNumber < rpc .EarliestBlockNumber {
514- latestBlockNumber , err := b .blocks .LatestEVMHeight ()
515- if err != nil {
516- return handleError [* hexutil.Uint ](err , l , b .collector )
517- }
518- blockNumber = rpc .BlockNumber (latestBlockNumber )
507+ height , err := resolveBlockNumber (blockNumber , b .blocks )
508+ if err != nil {
509+ return handleError [* hexutil.Uint ](err , l , b .collector )
519510 }
520511
521- block , err := b .blocks .GetByHeight (uint64 ( blockNumber ) )
512+ block , err := b .blocks .GetByHeight (height )
522513 if err != nil {
523514 return handleError [* hexutil.Uint ](err , l , b .collector )
524515 }
@@ -638,10 +629,15 @@ func (b *BlockChainAPI) GetLogs(
638629 latest := big .NewInt (int64 (h ))
639630
640631 // if special value, use latest block number
641- if from .Cmp (models .EarliestBlockNumber ) < 0 {
632+ if from .Cmp (models .EarliestBlockNumber ) == 0 {
633+ from = big .NewInt (0 )
634+ } else if from .Cmp (models .PendingBlockNumber ) < 0 {
642635 from = latest
643636 }
644- if to .Cmp (models .EarliestBlockNumber ) < 0 {
637+
638+ if to .Cmp (models .EarliestBlockNumber ) == 0 {
639+ to = big .NewInt (0 )
640+ } else if to .Cmp (models .PendingBlockNumber ) < 0 {
645641 to = latest
646642 }
647643
@@ -797,14 +793,9 @@ func (b *BlockChainAPI) FeeHistory(
797793 )
798794 }
799795
800- lastBlockNumber := uint64 (lastBlock )
801- var err error
802- if lastBlock < 0 {
803- // From the special block tags, we only support "latest".
804- lastBlockNumber , err = b .blocks .LatestEVMHeight ()
805- if err != nil {
806- return handleError [* ethTypes.FeeHistoryResult ](err , l , b .collector )
807- }
796+ lastBlockNumber , err := resolveBlockNumber (lastBlock , b .blocks )
797+ if err != nil {
798+ return handleError [* ethTypes.FeeHistoryResult ](err , l , b .collector )
808799 }
809800
810801 var (
@@ -1046,17 +1037,17 @@ func (b *BlockChainAPI) GetUncleByBlockHashAndIndex(
10461037 ctx context.Context ,
10471038 blockHash common.Hash ,
10481039 index hexutil.Uint ,
1049- ) (map [string ]interface {} , error ) {
1050- return map [string ]interface {} {}, nil
1040+ ) (map [string ]any , error ) {
1041+ return map [string ]any {}, nil
10511042}
10521043
10531044// GetUncleByBlockNumberAndIndex returns the uncle block for the given block hash and index.
10541045func (b * BlockChainAPI ) GetUncleByBlockNumberAndIndex (
10551046 ctx context.Context ,
10561047 blockNumber rpc.BlockNumber ,
10571048 index hexutil.Uint ,
1058- ) (map [string ]interface {} , error ) {
1059- return map [string ]interface {} {}, nil
1049+ ) (map [string ]any , error ) {
1050+ return map [string ]any {}, nil
10601051}
10611052
10621053// MaxPriorityFeePerGas returns a suggestion for a gas tip cap for dynamic fee transactions.
0 commit comments