gen_header.go 4.38 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 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
// 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 {
		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"`
	}
	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)
	return json.Marshal(&enc)
}

// UnmarshalJSON unmarshals from JSON.
func (h *header) UnmarshalJSON(input []byte) error {
	type header struct {
		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"`
	}
	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)
	}
	return nil
}