core/rawdb: increase readability
This commit is contained in:
parent
46230b1e4f
commit
9dbb4830c1
|
@ -143,45 +143,47 @@ func ReadReceipt(db ethdb.Reader, txHash common.Hash, config *params.ChainConfig
|
||||||
|
|
||||||
// Find a match tx and derive receipt fields
|
// Find a match tx and derive receipt fields
|
||||||
for txIndex, tx := range blockBody.Transactions {
|
for txIndex, tx := range blockBody.Transactions {
|
||||||
if tx.Hash() == txHash {
|
if tx.Hash() != txHash {
|
||||||
// Read raw receipts only if hash matches
|
continue
|
||||||
receipts := ReadRawReceipts(db, blockHash, *blockNumber)
|
|
||||||
if receipts == nil {
|
|
||||||
return nil, common.Hash{}, 0, 0
|
|
||||||
}
|
|
||||||
if len(blockBody.Transactions) != len(receipts) {
|
|
||||||
log.Error("Transaction and receipt count mismatch", "txs", len(blockBody.Transactions), "receipts", len(receipts))
|
|
||||||
return nil, common.Hash{}, 0, 0
|
|
||||||
}
|
|
||||||
|
|
||||||
targetReceipt := receipts[txIndex]
|
|
||||||
signer := types.MakeSigner(config, new(big.Int).SetUint64(*blockNumber), blockHeader.Time)
|
|
||||||
|
|
||||||
// Compute effective blob gas price.
|
|
||||||
var blobGasPrice *big.Int
|
|
||||||
if blockHeader.ExcessBlobGas != nil {
|
|
||||||
blobGasPrice = eip4844.CalcBlobFee(*blockHeader.ExcessBlobGas)
|
|
||||||
}
|
|
||||||
|
|
||||||
var gasUsed uint64
|
|
||||||
if txIndex == 0 {
|
|
||||||
gasUsed = targetReceipt.CumulativeGasUsed
|
|
||||||
} else {
|
|
||||||
gasUsed = targetReceipt.CumulativeGasUsed - receipts[txIndex-1].CumulativeGasUsed
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate the staring log index from previous logs
|
|
||||||
logIndex := uint(0)
|
|
||||||
for i := 0; i < txIndex; i++ {
|
|
||||||
logIndex += uint(len(receipts[i].Logs))
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := targetReceipt.DeriveField(signer, blockHash, *blockNumber, blockHeader.BaseFee, blobGasPrice, uint(txIndex), gasUsed, logIndex, blockBody.Transactions[txIndex]); err != nil {
|
|
||||||
log.Error("Failed to derive the receipt fields", "txHash", txHash, "err", err)
|
|
||||||
return nil, common.Hash{}, 0, 0
|
|
||||||
}
|
|
||||||
return targetReceipt, blockHash, *blockNumber, uint64(txIndex)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read raw receipts only if hash matches
|
||||||
|
receipts := ReadRawReceipts(db, blockHash, *blockNumber)
|
||||||
|
if receipts == nil {
|
||||||
|
return nil, common.Hash{}, 0, 0
|
||||||
|
}
|
||||||
|
if len(blockBody.Transactions) != len(receipts) {
|
||||||
|
log.Error("Transaction and receipt count mismatch", "txs", len(blockBody.Transactions), "receipts", len(receipts))
|
||||||
|
return nil, common.Hash{}, 0, 0
|
||||||
|
}
|
||||||
|
|
||||||
|
targetReceipt := receipts[txIndex]
|
||||||
|
signer := types.MakeSigner(config, new(big.Int).SetUint64(*blockNumber), blockHeader.Time)
|
||||||
|
|
||||||
|
// Compute effective blob gas price.
|
||||||
|
var blobGasPrice *big.Int
|
||||||
|
if blockHeader.ExcessBlobGas != nil {
|
||||||
|
blobGasPrice = eip4844.CalcBlobFee(*blockHeader.ExcessBlobGas)
|
||||||
|
}
|
||||||
|
|
||||||
|
var gasUsed uint64
|
||||||
|
if txIndex == 0 {
|
||||||
|
gasUsed = targetReceipt.CumulativeGasUsed
|
||||||
|
} else {
|
||||||
|
gasUsed = targetReceipt.CumulativeGasUsed - receipts[txIndex-1].CumulativeGasUsed
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the staring log index from previous logs
|
||||||
|
logIndex := uint(0)
|
||||||
|
for i := 0; i < txIndex; i++ {
|
||||||
|
logIndex += uint(len(receipts[i].Logs))
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := targetReceipt.DeriveField(signer, blockHash, *blockNumber, blockHeader.BaseFee, blobGasPrice, uint(txIndex), gasUsed, logIndex, blockBody.Transactions[txIndex]); err != nil {
|
||||||
|
log.Error("Failed to derive the receipt fields", "txHash", txHash, "err", err)
|
||||||
|
return nil, common.Hash{}, 0, 0
|
||||||
|
}
|
||||||
|
return targetReceipt, blockHash, *blockNumber, uint64(txIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Error("Receipt not found", "number", *blockNumber, "blockHash", blockHash, "txHash", txHash)
|
log.Error("Receipt not found", "number", *blockNumber, "blockHash", blockHash, "txHash", txHash)
|
||||||
|
|
Loading…
Reference in New Issue