From 69ae1617be033a4e4979a9981362a440de90c336 Mon Sep 17 00:00:00 2001 From: devopsbo3 <69951731+devopsbo3@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:27:53 -0600 Subject: [PATCH] Revert "core/types: add 4844 data gas fields in Receipt (#27743)" This reverts commit 4121121152002868ce694ff69c36ddeb58abfad3. --- consensus/beacon/consensus.go | 3 +-- consensus/misc/{eip4844 => }/eip4844.go | 2 +- consensus/misc/{eip4844 => }/eip4844_test.go | 2 +- core/blockchain.go | 9 +-------- core/rawdb/accessors_chain.go | 11 +---------- core/state_processor_test.go | 3 +-- core/state_transition.go | 9 ++++----- core/types/gen_receipt_json.go | 12 ------------ core/types/receipt.go | 11 ++--------- core/types/receipt_test.go | 12 +----------- light/odr_util.go | 9 +-------- 11 files changed, 14 insertions(+), 69 deletions(-) rename consensus/misc/{eip4844 => }/eip4844.go (99%) rename consensus/misc/{eip4844 => }/eip4844_test.go (99%) diff --git a/consensus/beacon/consensus.go b/consensus/beacon/consensus.go index 65a776c03a954..c5d2a12a7b264 100644 --- a/consensus/beacon/consensus.go +++ b/consensus/beacon/consensus.go @@ -24,7 +24,6 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/consensus" "github.com/ethereum/go-ethereum/consensus/misc" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/params" @@ -278,7 +277,7 @@ func (beacon *Beacon) verifyHeader(chain consensus.ChainHeaderReader, header, pa return fmt.Errorf("invalid dataGasUsed: have %d, expected nil", header.DataGasUsed) } if cancun { - if err := eip4844.VerifyEIP4844Header(parent, header); err != nil { + if err := misc.VerifyEIP4844Header(parent, header); err != nil { return err } } diff --git a/consensus/misc/eip4844/eip4844.go b/consensus/misc/eip4844.go similarity index 99% rename from consensus/misc/eip4844/eip4844.go rename to consensus/misc/eip4844.go index 2d0678dd4a1c2..f370e490176ac 100644 --- a/consensus/misc/eip4844/eip4844.go +++ b/consensus/misc/eip4844.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package eip4844 +package misc import ( "errors" diff --git a/consensus/misc/eip4844/eip4844_test.go b/consensus/misc/eip4844_test.go similarity index 99% rename from consensus/misc/eip4844/eip4844_test.go rename to consensus/misc/eip4844_test.go index d3f1e8702bcda..939ca258700eb 100644 --- a/consensus/misc/eip4844/eip4844_test.go +++ b/consensus/misc/eip4844_test.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with the go-ethereum library. If not, see . -package eip4844 +package misc import ( "fmt" diff --git a/core/blockchain.go b/core/blockchain.go index 50064b38384e3..a8c9d447244f1 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -33,7 +33,6 @@ import ( "github.com/ethereum/go-ethereum/common/mclock" "github.com/ethereum/go-ethereum/common/prque" "github.com/ethereum/go-ethereum/consensus" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/state/snapshot" @@ -2028,14 +2027,8 @@ func (bc *BlockChain) recoverAncestors(block *types.Block) (common.Hash, error) // collectLogs collects the logs that were generated or removed during // the processing of a block. These logs are later announced as deleted or reborn. func (bc *BlockChain) collectLogs(b *types.Block, removed bool) []*types.Log { - var dataGasPrice *big.Int - excessDataGas := b.ExcessDataGas() - if excessDataGas != nil { - dataGasPrice = eip4844.CalcBlobFee(*excessDataGas) - } - receipts := rawdb.ReadRawReceipts(bc.db, b.Hash(), b.NumberU64()) - if err := receipts.DeriveFields(bc.chainConfig, b.Hash(), b.NumberU64(), b.Time(), b.BaseFee(), dataGasPrice, b.Transactions()); err != nil { + if err := receipts.DeriveFields(bc.chainConfig, b.Hash(), b.NumberU64(), b.Time(), b.BaseFee(), b.Transactions()); err != nil { log.Error("Failed to derive block receipts fields", "hash", b.Hash(), "number", b.NumberU64(), "err", err) } diff --git a/core/rawdb/accessors_chain.go b/core/rawdb/accessors_chain.go index 152f70f891161..dd5425eec754c 100644 --- a/core/rawdb/accessors_chain.go +++ b/core/rawdb/accessors_chain.go @@ -24,7 +24,6 @@ import ( "math/big" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethdb" @@ -638,21 +637,13 @@ func ReadReceipts(db ethdb.Reader, hash common.Hash, number uint64, time uint64, return nil } header := ReadHeader(db, hash, number) - var baseFee *big.Int if header == nil { baseFee = big.NewInt(0) } else { baseFee = header.BaseFee } - - // Compute effective data gas price. - var dataGasPrice *big.Int - if header != nil && header.ExcessDataGas != nil { - dataGasPrice = eip4844.CalcBlobFee(*header.ExcessDataGas) - } - - if err := receipts.DeriveFields(config, hash, number, time, baseFee, dataGasPrice, body.Transactions); err != nil { + if err := receipts.DeriveFields(config, hash, number, time, baseFee, body.Transactions); err != nil { log.Error("Failed to derive block receipts fields", "hash", hash, "number", number, "err", err) return nil } diff --git a/core/state_processor_test.go b/core/state_processor_test.go index 67fe95976c44f..a8858ec7e3f9c 100644 --- a/core/state_processor_test.go +++ b/core/state_processor_test.go @@ -27,7 +27,6 @@ import ( "github.com/ethereum/go-ethereum/consensus/beacon" "github.com/ethereum/go-ethereum/consensus/ethash" "github.com/ethereum/go-ethereum/consensus/misc" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" @@ -406,7 +405,7 @@ func GenerateBadBlock(parent *types.Block, engine consensus.Engine, txs types.Tr pExcess = *parent.ExcessDataGas() pUsed = *parent.DataGasUsed() } - excess := eip4844.CalcExcessDataGas(pExcess, pUsed) + excess := misc.CalcExcessDataGas(pExcess, pUsed) used := uint64(nBlobs * params.BlobTxDataGasPerBlob) header.ExcessDataGas = &excess header.DataGasUsed = &used diff --git a/core/state_transition.go b/core/state_transition.go index da256ddcadd7c..9fcdb74458ba3 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -24,7 +24,7 @@ import ( "github.com/ethereum/go-ethereum/common" cmath "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" + "github.com/ethereum/go-ethereum/consensus/misc" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/params" @@ -252,7 +252,7 @@ func (st *StateTransition) buyGas() error { balanceCheck.Add(balanceCheck, blobBalanceCheck) // Pay for dataGasUsed * actual blob fee blobFee := new(big.Int).SetUint64(dataGas) - blobFee.Mul(blobFee, eip4844.CalcBlobFee(*st.evm.Context.ExcessDataGas)) + blobFee.Mul(blobFee, misc.CalcBlobFee(*st.evm.Context.ExcessDataGas)) mgval.Add(mgval, blobFee) } } @@ -333,9 +333,8 @@ func (st *StateTransition) preCheck() error { if st.evm.ChainConfig().IsCancun(st.evm.Context.BlockNumber, st.evm.Context.Time) { if st.dataGasUsed() > 0 { // Check that the user is paying at least the current blob fee - blobFee := eip4844.CalcBlobFee(*st.evm.Context.ExcessDataGas) - if st.msg.BlobGasFeeCap.Cmp(blobFee) < 0 { - return fmt.Errorf("%w: address %v have %v want %v", ErrBlobFeeCapTooLow, st.msg.From.Hex(), st.msg.BlobGasFeeCap, blobFee) + if have, want := st.msg.BlobGasFeeCap, misc.CalcBlobFee(*st.evm.Context.ExcessDataGas); have.Cmp(want) < 0 { + return fmt.Errorf("%w: address %v have %v want %v", ErrBlobFeeCapTooLow, st.msg.From.Hex(), have, want) } } } diff --git a/core/types/gen_receipt_json.go b/core/types/gen_receipt_json.go index b7949cc78fee0..d83be1447744a 100644 --- a/core/types/gen_receipt_json.go +++ b/core/types/gen_receipt_json.go @@ -26,8 +26,6 @@ func (r Receipt) MarshalJSON() ([]byte, error) { ContractAddress common.Address `json:"contractAddress"` GasUsed hexutil.Uint64 `json:"gasUsed" gencodec:"required"` EffectiveGasPrice *hexutil.Big `json:"effectiveGasPrice"` - DataGasUsed uint64 `json:"dataGasUsed,omitempty"` - DataGasPrice *big.Int `json:"dataGasPrice,omitempty"` BlockHash common.Hash `json:"blockHash,omitempty"` BlockNumber *hexutil.Big `json:"blockNumber,omitempty"` TransactionIndex hexutil.Uint `json:"transactionIndex"` @@ -43,8 +41,6 @@ func (r Receipt) MarshalJSON() ([]byte, error) { enc.ContractAddress = r.ContractAddress enc.GasUsed = hexutil.Uint64(r.GasUsed) enc.EffectiveGasPrice = (*hexutil.Big)(r.EffectiveGasPrice) - enc.DataGasUsed = r.DataGasUsed - enc.DataGasPrice = r.DataGasPrice enc.BlockHash = r.BlockHash enc.BlockNumber = (*hexutil.Big)(r.BlockNumber) enc.TransactionIndex = hexutil.Uint(r.TransactionIndex) @@ -64,8 +60,6 @@ func (r *Receipt) UnmarshalJSON(input []byte) error { ContractAddress *common.Address `json:"contractAddress"` GasUsed *hexutil.Uint64 `json:"gasUsed" gencodec:"required"` EffectiveGasPrice *hexutil.Big `json:"effectiveGasPrice"` - DataGasUsed *uint64 `json:"dataGasUsed,omitempty"` - DataGasPrice *big.Int `json:"dataGasPrice,omitempty"` BlockHash *common.Hash `json:"blockHash,omitempty"` BlockNumber *hexutil.Big `json:"blockNumber,omitempty"` TransactionIndex *hexutil.Uint `json:"transactionIndex"` @@ -109,12 +103,6 @@ func (r *Receipt) UnmarshalJSON(input []byte) error { if dec.EffectiveGasPrice != nil { r.EffectiveGasPrice = (*big.Int)(dec.EffectiveGasPrice) } - if dec.DataGasUsed != nil { - r.DataGasUsed = *dec.DataGasUsed - } - if dec.DataGasPrice != nil { - r.DataGasPrice = dec.DataGasPrice - } if dec.BlockHash != nil { r.BlockHash = *dec.BlockHash } diff --git a/core/types/receipt.go b/core/types/receipt.go index 2428aeec88a89..6b4b8972450f7 100644 --- a/core/types/receipt.go +++ b/core/types/receipt.go @@ -63,8 +63,6 @@ type Receipt struct { ContractAddress common.Address `json:"contractAddress"` GasUsed uint64 `json:"gasUsed" gencodec:"required"` EffectiveGasPrice *big.Int `json:"effectiveGasPrice"` // required, but tag omitted for backwards compatibility - DataGasUsed uint64 `json:"dataGasUsed,omitempty"` - DataGasPrice *big.Int `json:"dataGasPrice,omitempty"` // Inclusion information: These fields provide information about the inclusion of the // transaction corresponding to this receipt. @@ -315,7 +313,7 @@ func (rs Receipts) EncodeIndex(i int, w *bytes.Buffer) { // DeriveFields fills the receipts with their computed fields based on consensus // data and contextual infos like containing block and transactions. -func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, number uint64, time uint64, baseFee *big.Int, dataGasPrice *big.Int, txs []*Transaction) error { +func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, number uint64, time uint64, baseFee *big.Int, txs []*Transaction) error { signer := MakeSigner(config, new(big.Int).SetUint64(number), time) logIndex := uint(0) @@ -326,13 +324,8 @@ func (rs Receipts) DeriveFields(config *params.ChainConfig, hash common.Hash, nu // The transaction type and hash can be retrieved from the transaction itself rs[i].Type = txs[i].Type() rs[i].TxHash = txs[i].Hash() - rs[i].EffectiveGasPrice = txs[i].inner.effectiveGasPrice(new(big.Int), baseFee) - // EIP-4844 blob transaction fields - if txs[i].Type() == BlobTxType { - rs[i].DataGasUsed = txs[i].BlobGas() - rs[i].DataGasPrice = dataGasPrice - } + rs[i].EffectiveGasPrice = txs[i].inner.effectiveGasPrice(new(big.Int), baseFee) // block location fields rs[i].BlockHash = hash diff --git a/core/types/receipt_test.go b/core/types/receipt_test.go index f779cd8f4589c..5722eceac13d6 100644 --- a/core/types/receipt_test.go +++ b/core/types/receipt_test.go @@ -137,7 +137,6 @@ var ( GasTipCap: uint256.NewInt(66), GasFeeCap: uint256.NewInt(1066), BlobFeeCap: uint256.NewInt(100066), - BlobHashes: []common.Hash{{}}, }), NewTx(&BlobTx{ To: to7, @@ -147,7 +146,6 @@ var ( GasTipCap: uint256.NewInt(77), GasFeeCap: uint256.NewInt(1077), BlobFeeCap: uint256.NewInt(100077), - BlobHashes: []common.Hash{{}, {}, {}}, }), } @@ -272,8 +270,6 @@ var ( TxHash: txs[5].Hash(), GasUsed: 6, EffectiveGasPrice: big.NewInt(1066), - DataGasUsed: params.BlobTxDataGasPerBlob, - DataGasPrice: big.NewInt(920), BlockHash: blockHash, BlockNumber: blockNumber, TransactionIndex: 5, @@ -287,8 +283,6 @@ var ( TxHash: txs[6].Hash(), GasUsed: 7, EffectiveGasPrice: big.NewInt(1077), - DataGasUsed: 3 * params.BlobTxDataGasPerBlob, - DataGasPrice: big.NewInt(920), BlockHash: blockHash, BlockNumber: blockNumber, TransactionIndex: 6, @@ -309,9 +303,8 @@ func TestDecodeEmptyTypedReceipt(t *testing.T) { func TestDeriveFields(t *testing.T) { // Re-derive receipts. basefee := big.NewInt(1000) - dataGasPrice := big.NewInt(920) derivedReceipts := clearComputedFieldsOnReceipts(receipts) - err := Receipts(derivedReceipts).DeriveFields(params.TestChainConfig, blockHash, blockNumber.Uint64(), blockTime, basefee, dataGasPrice, txs) + err := Receipts(derivedReceipts).DeriveFields(params.TestChainConfig, blockHash, blockNumber.Uint64(), blockTime, basefee, txs) if err != nil { t.Fatalf("DeriveFields(...) = %v, want ", err) } @@ -508,9 +501,6 @@ func clearComputedFieldsOnReceipt(receipt *Receipt) *Receipt { cpy.ContractAddress = common.Address{0xff, 0xff, 0x33} cpy.GasUsed = 0xffffffff cpy.Logs = clearComputedFieldsOnLogs(receipt.Logs) - cpy.EffectiveGasPrice = big.NewInt(0) - cpy.DataGasUsed = 0 - cpy.DataGasPrice = nil return &cpy } diff --git a/light/odr_util.go b/light/odr_util.go index 60894588244f7..8e2047f006885 100644 --- a/light/odr_util.go +++ b/light/odr_util.go @@ -23,7 +23,6 @@ import ( "math/big" "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/consensus/misc/eip4844" "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/txpool" "github.com/ethereum/go-ethereum/core/types" @@ -176,13 +175,7 @@ func GetBlockReceipts(ctx context.Context, odr OdrBackend, hash common.Hash, num genesis := rawdb.ReadCanonicalHash(odr.Database(), 0) config := rawdb.ReadChainConfig(odr.Database(), genesis) - var dataGasPrice *big.Int - excessDataGas := block.ExcessDataGas() - if excessDataGas != nil { - dataGasPrice = eip4844.CalcBlobFee(*excessDataGas) - } - - if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), dataGasPrice, block.Transactions()); err != nil { + if err := receipts.DeriveFields(config, block.Hash(), block.NumberU64(), block.Time(), block.BaseFee(), block.Transactions()); err != nil { return nil, err } rawdb.WriteReceipts(odr.Database(), hash, number, receipts)