mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 05:36:46 +00:00
fix(api): return pending block receipts correctly
This commit is contained in:
parent
a9a19c4202
commit
6da14dbf7d
1 changed files with 12 additions and 3 deletions
|
|
@ -601,10 +601,19 @@ func (api *BlockChainAPI) GetBlockReceipts(ctx context.Context, blockNrOrHash rp
|
||||||
if block == nil || err != nil {
|
if block == nil || err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
receipts, err := api.b.GetReceipts(ctx, block.Hash())
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
txs := block.Transactions()
|
txs := block.Transactions()
|
||||||
if len(txs) != len(receipts) {
|
if len(txs) != len(receipts) {
|
||||||
return nil, fmt.Errorf("receipts length mismatch: %d vs %d", len(txs), len(receipts))
|
return nil, fmt.Errorf("receipts length mismatch: %d vs %d", len(txs), len(receipts))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue