mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 18:32:23 +00:00
omitempty fields from supply tracer output
This commit is contained in:
parent
b12c669a09
commit
3ed1bd816b
4 changed files with 59 additions and 70 deletions
|
|
@ -45,19 +45,19 @@ import (
|
|||
|
||||
type supplyInfoIssuance struct {
|
||||
GenesisAlloc *hexutil.Big `json:"genesisAlloc,omitempty"`
|
||||
Reward *hexutil.Big `json:"reward"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals"`
|
||||
Reward *hexutil.Big `json:"reward,omitempty"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals,omitempty"`
|
||||
}
|
||||
|
||||
type supplyInfoBurn struct {
|
||||
EIP1559 *hexutil.Big `json:"1559"`
|
||||
Blob *hexutil.Big `json:"blob"`
|
||||
Misc *hexutil.Big `json:"misc"`
|
||||
EIP1559 *hexutil.Big `json:"1559,omitempty"`
|
||||
Blob *hexutil.Big `json:"blob,omitempty"`
|
||||
Misc *hexutil.Big `json:"misc,omitempty"`
|
||||
}
|
||||
|
||||
type supplyInfo struct {
|
||||
Issuance *supplyInfoIssuance `json:"issuance"`
|
||||
Burn *supplyInfoBurn `json:"burn"`
|
||||
Issuance *supplyInfoIssuance `json:"issuance,omitempty"`
|
||||
Burn *supplyInfoBurn `json:"burn,omitempty"`
|
||||
|
||||
// Block info
|
||||
Number uint64 `json:"blockNumber"`
|
||||
|
|
@ -89,13 +89,6 @@ func TestSupplyGenesisAlloc(t *testing.T) {
|
|||
expected := supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
GenesisAlloc: (*hexutil.Big)(new(big.Int).Mul(common.Big2, big.NewInt(params.Ether))),
|
||||
Reward: (*hexutil.Big)(common.Big0),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(common.Big0),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Number: 0,
|
||||
Hash: common.HexToHash("0xbcc9466e9fc6a8b56f4b29ca353a421ff8b51a0c1a58ca4743b427605b08f2ca"),
|
||||
|
|
@ -123,13 +116,7 @@ func TestSupplyRewards(t *testing.T) {
|
|||
|
||||
expected := supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(new(big.Int).Mul(common.Big2, big.NewInt(params.Ether))),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(common.Big0),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(common.Big0),
|
||||
Reward: (*hexutil.Big)(new(big.Int).Mul(common.Big2, big.NewInt(params.Ether))),
|
||||
},
|
||||
Number: 1,
|
||||
Hash: common.HexToHash("0xcbb08370505be503dafedc4e96d139ea27aba3cbc580148568b8a307b3f51052"),
|
||||
|
|
@ -193,13 +180,10 @@ func TestSupplyEip1559Burn(t *testing.T) {
|
|||
burn = new(big.Int).Mul(big.NewInt(21000), head.BaseFee)
|
||||
expected = supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(reward),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
Reward: (*hexutil.Big)(reward),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(burn),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Number: 1,
|
||||
Hash: head.Hash(),
|
||||
|
|
@ -238,14 +222,8 @@ func TestSupplyWithdrawals(t *testing.T) {
|
|||
head = chain.CurrentBlock()
|
||||
expected = supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(common.Big0),
|
||||
Withdrawals: (*hexutil.Big)(big.NewInt(1337000000000)),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(common.Big0),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Number: 1,
|
||||
Hash: head.Hash(),
|
||||
ParentHash: head.ParentHash,
|
||||
|
|
@ -338,13 +316,8 @@ func TestSupplySelfdestruct(t *testing.T) {
|
|||
head := preCancunChain.CurrentBlock()
|
||||
// Check live trace output
|
||||
expected := supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(common.Big0),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(big.NewInt(55289500000000)),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(big.NewInt(5000000000)),
|
||||
},
|
||||
Number: 1,
|
||||
|
|
@ -384,14 +357,8 @@ func TestSupplySelfdestruct(t *testing.T) {
|
|||
// Check live trace output
|
||||
head = postCancunChain.CurrentBlock()
|
||||
expected = supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(common.Big0),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(big.NewInt(55289500000000)),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Number: 1,
|
||||
Hash: head.Hash(),
|
||||
|
|
@ -535,13 +502,8 @@ func TestSupplySelfdestructItselfAndRevert(t *testing.T) {
|
|||
block := chain.GetBlockByNumber(1)
|
||||
|
||||
expected := supplyInfo{
|
||||
Issuance: &supplyInfoIssuance{
|
||||
Reward: (*hexutil.Big)(common.Big0),
|
||||
Withdrawals: (*hexutil.Big)(common.Big0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: (*hexutil.Big)(new(big.Int).Mul(block.BaseFee(), big.NewInt(int64(block.GasUsed())))),
|
||||
Blob: (*hexutil.Big)(common.Big0),
|
||||
Misc: (*hexutil.Big)(eth5), // 5ETH burned from contract B
|
||||
},
|
||||
Number: 1,
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ var _ = (*supplyInfoBurnMarshaling)(nil)
|
|||
// MarshalJSON marshals as JSON.
|
||||
func (s supplyInfoBurn) MarshalJSON() ([]byte, error) {
|
||||
type supplyInfoBurn struct {
|
||||
EIP1559 *hexutil.Big `json:"1559"`
|
||||
Blob *hexutil.Big `json:"blob"`
|
||||
Misc *hexutil.Big `json:"misc"`
|
||||
EIP1559 *hexutil.Big `json:"1559,omitempty"`
|
||||
Blob *hexutil.Big `json:"blob,omitempty"`
|
||||
Misc *hexutil.Big `json:"misc,omitempty"`
|
||||
}
|
||||
var enc supplyInfoBurn
|
||||
enc.EIP1559 = (*hexutil.Big)(s.EIP1559)
|
||||
|
|
@ -28,9 +28,9 @@ func (s supplyInfoBurn) MarshalJSON() ([]byte, error) {
|
|||
// UnmarshalJSON unmarshals from JSON.
|
||||
func (s *supplyInfoBurn) UnmarshalJSON(input []byte) error {
|
||||
type supplyInfoBurn struct {
|
||||
EIP1559 *hexutil.Big `json:"1559"`
|
||||
Blob *hexutil.Big `json:"blob"`
|
||||
Misc *hexutil.Big `json:"misc"`
|
||||
EIP1559 *hexutil.Big `json:"1559,omitempty"`
|
||||
Blob *hexutil.Big `json:"blob,omitempty"`
|
||||
Misc *hexutil.Big `json:"misc,omitempty"`
|
||||
}
|
||||
var dec supplyInfoBurn
|
||||
if err := json.Unmarshal(input, &dec); err != nil {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ var _ = (*supplyInfoIssuanceMarshaling)(nil)
|
|||
func (s supplyInfoIssuance) MarshalJSON() ([]byte, error) {
|
||||
type supplyInfoIssuance struct {
|
||||
GenesisAlloc *hexutil.Big `json:"genesisAlloc,omitempty"`
|
||||
Reward *hexutil.Big `json:"reward"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals"`
|
||||
Reward *hexutil.Big `json:"reward,omitempty"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals,omitempty"`
|
||||
}
|
||||
var enc supplyInfoIssuance
|
||||
enc.GenesisAlloc = (*hexutil.Big)(s.GenesisAlloc)
|
||||
|
|
@ -29,8 +29,8 @@ func (s supplyInfoIssuance) MarshalJSON() ([]byte, error) {
|
|||
func (s *supplyInfoIssuance) UnmarshalJSON(input []byte) error {
|
||||
type supplyInfoIssuance struct {
|
||||
GenesisAlloc *hexutil.Big `json:"genesisAlloc,omitempty"`
|
||||
Reward *hexutil.Big `json:"reward"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals"`
|
||||
Reward *hexutil.Big `json:"reward,omitempty"`
|
||||
Withdrawals *hexutil.Big `json:"withdrawals,omitempty"`
|
||||
}
|
||||
var dec supplyInfoIssuance
|
||||
if err := json.Unmarshal(input, &dec); err != nil {
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ func init() {
|
|||
|
||||
type supplyInfoIssuance struct {
|
||||
GenesisAlloc *big.Int `json:"genesisAlloc,omitempty"`
|
||||
Reward *big.Int `json:"reward"`
|
||||
Withdrawals *big.Int `json:"withdrawals"`
|
||||
Reward *big.Int `json:"reward,omitempty"`
|
||||
Withdrawals *big.Int `json:"withdrawals,omitempty"`
|
||||
}
|
||||
|
||||
//go:generate go run github.com/fjl/gencodec -type supplyInfoIssuance -field-override supplyInfoIssuanceMarshaling -out gen_supplyinfoissuance.go
|
||||
|
|
@ -36,9 +36,9 @@ type supplyInfoIssuanceMarshaling struct {
|
|||
}
|
||||
|
||||
type supplyInfoBurn struct {
|
||||
EIP1559 *big.Int `json:"1559"`
|
||||
Blob *big.Int `json:"blob"`
|
||||
Misc *big.Int `json:"misc"`
|
||||
EIP1559 *big.Int `json:"1559,omitempty"`
|
||||
Blob *big.Int `json:"blob,omitempty"`
|
||||
Misc *big.Int `json:"misc,omitempty"`
|
||||
}
|
||||
|
||||
//go:generate go run github.com/fjl/gencodec -type supplyInfoBurn -field-override supplyInfoBurnMarshaling -out gen_supplyinfoburn.go
|
||||
|
|
@ -49,8 +49,8 @@ type supplyInfoBurnMarshaling struct {
|
|||
}
|
||||
|
||||
type supplyInfo struct {
|
||||
Issuance *supplyInfoIssuance `json:"issuance"`
|
||||
Burn *supplyInfoBurn `json:"burn"`
|
||||
Issuance *supplyInfoIssuance `json:"issuance,omitempty"`
|
||||
Burn *supplyInfoBurn `json:"burn,omitempty"`
|
||||
|
||||
// Block info
|
||||
Number uint64 `json:"blockNumber"`
|
||||
|
|
@ -116,9 +116,7 @@ func newSupplyInfo() supplyInfo {
|
|||
Withdrawals: big.NewInt(0),
|
||||
},
|
||||
Burn: &supplyInfoBurn{
|
||||
EIP1559: big.NewInt(0),
|
||||
Blob: big.NewInt(0),
|
||||
Misc: big.NewInt(0),
|
||||
Misc: big.NewInt(0),
|
||||
},
|
||||
|
||||
Number: 0,
|
||||
|
|
@ -141,7 +139,9 @@ func (s *supply) OnBlockStart(ev tracing.BlockEvent) {
|
|||
// Calculate Burn for this block
|
||||
if ev.Block.BaseFee() != nil {
|
||||
burn := new(big.Int).Mul(new(big.Int).SetUint64(ev.Block.GasUsed()), ev.Block.BaseFee())
|
||||
s.delta.Burn.EIP1559.Add(s.delta.Burn.EIP1559, burn)
|
||||
if burn.Sign() != 0 {
|
||||
s.delta.Burn.EIP1559 = burn
|
||||
}
|
||||
}
|
||||
// Blob burnt gas
|
||||
if blobGas := ev.Block.BlobGasUsed(); blobGas != nil && *blobGas > 0 && ev.Block.ExcessBlobGas() != nil {
|
||||
|
|
@ -150,7 +150,7 @@ func (s *supply) OnBlockStart(ev tracing.BlockEvent) {
|
|||
baseFee = eip4844.CalcBlobFee(excess)
|
||||
burn = new(big.Int).Mul(new(big.Int).SetUint64(*blobGas), baseFee)
|
||||
)
|
||||
s.delta.Burn.Blob.Add(s.delta.Burn.Blob, burn)
|
||||
s.delta.Burn.Blob = burn
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -262,7 +262,34 @@ func (s *supply) OnClose() {
|
|||
}
|
||||
|
||||
func (s *supply) write(data any) {
|
||||
out, _ := json.Marshal(data)
|
||||
supply, ok := data.(supplyInfo)
|
||||
if !ok {
|
||||
log.Warn("failed to cast supply tracer data on write to log file")
|
||||
return
|
||||
}
|
||||
|
||||
// Remove empty fields
|
||||
if supply.Issuance.Reward.Sign() == 0 {
|
||||
supply.Issuance.Reward = nil
|
||||
}
|
||||
|
||||
if supply.Issuance.Withdrawals.Sign() == 0 {
|
||||
supply.Issuance.Withdrawals = nil
|
||||
}
|
||||
|
||||
if supply.Issuance.GenesisAlloc == nil && supply.Issuance.Reward == nil && supply.Issuance.Withdrawals == nil {
|
||||
supply.Issuance = nil
|
||||
}
|
||||
|
||||
if supply.Burn.Misc.Sign() == 0 {
|
||||
supply.Burn.Misc = nil
|
||||
}
|
||||
|
||||
if supply.Burn.EIP1559 == nil && supply.Burn.Blob == nil && supply.Burn.Misc == nil {
|
||||
supply.Burn = nil
|
||||
}
|
||||
|
||||
out, _ := json.Marshal(supply)
|
||||
if _, err := s.logger.Write(out); err != nil {
|
||||
log.Warn("failed to write to supply tracer log file", "error", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue