github.com/insight-chain/inb-go@v1.1.3-0.20191221022159-da049980ae38/core/types/gen_header_json.go (about) 1 // Code generated by github.com/fjl/gencodec. DO NOT EDIT. 2 3 package types 4 5 import ( 6 "encoding/json" 7 "errors" 8 "math/big" 9 10 "github.com/insight-chain/inb-go/common" 11 "github.com/insight-chain/inb-go/common/hexutil" 12 ) 13 14 var _ = (*headerMarshaling)(nil) 15 16 // MarshalJSON marshals as JSON. 17 func (h Header) MarshalJSON() ([]byte, error) { 18 type Header struct { 19 ParentHash common.Hash `json:"parentHash" gencodec:"required"` 20 UncleHash common.Hash `json:"sha3Uncles" gencodec:"required"` 21 Coinbase common.Address `json:"miner" gencodec:"required"` 22 Root common.Hash `json:"stateRoot" gencodec:"required"` 23 TxHash common.Hash `json:"transactionsRoot" gencodec:"required"` 24 ReceiptHash common.Hash `json:"receiptsRoot" gencodec:"required"` 25 Bloom Bloom `json:"logsBloom" gencodec:"required"` 26 Difficulty *hexutil.Big `json:"difficulty" gencodec:"required"` 27 Number *hexutil.Big `json:"number" gencodec:"required"` 28 ResLimit hexutil.Uint64 `json:"resLimit" gencodec:"required"` 29 ResUsed hexutil.Uint64 `json:"resUsed" gencodec:"required"` 30 Time *hexutil.Big `json:"timestamp" gencodec:"required"` 31 Extra hexutil.Bytes `json:"extraData" gencodec:"required"` 32 MixDigest common.Hash `json:"mixHash"` 33 Nonce BlockNonce `json:"nonce"` 34 DataRoot common.Hash `json:"dataRoot"` 35 Reward string `json:"reward" gencodec:"required"` 36 SpecialConsensus []byte `json:"specialConsensus" gencodec:"required"` 37 VdposContext *VdposContextProto `json:"vdposContext" gencodec:"required"` 38 Hash common.Hash `json:"hash"` 39 } 40 var enc Header 41 enc.ParentHash = h.ParentHash 42 enc.UncleHash = h.UncleHash 43 enc.Coinbase = h.Coinbase 44 enc.Root = h.Root 45 enc.TxHash = h.TxHash 46 enc.ReceiptHash = h.ReceiptHash 47 enc.Bloom = h.Bloom 48 enc.Difficulty = (*hexutil.Big)(h.Difficulty) 49 enc.Number = (*hexutil.Big)(h.Number) 50 enc.ResLimit = hexutil.Uint64(h.ResLimit) 51 enc.ResUsed = hexutil.Uint64(h.ResUsed) 52 enc.Time = (*hexutil.Big)(h.Time) 53 enc.Extra = h.Extra 54 enc.MixDigest = h.MixDigest 55 enc.Nonce = h.Nonce 56 enc.DataRoot = h.DataRoot 57 enc.Reward = h.Reward 58 enc.SpecialConsensus = h.SpecialConsensus 59 enc.VdposContext = h.VdposContext 60 enc.Hash = h.Hash() 61 return json.Marshal(&enc) 62 } 63 64 // UnmarshalJSON unmarshals from JSON. 65 func (h *Header) UnmarshalJSON(input []byte) error { 66 type Header struct { 67 ParentHash *common.Hash `json:"parentHash" gencodec:"required"` 68 UncleHash *common.Hash `json:"sha3Uncles" gencodec:"required"` 69 Coinbase *common.Address `json:"miner" gencodec:"required"` 70 Root *common.Hash `json:"stateRoot" gencodec:"required"` 71 TxHash *common.Hash `json:"transactionsRoot" gencodec:"required"` 72 ReceiptHash *common.Hash `json:"receiptsRoot" gencodec:"required"` 73 Bloom *Bloom `json:"logsBloom" gencodec:"required"` 74 Difficulty *hexutil.Big `json:"difficulty" gencodec:"required"` 75 Number *hexutil.Big `json:"number" gencodec:"required"` 76 ResLimit *hexutil.Uint64 `json:"resLimit" gencodec:"required"` 77 ResUsed *hexutil.Uint64 `json:"resUsed" gencodec:"required"` 78 Time *hexutil.Big `json:"timestamp" gencodec:"required"` 79 Extra *hexutil.Bytes `json:"extraData" gencodec:"required"` 80 MixDigest *common.Hash `json:"mixHash"` 81 Nonce *BlockNonce `json:"nonce"` 82 DataRoot *common.Hash `json:"dataRoot"` 83 Reward *string `json:"reward" gencodec:"required"` 84 SpecialConsensus *[]byte `json:"specialConsensus" gencodec:"required"` 85 VdposContext *VdposContextProto `json:"vdposContext" gencodec:"required"` 86 } 87 var dec Header 88 if err := json.Unmarshal(input, &dec); err != nil { 89 return err 90 } 91 if dec.ParentHash == nil { 92 return errors.New("missing required field 'parentHash' for Header") 93 } 94 h.ParentHash = *dec.ParentHash 95 if dec.UncleHash == nil { 96 return errors.New("missing required field 'sha3Uncles' for Header") 97 } 98 h.UncleHash = *dec.UncleHash 99 if dec.Coinbase == nil { 100 return errors.New("missing required field 'miner' for Header") 101 } 102 h.Coinbase = *dec.Coinbase 103 if dec.Root == nil { 104 return errors.New("missing required field 'stateRoot' for Header") 105 } 106 h.Root = *dec.Root 107 if dec.TxHash == nil { 108 return errors.New("missing required field 'transactionsRoot' for Header") 109 } 110 h.TxHash = *dec.TxHash 111 if dec.ReceiptHash == nil { 112 return errors.New("missing required field 'receiptsRoot' for Header") 113 } 114 h.ReceiptHash = *dec.ReceiptHash 115 if dec.Bloom == nil { 116 return errors.New("missing required field 'logsBloom' for Header") 117 } 118 h.Bloom = *dec.Bloom 119 if dec.Difficulty == nil { 120 return errors.New("missing required field 'difficulty' for Header") 121 } 122 h.Difficulty = (*big.Int)(dec.Difficulty) 123 if dec.Number == nil { 124 return errors.New("missing required field 'number' for Header") 125 } 126 h.Number = (*big.Int)(dec.Number) 127 if dec.ResLimit == nil { 128 return errors.New("missing required field 'resLimit' for Header") 129 } 130 h.ResLimit = uint64(*dec.ResLimit) 131 if dec.ResUsed == nil { 132 return errors.New("missing required field 'resUsed' for Header") 133 } 134 h.ResUsed = uint64(*dec.ResUsed) 135 if dec.Time == nil { 136 return errors.New("missing required field 'timestamp' for Header") 137 } 138 h.Time = (*big.Int)(dec.Time) 139 if dec.Extra == nil { 140 return errors.New("missing required field 'extraData' for Header") 141 } 142 h.Extra = *dec.Extra 143 if dec.MixDigest != nil { 144 h.MixDigest = *dec.MixDigest 145 } 146 if dec.Nonce != nil { 147 h.Nonce = *dec.Nonce 148 } 149 if dec.DataRoot != nil { 150 h.DataRoot = *dec.DataRoot 151 } 152 if dec.Reward == nil { 153 return errors.New("missing required field 'reward' for Header") 154 } 155 h.Reward = *dec.Reward 156 if dec.SpecialConsensus == nil { 157 return errors.New("missing required field 'specialConsensus' for Header") 158 } 159 h.SpecialConsensus = *dec.SpecialConsensus 160 if dec.VdposContext == nil { 161 return errors.New("missing required field 'vdposContext' for Header") 162 } 163 h.VdposContext = dec.VdposContext 164 return nil 165 }