diff options
Diffstat (limited to 'core/gen_genesis.go')
-rw-r--r-- | core/gen_genesis.go | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/core/gen_genesis.go b/core/gen_genesis.go new file mode 100644 index 000000000..b5561ba45 --- /dev/null +++ b/core/gen_genesis.go @@ -0,0 +1,106 @@ +// generated by github.com/fjl/gencodec, do not edit. + +package core + +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/params" +) + +func (g *Genesis) MarshalJSON() ([]byte, error) { + type GenesisJSON struct { + ChainConfig *params.ChainConfig `json:"config" optional:"true"` + Nonce *math.HexOrDecimal64 `json:"nonce" optional:"true"` + Timestamp *math.HexOrDecimal64 `json:"timestamp" optional:"true"` + ParentHash *common.Hash `json:"parentHash" optional:"true"` + ExtraData hexutil.Bytes `json:"extraData" optional:"true"` + GasLimit *math.HexOrDecimal64 `json:"gasLimit"` + Difficulty *math.HexOrDecimal256 `json:"difficulty"` + Mixhash *common.Hash `json:"mixHash" optional:"true"` + Coinbase *common.Address `json:"coinbase" optional:"true"` + Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc"` + } + var enc GenesisJSON + enc.ChainConfig = g.Config + enc.Nonce = (*math.HexOrDecimal64)(&g.Nonce) + enc.Timestamp = (*math.HexOrDecimal64)(&g.Timestamp) + enc.ParentHash = &g.ParentHash + if g.ExtraData != nil { + enc.ExtraData = g.ExtraData + } + enc.GasLimit = (*math.HexOrDecimal64)(&g.GasLimit) + enc.Difficulty = (*math.HexOrDecimal256)(g.Difficulty) + enc.Mixhash = &g.Mixhash + enc.Coinbase = &g.Coinbase + if g.Alloc != nil { + enc.Alloc = make(map[common.UnprefixedAddress]GenesisAccount, len(g.Alloc)) + for k, v := range g.Alloc { + enc.Alloc[common.UnprefixedAddress(k)] = v + } + } + return json.Marshal(&enc) +} + +func (g *Genesis) UnmarshalJSON(input []byte) error { + type GenesisJSON struct { + ChainConfig *params.ChainConfig `json:"config" optional:"true"` + Nonce *math.HexOrDecimal64 `json:"nonce" optional:"true"` + Timestamp *math.HexOrDecimal64 `json:"timestamp" optional:"true"` + ParentHash *common.Hash `json:"parentHash" optional:"true"` + ExtraData hexutil.Bytes `json:"extraData" optional:"true"` + GasLimit *math.HexOrDecimal64 `json:"gasLimit"` + Difficulty *math.HexOrDecimal256 `json:"difficulty"` + Mixhash *common.Hash `json:"mixHash" optional:"true"` + Coinbase *common.Address `json:"coinbase" optional:"true"` + Alloc map[common.UnprefixedAddress]GenesisAccount `json:"alloc"` + } + var dec GenesisJSON + if err := json.Unmarshal(input, &dec); err != nil { + return err + } + var x Genesis + if dec.ChainConfig != nil { + x.Config = dec.ChainConfig + } + if dec.Nonce != nil { + x.Nonce = uint64(*dec.Nonce) + } + if dec.Timestamp != nil { + x.Timestamp = uint64(*dec.Timestamp) + } + if dec.ParentHash != nil { + x.ParentHash = *dec.ParentHash + } + if dec.ExtraData != nil { + x.ExtraData = dec.ExtraData + } + if dec.GasLimit == nil { + return errors.New("missing required field 'gasLimit' for Genesis") + } + x.GasLimit = uint64(*dec.GasLimit) + if dec.Difficulty == nil { + return errors.New("missing required field 'difficulty' for Genesis") + } + x.Difficulty = (*big.Int)(dec.Difficulty) + if dec.Mixhash != nil { + x.Mixhash = *dec.Mixhash + } + if dec.Coinbase != nil { + x.Coinbase = *dec.Coinbase + } + if dec.Alloc == nil { + return errors.New("missing required field 'alloc' for Genesis") + } + x.Alloc = make(GenesisAlloc, len(dec.Alloc)) + for k, v := range dec.Alloc { + x.Alloc[common.Address(k)] = v + } + *g = x + return nil +} |