mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
core: fix receipts when AddUncheckedReceipt is used
This commit is contained in:
parent
ac95472d3c
commit
8d565201f9
1 changed files with 15 additions and 1 deletions
|
|
@ -372,14 +372,28 @@ func GenerateChain(config *params.ChainConfig, parent *types.Block, engine conse
|
||||||
block, receipts := genblock(i, parent, triedb, statedb)
|
block, receipts := genblock(i, parent, triedb, statedb)
|
||||||
|
|
||||||
// Post-process the receipts.
|
// Post-process the receipts.
|
||||||
|
// Here we assign the final block hash and other info into the receipt.
|
||||||
|
// In order for DeriveFields to work, the transaction and receipt lists need to be
|
||||||
|
// of equal length. If AddUncheckedTx or AddUncheckedReceipt are used, there will be
|
||||||
|
// extra ones, so we just trim the lists here.
|
||||||
|
receiptsCount := len(receipts)
|
||||||
|
txs := block.Transactions()
|
||||||
|
if len(receipts) > len(txs) {
|
||||||
|
receipts = receipts[:len(txs)]
|
||||||
|
} else if len(receipts) < len(txs) {
|
||||||
|
txs = txs[:len(receipts)]
|
||||||
|
}
|
||||||
var blobGasPrice *big.Int
|
var blobGasPrice *big.Int
|
||||||
if block.ExcessBlobGas() != nil {
|
if block.ExcessBlobGas() != nil {
|
||||||
blobGasPrice = eip4844.CalcBlobFee(*block.ExcessBlobGas())
|
blobGasPrice = eip4844.CalcBlobFee(*block.ExcessBlobGas())
|
||||||
}
|
}
|
||||||
if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), blobGasPrice, block.Transactions()); err != nil {
|
if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), blobGasPrice, txs); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-expand to ensure all receipts are returned.
|
||||||
|
receipts = receipts[:receiptsCount]
|
||||||
|
|
||||||
// Advance the chain.
|
// Advance the chain.
|
||||||
cm.add(block, receipts)
|
cm.add(block, receipts)
|
||||||
parent = block
|
parent = block
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue