From 6da14dbf7d0aa7607fb87495a172d041a6c4a596 Mon Sep 17 00:00:00 2001 From: Cal Bera Date: Sat, 16 Aug 2025 11:10:43 -0700 Subject: [PATCH] fix(api): return pending block receipts correctly --- internal/ethapi/api.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index 51b6ca3c4422..f0b51923317d 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -601,9 +601,18 @@ func (api *BlockChainAPI) GetBlockReceipts(ctx context.Context, blockNrOrHash rp if block == nil || err != nil { return nil, err } - receipts, err := api.b.GetReceipts(ctx, block.Hash()) - if err != nil { - return nil, err + var receipts types.Receipts + if blockNr, ok := blockNrOrHash.Number(); ok && blockNr == rpc.PendingBlockNumber { + var pendingBlock *types.Block + pendingBlock, receipts, _ = api.b.Pending() + if pendingBlock.Hash() != block.Hash() { + return nil, fmt.Errorf("pending block hash mismatch: %s vs %s", pendingBlock.Hash(), block.Hash()) + } + } else { + receipts, err = api.b.GetReceipts(ctx, block.Hash()) + if err != nil { + return nil, err + } } txs := block.Transactions() if len(txs) != len(receipts) {