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)