mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
cmd/evm: fix flaw in blob gas calculation
This commit is contained in:
parent
3fdff6e5d3
commit
bc823f4689
3 changed files with 16 additions and 14 deletions
|
|
@ -204,22 +204,22 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, errMsg})
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, errMsg})
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if tx.Type() == types.BlobTxType {
|
|
||||||
txBlobGas := uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes()))
|
|
||||||
if blobGasUsed+txBlobGas > params.BlobTxBlobGasPerBlob {
|
|
||||||
err := fmt.Errorf("blob gas (%d) would exceed maximum allowance %d", blobGasUsed+txBlobGas, params.MaxBlobGasPerBlock)
|
|
||||||
log.Warn("rejected tx", "index", i, "err", err)
|
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
blobGasUsed += txBlobGas
|
|
||||||
}
|
|
||||||
msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee)
|
msg, err := core.TransactionToMessage(tx, signer, pre.Env.BaseFee)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err)
|
log.Warn("rejected tx", "index", i, "hash", tx.Hash(), "error", err)
|
||||||
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if tx.Type() == types.BlobTxType {
|
||||||
|
txBlobGas := uint64(params.BlobTxBlobGasPerBlob * len(tx.BlobHashes()))
|
||||||
|
if used, max := blobGasUsed+txBlobGas, uint64(params.MaxBlobGasPerBlock); used > max {
|
||||||
|
err := fmt.Errorf("blob gas (%d) would exceed maximum allowance %d", used, max)
|
||||||
|
log.Warn("rejected tx", "index", i, "err", err)
|
||||||
|
rejectedTxs = append(rejectedTxs, &rejectedTx{i, err.Error()})
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
blobGasUsed += txBlobGas
|
||||||
|
}
|
||||||
tracer, err := getTracerFn(txIndex, tx.Hash())
|
tracer, err := getTracerFn(txIndex, tx.Hash())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
|
|
|
||||||
4
cmd/evm/testdata/30/env.json
vendored
4
cmd/evm/testdata/30/env.json
vendored
|
|
@ -15,8 +15,8 @@
|
||||||
"parentBaseFee" : "0x08",
|
"parentBaseFee" : "0x08",
|
||||||
"parentGasUsed" : "0x00",
|
"parentGasUsed" : "0x00",
|
||||||
"parentGasLimit" : "0x1000000000",
|
"parentGasLimit" : "0x1000000000",
|
||||||
"parentExcessDataGas" : "0x1000",
|
"parentExcessBlobGas" : "0x1000",
|
||||||
"parentDataGasUsed" : "0x2000",
|
"parentBlobGasUsed" : "0x2000",
|
||||||
"blockHashes" : {
|
"blockHashes" : {
|
||||||
"0" : "0xe4e2a30b340bec696242b67584264f878600dce98354ae0b6328740fd4ff18da"
|
"0" : "0xe4e2a30b340bec696242b67584264f878600dce98354ae0b6328740fd4ff18da"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
cmd/evm/testdata/30/exp.json
vendored
4
cmd/evm/testdata/30/exp.json
vendored
|
|
@ -57,6 +57,8 @@
|
||||||
"currentDifficulty": null,
|
"currentDifficulty": null,
|
||||||
"gasUsed": "0xa410",
|
"gasUsed": "0xa410",
|
||||||
"currentBaseFee": "0x7",
|
"currentBaseFee": "0x7",
|
||||||
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"
|
"withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
|
||||||
|
"currentExcessBlobGas": "0x0",
|
||||||
|
"blobGasUsed": "0x0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue