gen_header.go 4.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
// Code generated by github.com/fjl/gencodec. DO NOT EDIT.

package t8ntool

import (
	"encoding/json"
	"errors"
	"math/big"

	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/common/hexutil"
	"github.com/ethereum/go-ethereum/common/math"
	"github.com/ethereum/go-ethereum/core/types"
)

var _ = (*headerMarshaling)(nil)

// MarshalJSON marshals as JSON.
func (h header) MarshalJSON() ([]byte, error) {
	type header struct {
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
		ParentHash      common.Hash           `json:"parentHash"`
		OmmerHash       *common.Hash          `json:"sha3Uncles"`
		Coinbase        *common.Address       `json:"miner"`
		Root            common.Hash           `json:"stateRoot"        gencodec:"required"`
		TxHash          *common.Hash          `json:"transactionsRoot"`
		ReceiptHash     *common.Hash          `json:"receiptsRoot"`
		Bloom           types.Bloom           `json:"logsBloom"`
		Difficulty      *math.HexOrDecimal256 `json:"difficulty"`
		Number          *math.HexOrDecimal256 `json:"number"           gencodec:"required"`
		GasLimit        math.HexOrDecimal64   `json:"gasLimit"         gencodec:"required"`
		GasUsed         math.HexOrDecimal64   `json:"gasUsed"`
		Time            math.HexOrDecimal64   `json:"timestamp"        gencodec:"required"`
		Extra           hexutil.Bytes         `json:"extraData"`
		MixDigest       common.Hash           `json:"mixHash"`
		Nonce           *types.BlockNonce     `json:"nonce"`
		BaseFee         *math.HexOrDecimal256 `json:"baseFeePerGas" rlp:"optional"`
		WithdrawalsHash *common.Hash          `json:"withdrawalsRoot" rlp:"optional"`
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
	}
	var enc header
	enc.ParentHash = h.ParentHash
	enc.OmmerHash = h.OmmerHash
	enc.Coinbase = h.Coinbase
	enc.Root = h.Root
	enc.TxHash = h.TxHash
	enc.ReceiptHash = h.ReceiptHash
	enc.Bloom = h.Bloom
	enc.Difficulty = (*math.HexOrDecimal256)(h.Difficulty)
	enc.Number = (*math.HexOrDecimal256)(h.Number)
	enc.GasLimit = math.HexOrDecimal64(h.GasLimit)
	enc.GasUsed = math.HexOrDecimal64(h.GasUsed)
	enc.Time = math.HexOrDecimal64(h.Time)
	enc.Extra = h.Extra
	enc.MixDigest = h.MixDigest
	enc.Nonce = h.Nonce
	enc.BaseFee = (*math.HexOrDecimal256)(h.BaseFee)
56
	enc.WithdrawalsHash = h.WithdrawalsHash
57 58 59 60 61 62
	return json.Marshal(&enc)
}

// UnmarshalJSON unmarshals from JSON.
func (h *header) UnmarshalJSON(input []byte) error {
	type header struct {
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
		ParentHash      *common.Hash          `json:"parentHash"`
		OmmerHash       *common.Hash          `json:"sha3Uncles"`
		Coinbase        *common.Address       `json:"miner"`
		Root            *common.Hash          `json:"stateRoot"        gencodec:"required"`
		TxHash          *common.Hash          `json:"transactionsRoot"`
		ReceiptHash     *common.Hash          `json:"receiptsRoot"`
		Bloom           *types.Bloom          `json:"logsBloom"`
		Difficulty      *math.HexOrDecimal256 `json:"difficulty"`
		Number          *math.HexOrDecimal256 `json:"number"           gencodec:"required"`
		GasLimit        *math.HexOrDecimal64  `json:"gasLimit"         gencodec:"required"`
		GasUsed         *math.HexOrDecimal64  `json:"gasUsed"`
		Time            *math.HexOrDecimal64  `json:"timestamp"        gencodec:"required"`
		Extra           *hexutil.Bytes        `json:"extraData"`
		MixDigest       *common.Hash          `json:"mixHash"`
		Nonce           *types.BlockNonce     `json:"nonce"`
		BaseFee         *math.HexOrDecimal256 `json:"baseFeePerGas" rlp:"optional"`
		WithdrawalsHash *common.Hash          `json:"withdrawalsRoot" rlp:"optional"`
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
	}
	var dec header
	if err := json.Unmarshal(input, &dec); err != nil {
		return err
	}
	if dec.ParentHash != nil {
		h.ParentHash = *dec.ParentHash
	}
	if dec.OmmerHash != nil {
		h.OmmerHash = dec.OmmerHash
	}
	if dec.Coinbase != nil {
		h.Coinbase = dec.Coinbase
	}
	if dec.Root == nil {
		return errors.New("missing required field 'stateRoot' for header")
	}
	h.Root = *dec.Root
	if dec.TxHash != nil {
		h.TxHash = dec.TxHash
	}
	if dec.ReceiptHash != nil {
		h.ReceiptHash = dec.ReceiptHash
	}
	if dec.Bloom != nil {
		h.Bloom = *dec.Bloom
	}
	if dec.Difficulty != nil {
		h.Difficulty = (*big.Int)(dec.Difficulty)
	}
	if dec.Number == nil {
		return errors.New("missing required field 'number' for header")
	}
	h.Number = (*big.Int)(dec.Number)
	if dec.GasLimit == nil {
		return errors.New("missing required field 'gasLimit' for header")
	}
	h.GasLimit = uint64(*dec.GasLimit)
	if dec.GasUsed != nil {
		h.GasUsed = uint64(*dec.GasUsed)
	}
	if dec.Time == nil {
		return errors.New("missing required field 'timestamp' for header")
	}
	h.Time = uint64(*dec.Time)
	if dec.Extra != nil {
		h.Extra = *dec.Extra
	}
	if dec.MixDigest != nil {
		h.MixDigest = *dec.MixDigest
	}
	if dec.Nonce != nil {
		h.Nonce = dec.Nonce
	}
	if dec.BaseFee != nil {
		h.BaseFee = (*big.Int)(dec.BaseFee)
	}
137 138 139
	if dec.WithdrawalsHash != nil {
		h.WithdrawalsHash = dec.WithdrawalsHash
	}
140 141
	return nil
}